{"action":"created","comment":{"url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/pulls/comments/23414805","id":23414805,"diff_hunk":"@@ -38,299 +38,333 @@\n \n @implementation SDKeychain\n \n-+ (NSString*)stringForKey:(NSString*)key serviceName:(NSString *)serviceName\n++ (NSString*)stringForKey:(NSString*)key serviceName:(NSString *)serviceName synchronizeViaiCloud:(BOOL)synchronizeViaiCloud accessGroup:(NSString *)accessGroup\n {\n-\tOSStatus status;\n-\n-    NSDictionary *query = [NSDictionary dictionaryWithObjectsAndKeys:(id)kCFBooleanTrue, kSecReturnData,\n-                           kSecClassGenericPassword, kSecClass,\n-                           key, kSecAttrAccount,\n-                           serviceName, kSecAttrService,\n-                           nil];\n+    OSStatus status;\n+    \n+    NSMutableDictionary *query = [NSMutableDictionary dictionaryWithDictionary: @{\n+                                                                                  (__bridge NSString *)kSecClass: (__bridge NSString *)kSecClassGenericPassword,\n+                                                                                  (__bridge id)kSecAttrAccount: key,\n+                                                                                  (__bridge id)kSecAttrService: serviceName,\n+                                                                                  (__bridge id)kSecReturnData: (id) kCFBooleanTrue\n+                                                                                  }];\n+    \n+#if !TARGET_IPHONE_SIMULATOR\n+    if (accessGroup) {\n+        query[(__bridge id)kSecAttrAccessGroup] = [NSString stringWithFormat:@\"%@%@\", [SDKeychain bundleSeedID], accessGroup];\n+    }\n+#endif\n+    \n+    if (synchronizeViaiCloud) {\n+        query[(__bridge id)(kSecAttrSynchronizable)] = @YES;\n+    }\n     \n     CFDataRef stringData = NULL;\n     status = SecItemCopyMatching((__bridge CFDictionaryRef)query, (CFTypeRef*)&stringData);\n-\n-\tif (status) \n+    \n+    if (status)\n         return nil;\n-\t\n+    \n     NSString *string = [[NSString alloc] initWithData:(__bridge id)stringData encoding:NSUTF8StringEncoding];\n     if (stringData)\n         CFRelease(stringData);\n-\n-\treturn string;\t\n+    \n+    return string;\n }\n \n-+ (BOOL)setString:(NSString*)string forKey:(NSString*)key serviceName:(NSString *)serviceName\n++ (BOOL)setString:(NSString*)string forKey:(NSString*)key serviceName:(NSString *)serviceName synchronizeViaiCloud:(BOOL)synchronizeViaiCloud accessGroup:(NSString *)accessGroup\n {\n-\tif (!string)  \n+    NSMutableDictionary *spec = [NSMutableDictionary dictionaryWithDictionary: @{\n+                                                                                 (__bridge NSString *)kSecClass: (__bridge NSString *)kSecClassGenericPassword,\n+                                                                                 (__bridge id)kSecAttrAccount: key,\n+                                                                                 (__bridge id)kSecAttrService: serviceName\n+                                                                                 }];\n+#if !TARGET_IPHONE_SIMULATOR\n+    if (accessGroup) {\n+        spec[(__bridge id)kSecAttrAccessGroup] = [NSString stringWithFormat:@\"%@%@\", [SDKeychain bundleSeedID], accessGroup];\n+    }\n+#endif\n+    \n+    if (synchronizeViaiCloud) {\n+        spec[(__bridge id)(kSecAttrSynchronizable)] = @YES;\n+    }\n+    \n+    if (!string)\n     {\n-\t\t//Need to delete the Key \n-        NSDictionary *spec = [NSDictionary dictionaryWithObjectsAndKeys:(__bridge id)kSecClassGenericPassword, kSecClass, key, kSecAttrAccount, serviceName, kSecAttrService, nil];\n+        //Need to delete the Key\n         return !SecItemDelete((__bridge CFDictionaryRef)spec);\n-    } \n+    }\n     else\n     {\n         NSData *stringData = [string dataUsingEncoding:NSUTF8StringEncoding];\n-        NSDictionary *spec = [NSDictionary dictionaryWithObjectsAndKeys:(__bridge id)kSecClassGenericPassword, kSecClass, key, kSecAttrAccount, serviceName, kSecAttrService, nil];\n         \n         if(!string)\n             return !SecItemDelete((__bridge CFDictionaryRef)spec);\n         else\n-        if ([SDKeychain stringForKey:key serviceName:serviceName])\n-        {\n-            NSDictionary *update = [NSDictionary dictionaryWithObject:stringData forKey:(__bridge id)kSecValueData];\n-            return !SecItemUpdate((__bridge CFDictionaryRef)spec, (__bridge CFDictionaryRef)update);\n-        }\n-        else\n-        {\n-            NSMutableDictionary *data = [NSMutableDictionary dictionaryWithDictionary:spec];\n-            [data setObject:stringData forKey:(__bridge id)kSecValueData];\n-            return !SecItemAdd((__bridge CFDictionaryRef)data, NULL);\n-        }\n+            if ([SDKeychain stringForKey:key serviceName:serviceName synchronizeViaiCloud:synchronizeViaiCloud accessGroup:accessGroup])\n+            {\n+                NSDictionary *update = [NSDictionary dictionaryWithObject:stringData forKey:(__bridge id)kSecValueData];\n+                OSStatus status = SecItemUpdate((__bridge CFDictionaryRef)spec, (__bridge CFDictionaryRef)update);\n+                return !status;\n+            }\n+            else\n+            {\n+                NSMutableDictionary *data = [NSMutableDictionary dictionaryWithDictionary:spec];\n+                [data setObject:stringData forKey:(__bridge id)kSecValueData];\n+                OSStatus status = SecItemAdd((__bridge CFDictionaryRef)data, NULL);\n+                return !status;\n+            }\n     }\n }\n \n-+ (NSString *)getPasswordForUsername:(NSString *)username andServiceName:(NSString *)serviceName error:(NSError **)error\n++ (NSString*)stringForKey:(NSString*)key serviceName:(NSString *)serviceName\n {\n-\tif (!username || !serviceName)\n-\t{\n-\t\tif (error != nil)\n-\t\t\t*error = [NSError errorWithDomain:SDKeychainErrorDomain code:-2000 userInfo:nil];\n-\t\treturn nil;\n-\t}\n-\n-\tif (error != nil)\n-\t\t*error = nil;\n-\n-\t// Set up a query dictionary with the base query attributes: item type (generic), username, and service\n-\n-\tNSArray *keys = [[NSArray alloc] initWithObjects:(__bridge NSString *)kSecClass, kSecAttrAccount, kSecAttrService, nil];\n-\tNSArray *objects = [[NSArray alloc] initWithObjects:(__bridge NSString *)kSecClassGenericPassword, username, serviceName, nil];\n-\n-\tNSMutableDictionary *query = [[NSMutableDictionary alloc] initWithObjects:objects forKeys:keys];\n-\n-\t// First do a query for attributes, in case we already have a Keychain item with no password data set.\n-\t// One likely way such an incorrect item could have come about is due to the previous (incorrect)\n-\t// version of this code (which set the password as a generic attribute instead of password data).\n-\n-\tNSMutableDictionary *attributeQuery = [query mutableCopy];\n-\t[attributeQuery setObject:(id) kCFBooleanTrue forKey:(__bridge id)kSecReturnAttributes];\n-\tCFTypeRef cfResult = NULL;\n-\tOSStatus status = SecItemCopyMatching( (__bridge CFDictionaryRef)attributeQuery, &cfResult);\n-\tif (cfResult)\n-\t\tCFRelease(cfResult);\n-\n-\n-\tif (status != noErr)\n-\t{\n-\t\t// No existing item found--simply return nil for the password\n-\t\tif (error != nil && status != errSecItemNotFound)\n-\t\t{\n-\t\t\t//Only return an error if a real exception happened--not simply for \"not found.\"\n-\t\t\t*error = [NSError errorWithDomain:SDKeychainErrorDomain code:status userInfo:nil];\n-\t\t}\n-\n-\t\treturn nil;\n-\t}\n-\n-\t// We have an existing item, now query for the password data associated with it.\n-\n-\tNSData *resultData = nil;\n-\tNSMutableDictionary *passwordQuery = [query mutableCopy];\n-\t[passwordQuery setObject:(id) kCFBooleanTrue forKey:(__bridge id)kSecReturnData];\n-\n-\tCFTypeRef cfResultData = NULL;\n-\tstatus = SecItemCopyMatching( (__bridge CFDictionaryRef)passwordQuery, &cfResultData );\n-\tresultData = (__bridge NSData*)cfResultData;\n-\n-\n-\tif (status != noErr)\n-\t{\n-\t\tif (status == errSecItemNotFound)\n-\t\t{\n-\t\t\t// We found attributes for the item previously, but no password now, so return a special error.\n-\t\t\t// Users of this API will probably want to detect this error and prompt the user to\n-\t\t\t// re-enter their credentials.  When you attempt to store the re-entered credentials\n-\t\t\t// using storeUsername:andPassword:forServiceName:updateExisting:error\n-\t\t\t// the old, incorrect entry will be deleted and a new one with a properly encrypted\n-\t\t\t// password will be added.\n-\t\t\tif (error != nil)\n-\t\t\t\t*error = [NSError errorWithDomain:SDKeychainErrorDomain code:-1999 userInfo:nil];\n-\t\t}\n-\t\telse\n-\t\t{\n-\t\t\t// Something else went wrong. Simply return the normal Keychain API error code.\n-\t\t\tif (error != nil)\n-\t\t\t\t*error = [NSError errorWithDomain:SDKeychainErrorDomain code:status userInfo:nil];\n-\t\t}\n-\n-\t\treturn nil;\n-\t}\n-\n-\tNSString *password = nil;\n+    return [self stringForKey:key serviceName:serviceName synchronizeViaiCloud:NO accessGroup:nil];\n+}\n \n-\tif (resultData)\n-\t\tpassword = [[NSString alloc] initWithData:resultData encoding:NSUTF8StringEncoding];\n-\telse\n-\t{\n-\t\t// There is an existing item, but we weren't able to get password data for it for some reason,\n-\t\t// Possibly as a result of an item being incorrectly entered by the previous code.\n-\t\t// Set the -1999 error so the code above us can prompt the user again.\n-\t\tif (error != nil)\n-\t\t\t*error = [NSError errorWithDomain:SDKeychainErrorDomain code:-1999 userInfo:nil];\n-\t}\n++ (BOOL)setString:(NSString*)string forKey:(NSString*)key serviceName:(NSString *)serviceName\n+{\n+    return [self setString:string forKey:key serviceName:serviceName synchronizeViaiCloud:NO accessGroup:nil];\n+}\n \n++ (NSString *)getPasswordForUsername:(NSString *)username andServiceName:(NSString *)serviceName synchronizeViaiCloud:(BOOL)synchronizeViaiCloud accessGroup:(NSString *)accessGroup error:(NSError **)error\n+{\n+    if (!username || !serviceName)\n+    {\n+        if (error != nil)\n+            *error = [NSError errorWithDomain:SDKeychainErrorDomain code:-2000 userInfo:nil];\n+        return nil;\n+    }\n+    \n+    if (error != nil)\n+        *error = nil;\n+    \n+    // Set up a query dictionary with the base query attributes: item type (generic), username, and service\n+    NSMutableDictionary *query = [NSMutableDictionary dictionaryWithDictionary: @{\n+                                                                                  (__bridge NSString *)kSecClass: (__bridge NSString *)kSecClassGenericPassword,\n+                                                                                  (__bridge id)kSecAttrAccount: username,\n+                                                                                  (__bridge id)kSecAttrService: serviceName\n+                                                                                  }];\n+    \n+#if !TARGET_IPHONE_SIMULATOR\n+    if (accessGroup) {\n+        query[(__bridge id)kSecAttrAccessGroup] = [NSString stringWithFormat:@\"%@%@\", [SDKeychain bundleSeedID], accessGroup];\n+    }\n+#endif\n+    \n+    if (synchronizeViaiCloud) {\n+        query[(__bridge id)(kSecAttrSynchronizable)] = @YES;\n+    }\n+    \n+    /*\n+     NSArray *keys = [[NSArray alloc] initWithObjects:(__bridge NSString *)kSecClass, kSecAttrAccount, kSecAttrService, nil];\n+     NSArray *objects = [[NSArray alloc] initWithObjects:(__bridge NSString *)kSecClassGenericPassword, username, serviceName, nil];\n+     \n+     NSMutableDictionary *query = [[NSMutableDictionary alloc] initWithObjects:objects forKeys:keys];\n+     */\n+    \n+    // First do a query for attributes, in case we already have a Keychain item with no password data set.\n+    // One likely way such an incorrect item could have come about is due to the previous (incorrect)\n+    // version of this code (which set the password as a generic attribute instead of password data).\n+    \n+    NSMutableDictionary *attributeQuery = [query mutableCopy];\n+    [attributeQuery setObject:(id) kCFBooleanTrue forKey:(__bridge id)kSecReturnAttributes];\n+    CFTypeRef cfResult = NULL;\n+    OSStatus status = SecItemCopyMatching( (__bridge CFDictionaryRef)attributeQuery, &cfResult);\n+    if (cfResult)\n+        CFRelease(cfResult);\n+    \n+    \n+    if (status != noErr)\n+    {\n+        // No existing item found--simply return nil for the password\n+        if (error != nil && status != errSecItemNotFound)\n+        {\n+            //Only return an error if a real exception happened--not simply for \"not found.\"\n+            *error = [NSError errorWithDomain:SDKeychainErrorDomain code:status userInfo:nil];","path":"Source/Security/SDKeychain.m","position":264,"original_position":264,"commit_id":"0259ae6c92e9418be09b4c4465c15f2b3451ea17","original_commit_id":"0259ae6c92e9418be09b4c4465c15f2b3451ea17","user":{"login":"sprynmr","id":32696,"avatar_url":"https://avatars.githubusercontent.com/u/32696?v=3","gravatar_id":"","url":"https://api.github.com/users/sprynmr","html_url":"https://github.com/sprynmr","followers_url":"https://api.github.com/users/sprynmr/followers","following_url":"https://api.github.com/users/sprynmr/following{/other_user}","gists_url":"https://api.github.com/users/sprynmr/gists{/gist_id}","starred_url":"https://api.github.com/users/sprynmr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sprynmr/subscriptions","organizations_url":"https://api.github.com/users/sprynmr/orgs","repos_url":"https://api.github.com/users/sprynmr/repos","events_url":"https://api.github.com/users/sprynmr/events{/privacy}","received_events_url":"https://api.github.com/users/sprynmr/received_events","type":"User","site_admin":false},"body":"Not sure how they are used, but do we want to provide a localizedDescription for any of these errors?","created_at":"2015-01-22T22:10:33Z","updated_at":"2015-01-22T22:10:33Z","html_url":"https://github.com/walmartlabs-samsclub/ios-shared/pull/23#discussion_r23414805","pull_request_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/pulls/23","_links":{"self":{"href":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/pulls/comments/23414805"},"html":{"href":"https://github.com/walmartlabs-samsclub/ios-shared/pull/23#discussion_r23414805"},"pull_request":{"href":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/pulls/23"}}},"pull_request":{"url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/pulls/23","id":27875659,"html_url":"https://github.com/walmartlabs-samsclub/ios-shared/pull/23","diff_url":"https://github.com/walmartlabs-samsclub/ios-shared/pull/23.diff","patch_url":"https://github.com/walmartlabs-samsclub/ios-shared/pull/23.patch","issue_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/issues/23","number":23,"state":"open","locked":false,"title":"Update SDKeychain to support iCloud Keychain","user":{"login":"jamesdterry","id":521335,"avatar_url":"https://avatars.githubusercontent.com/u/521335?v=3","gravatar_id":"","url":"https://api.github.com/users/jamesdterry","html_url":"https://github.com/jamesdterry","followers_url":"https://api.github.com/users/jamesdterry/followers","following_url":"https://api.github.com/users/jamesdterry/following{/other_user}","gists_url":"https://api.github.com/users/jamesdterry/gists{/gist_id}","starred_url":"https://api.github.com/users/jamesdterry/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jamesdterry/subscriptions","organizations_url":"https://api.github.com/users/jamesdterry/orgs","repos_url":"https://api.github.com/users/jamesdterry/repos","events_url":"https://api.github.com/users/jamesdterry/events{/privacy}","received_events_url":"https://api.github.com/users/jamesdterry/received_events","type":"User","site_admin":false},"body":"","created_at":"2015-01-22T20:38:10Z","updated_at":"2015-01-22T22:10:33Z","closed_at":null,"merged_at":null,"merge_commit_sha":"c8f8187d29d1ba6afdfb58e0441db37bc4b70fe1","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/pulls/23/commits","review_comments_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/pulls/23/comments","review_comment_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/pulls/comments/{number}","comments_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/issues/23/comments","statuses_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/statuses/0259ae6c92e9418be09b4c4465c15f2b3451ea17","head":{"label":"walmartlabs-samsclub:iCloudKeychain","ref":"iCloudKeychain","sha":"0259ae6c92e9418be09b4c4465c15f2b3451ea17","user":{"login":"walmartlabs-samsclub","id":3409541,"avatar_url":"https://avatars.githubusercontent.com/u/3409541?v=3","gravatar_id":"","url":"https://api.github.com/users/walmartlabs-samsclub","html_url":"https://github.com/walmartlabs-samsclub","followers_url":"https://api.github.com/users/walmartlabs-samsclub/followers","following_url":"https://api.github.com/users/walmartlabs-samsclub/following{/other_user}","gists_url":"https://api.github.com/users/walmartlabs-samsclub/gists{/gist_id}","starred_url":"https://api.github.com/users/walmartlabs-samsclub/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/walmartlabs-samsclub/subscriptions","organizations_url":"https://api.github.com/users/walmartlabs-samsclub/orgs","repos_url":"https://api.github.com/users/walmartlabs-samsclub/repos","events_url":"https://api.github.com/users/walmartlabs-samsclub/events{/privacy}","received_events_url":"https://api.github.com/users/walmartlabs-samsclub/received_events","type":"Organization","site_admin":false},"repo":{"id":8908098,"name":"ios-shared","full_name":"walmartlabs-samsclub/ios-shared","owner":{"login":"walmartlabs-samsclub","id":3409541,"avatar_url":"https://avatars.githubusercontent.com/u/3409541?v=3","gravatar_id":"","url":"https://api.github.com/users/walmartlabs-samsclub","html_url":"https://github.com/walmartlabs-samsclub","followers_url":"https://api.github.com/users/walmartlabs-samsclub/followers","following_url":"https://api.github.com/users/walmartlabs-samsclub/following{/other_user}","gists_url":"https://api.github.com/users/walmartlabs-samsclub/gists{/gist_id}","starred_url":"https://api.github.com/users/walmartlabs-samsclub/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/walmartlabs-samsclub/subscriptions","organizations_url":"https://api.github.com/users/walmartlabs-samsclub/orgs","repos_url":"https://api.github.com/users/walmartlabs-samsclub/repos","events_url":"https://api.github.com/users/walmartlabs-samsclub/events{/privacy}","received_events_url":"https://api.github.com/users/walmartlabs-samsclub/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/walmartlabs-samsclub/ios-shared","description":"Shared SetDirection code","fork":true,"url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared","forks_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/forks","keys_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/keys{/key_id}","collaborators_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/teams","hooks_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/hooks","issue_events_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/issues/events{/number}","events_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/events","assignees_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/assignees{/user}","branches_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/branches{/branch}","tags_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/tags","blobs_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/git/refs{/sha}","trees_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/git/trees{/sha}","statuses_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/statuses/{sha}","languages_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/languages","stargazers_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/stargazers","contributors_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/contributors","subscribers_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/subscribers","subscription_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/subscription","commits_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/commits{/sha}","git_commits_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/git/commits{/sha}","comments_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/comments{/number}","issue_comment_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/issues/comments/{number}","contents_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/contents/{+path}","compare_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/compare/{base}...{head}","merges_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/merges","archive_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/downloads","issues_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/issues{/number}","pulls_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/pulls{/number}","milestones_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/milestones{/number}","notifications_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/labels{/name}","releases_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/releases{/id}","created_at":"2013-03-20T15:47:59Z","updated_at":"2015-01-20T22:15:19Z","pushed_at":"2015-01-22T20:14:51Z","git_url":"git://github.com/walmartlabs-samsclub/ios-shared.git","ssh_url":"git@github.com:walmartlabs-samsclub/ios-shared.git","clone_url":"https://github.com/walmartlabs-samsclub/ios-shared.git","svn_url":"https://github.com/walmartlabs-samsclub/ios-shared","homepage":"","size":4206,"stargazers_count":0,"watchers_count":0,"language":"Objective-C","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":1,"forks":0,"open_issues":1,"watchers":0,"default_branch":"master"}},"base":{"label":"walmartlabs-samsclub:master","ref":"master","sha":"77dbcd297cac5ca75e930ac3242f680311156c01","user":{"login":"walmartlabs-samsclub","id":3409541,"avatar_url":"https://avatars.githubusercontent.com/u/3409541?v=3","gravatar_id":"","url":"https://api.github.com/users/walmartlabs-samsclub","html_url":"https://github.com/walmartlabs-samsclub","followers_url":"https://api.github.com/users/walmartlabs-samsclub/followers","following_url":"https://api.github.com/users/walmartlabs-samsclub/following{/other_user}","gists_url":"https://api.github.com/users/walmartlabs-samsclub/gists{/gist_id}","starred_url":"https://api.github.com/users/walmartlabs-samsclub/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/walmartlabs-samsclub/subscriptions","organizations_url":"https://api.github.com/users/walmartlabs-samsclub/orgs","repos_url":"https://api.github.com/users/walmartlabs-samsclub/repos","events_url":"https://api.github.com/users/walmartlabs-samsclub/events{/privacy}","received_events_url":"https://api.github.com/users/walmartlabs-samsclub/received_events","type":"Organization","site_admin":false},"repo":{"id":8908098,"name":"ios-shared","full_name":"walmartlabs-samsclub/ios-shared","owner":{"login":"walmartlabs-samsclub","id":3409541,"avatar_url":"https://avatars.githubusercontent.com/u/3409541?v=3","gravatar_id":"","url":"https://api.github.com/users/walmartlabs-samsclub","html_url":"https://github.com/walmartlabs-samsclub","followers_url":"https://api.github.com/users/walmartlabs-samsclub/followers","following_url":"https://api.github.com/users/walmartlabs-samsclub/following{/other_user}","gists_url":"https://api.github.com/users/walmartlabs-samsclub/gists{/gist_id}","starred_url":"https://api.github.com/users/walmartlabs-samsclub/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/walmartlabs-samsclub/subscriptions","organizations_url":"https://api.github.com/users/walmartlabs-samsclub/orgs","repos_url":"https://api.github.com/users/walmartlabs-samsclub/repos","events_url":"https://api.github.com/users/walmartlabs-samsclub/events{/privacy}","received_events_url":"https://api.github.com/users/walmartlabs-samsclub/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/walmartlabs-samsclub/ios-shared","description":"Shared SetDirection code","fork":true,"url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared","forks_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/forks","keys_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/keys{/key_id}","collaborators_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/teams","hooks_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/hooks","issue_events_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/issues/events{/number}","events_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/events","assignees_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/assignees{/user}","branches_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/branches{/branch}","tags_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/tags","blobs_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/git/refs{/sha}","trees_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/git/trees{/sha}","statuses_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/statuses/{sha}","languages_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/languages","stargazers_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/stargazers","contributors_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/contributors","subscribers_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/subscribers","subscription_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/subscription","commits_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/commits{/sha}","git_commits_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/git/commits{/sha}","comments_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/comments{/number}","issue_comment_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/issues/comments/{number}","contents_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/contents/{+path}","compare_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/compare/{base}...{head}","merges_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/merges","archive_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/downloads","issues_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/issues{/number}","pulls_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/pulls{/number}","milestones_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/milestones{/number}","notifications_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/labels{/name}","releases_url":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/releases{/id}","created_at":"2013-03-20T15:47:59Z","updated_at":"2015-01-20T22:15:19Z","pushed_at":"2015-01-22T20:14:51Z","git_url":"git://github.com/walmartlabs-samsclub/ios-shared.git","ssh_url":"git@github.com:walmartlabs-samsclub/ios-shared.git","clone_url":"https://github.com/walmartlabs-samsclub/ios-shared.git","svn_url":"https://github.com/walmartlabs-samsclub/ios-shared","homepage":"","size":4206,"stargazers_count":0,"watchers_count":0,"language":"Objective-C","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":1,"forks":0,"open_issues":1,"watchers":0,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/pulls/23"},"html":{"href":"https://github.com/walmartlabs-samsclub/ios-shared/pull/23"},"issue":{"href":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/issues/23"},"comments":{"href":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/issues/23/comments"},"review_comments":{"href":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/pulls/23/comments"},"review_comment":{"href":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/pulls/comments/{number}"},"commits":{"href":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/pulls/23/commits"},"statuses":{"href":"https://api.github.com/repos/walmartlabs-samsclub/ios-shared/statuses/0259ae6c92e9418be09b4c4465c15f2b3451ea17"}}}}