{"action":"created","comment":{"url":"https://api.github.com/repos/ResearchKit/ShareTheJourney/pulls/comments/32975750","id":32975750,"diff_hunk":"@@ -388,22 +322,372 @@ - (NSArray *)allSetTextBlocks\n     return allSetBlockOfText;\n }\n \n+#pragma mark - Helper Method for Datasubstrate Delegate Methods\n+\n+static NSDate *determineConsentDate(id object)\n+{\n+    NSFileManager *fileManager = [NSFileManager defaultManager];\n+    NSString      *filePath    = [[object applicationDocumentsDirectory] stringByAppendingPathComponent:kDatabaseName];\n+    NSDate        *consentDate = nil;\n+    \n+    if ([fileManager fileExistsAtPath:filePath]) {\n+        NSError      *error      = nil;\n+        NSDictionary *attributes = [fileManager attributesOfItemAtPath:filePath error:&error];\n+        \n+        if (!attributes) {\n+            if (error) {\n+                APCLogError2(error);\n+            }\n+            consentDate = [[NSDate date] startOfDay];\n+        } else {\n+            consentDate = [attributes fileCreationDate];\n+        }\n+    }\n+    return consentDate;\n+}\n \n-/*********************************************************************************/\n #pragma mark - Datasubstrate Delegate Methods\n-/*********************************************************************************/\n+\n - (void) setUpCollectors\n {\n-    //\n-    // Set up location tracker\n-    //\n-    APCCoreLocationTracker * locationTracker = [[APCCoreLocationTracker alloc] initWithIdentifier: @\"locationTracker\"\n-                                                                           deferredUpdatesTimeout: 60.0 * 60.0\n-                                                                            andHomeLocationStatus: APCPassiveLocationTrackingHomeLocationUnavailable];\n+    if (self.dataSubstrate.currentUser.consented)\n+    {\n+        if (!self.passiveDataCollector)\n+        {\n+            self.passiveDataCollector = [[APCPassiveDataCollector alloc] init];\n+        }\n+        \n+        [self configureDisplacementTracker];\n+        [self configureObserverQueries];\n+        [self configureMotionActivityObserver];\n+    }\n+}\n+\n+- (void)configureMotionActivityObserver\n+{\n+    NSString*(^CoreMotionDataSerializer)(id) = ^NSString *(id dataSample)\n+    {\n+        CMMotionActivity* motionActivitySample  = (CMMotionActivity*)dataSample;\n+        NSString* motionActivity                = [CMMotionActivity activityTypeName:motionActivitySample];\n+        NSNumber* motionConfidence              = @(motionActivitySample.confidence);\n+        NSString* stringToWrite                 = [NSString stringWithFormat:@\"%@,%@,%@\\n\",\n+                                                   motionActivitySample.startDate.toStringInISO8601Format,\n+                                                   motionActivity,\n+                                                   motionConfidence];\n+        \n+        return stringToWrite;\n+    };\n+    \n+    NSDate* (^LaunchDate)() = ^\n+    {\n+        APCUser*    user        = ((APCAppDelegate *)[UIApplication sharedApplication].delegate).dataSubstrate.currentUser;\n+        NSDate*     consentDate = nil;\n+        \n+        if (user.consentSignatureDate)\n+        {\n+            consentDate = user.consentSignatureDate;\n+        }\n+        else\n+        {\n+            consentDate = determineConsentDate(self);\n+        }\n+        return consentDate;\n+    };\n+    \n+    APCCoreMotionBackgroundDataCollector *motionCollector = [[APCCoreMotionBackgroundDataCollector alloc] initWithIdentifier:kMotionActivityCollector\n+                                                                                                              dateAnchorName:@\"APCCoreMotionCollectorAnchorName\"\n+                                                                                                            launchDateAnchor:LaunchDate];\n+    \n+    NSArray*            motionColumnNames   = @[@\"startTime\",@\"activityType\",@\"confidence\"];\n+    APCPassiveDataSink* receiver            = [[APCPassiveDataSink alloc] initWithIdentifier:@\"motionActivityCollector\"\n+                                                                                 columnNames:motionColumnNames\n+                                                                          operationQueueName:@\"APCCoreMotion Activity Collector\"\n+                                                                               dataProcessor:CoreMotionDataSerializer\n+                                                                           fileProtectionKey:NSFileProtectionCompleteUntilFirstUserAuthentication];\n+    \n+    [motionCollector setReceiver:receiver];\n+    [motionCollector setDelegate:receiver];\n+    [motionCollector start];\n+    [self.passiveDataCollector addDataSink:motionCollector];\n+}\n+\n+- (void)configureDisplacementTracker\n+{\n+    APCDisplacementTrackingCollector*           locationCollector   = [[APCDisplacementTrackingCollector alloc]\n+                                                                       initWithIdentifier:@\"locationCollector\"\n+                                                                       deferredUpdatesTimeout:60.0 * 60.0];\n+    NSArray*                                    locationColumns     = @[@\"timestamp\",\n+                                                                        @\"distanceFromPreviousLocation\",\n+                                                                        @\"distanceUnit\",\n+                                                                        @\"direction\",\n+                                                                        @\"directionUnit\",\n+                                                                        @\"speed\",\n+                                                                        @\"speedUnit\",\n+                                                                        @\"floor\",\n+                                                                        @\"altitude\",\n+                                                                        @\"altitudeUnit\",\n+                                                                        @\"horizontalAccuracy\",\n+                                                                        @\"horizontalAccuracyUnit\",\n+                                                                        @\"verticalAccuracy\",\n+                                                                        @\"verticalAccuracyUnit\"];\n+    APCPassiveDisplacementTrackingDataUploader* displacementSinker  = [[APCPassiveDisplacementTrackingDataUploader alloc]\n+                                                                       initWithIdentifier:kDisplacementCollector\n+                                                                       columnNames:locationColumns\n+                                                                       operationQueueName:@\"APCDisplacement Tracker Sink\"\n+                                                                       dataProcessor:nil\n+                                                                       fileProtectionKey:NSFileProtectionCompleteUntilFirstUserAuthentication];\n+    [locationCollector setReceiver:displacementSinker];\n+    [locationCollector setDelegate:displacementSinker];\n+    [locationCollector start];\n+    [self.passiveDataCollector addDataSink:locationCollector];\n+}\n+\n+- (void)configureObserverQueries\n+{\n+    NSDate* (^LaunchDate)() = ^\n+    {\n+        APCUser*    user        = ((APCAppDelegate *)[UIApplication sharedApplication].delegate).dataSubstrate.currentUser;\n+        NSDate*     consentDate = nil;\n+        \n+        if (user.consentSignatureDate)\n+        {\n+            consentDate = user.consentSignatureDate;\n+        }\n+        else\n+        {\n+            consentDate = determineConsentDate(self);\n+        }\n+        return consentDate;\n+    };\n+    \n+    NSString *(^determineQuantitySource)(NSString *) = ^(NSString  *source)\n+    {\n+        NSString  *answer = nil;\n+        if (source == nil) {\n+            answer = @\"not available\";\n+        } else if ([UIDevice.currentDevice.name isEqualToString:source] == YES) {\n+            if ([APCDeviceHardware platformString] != nil) {\n+                answer = [APCDeviceHardware platformString];\n+            } else {\n+                answer = @\"iPhone\";    //    theoretically should not happen\n+            }\n+        }\n+        return answer;\n+    };\n+    \n+    NSString*(^QuantityDataSerializer)(id, HKUnit*) = ^NSString*(id dataSample, HKUnit* unit)\n+    {\n+        HKQuantitySample*   qtySample           = (HKQuantitySample *)dataSample;\n+        NSString*           startDateTimeStamp  = [qtySample.startDate toStringInISO8601Format];\n+        NSString*           endDateTimeStamp    = [qtySample.endDate toStringInISO8601Format];\n+        NSString*           healthKitType       = qtySample.quantityType.identifier;\n+        NSNumber*           quantityValue       = @([qtySample.quantity doubleValueForUnit:unit]);\n+        NSString*           quantityUnit        = unit.unitString;\n+        NSString*           sourceIdentifier    = qtySample.source.bundleIdentifier;\n+        NSString*           quantitySource      = qtySample.source.name;\n+        \n+        quantitySource = determineQuantitySource(quantitySource);\n+        \n+        NSString *stringToWrite = [NSString stringWithFormat:@\"%@,%@,%@,%@,%@,%@,%@\\n\",\n+                                   startDateTimeStamp,\n+                                   endDateTimeStamp,\n+                                   healthKitType,\n+                                   quantityValue,\n+                                   quantityUnit,\n+                                   quantitySource,\n+                                   sourceIdentifier];\n+        \n+        return stringToWrite;\n+    };\n+    \n+    NSString*(^WorkoutDataSerializer)(id) = ^(id dataSample)\n+    {\n+        HKWorkout*  sample                      = (HKWorkout*)dataSample;\n+        NSString*   startDateTimeStamp          = [sample.startDate toStringInISO8601Format];\n+        NSString*   endDateTimeStamp            = [sample.endDate toStringInISO8601Format];\n+        NSString*   healthKitType               = sample.sampleType.identifier;\n+        NSString*   activityType                = [HKWorkout apc_workoutActivityTypeStringRepresentation:(int)sample.workoutActivityType];\n+        double      energyConsumedValue         = [sample.totalEnergyBurned doubleValueForUnit:[HKUnit kilocalorieUnit]];\n+        NSString*   energyConsumed              = [NSString stringWithFormat:@\"%f\", energyConsumedValue];\n+        NSString*   energyUnit                  = [HKUnit kilocalorieUnit].description;\n+        double      totalDistanceConsumedValue  = [sample.totalDistance doubleValueForUnit:[HKUnit meterUnit]];\n+        NSString*   totalDistance               = [NSString stringWithFormat:@\"%f\", totalDistanceConsumedValue];\n+        NSString*   distanceUnit                = [HKUnit meterUnit].description;\n+        NSString*   sourceIdentifier            = sample.source.bundleIdentifier;\n+        NSString*   quantitySource              = sample.source.name;\n+        \n+        quantitySource = determineQuantitySource(quantitySource);\n+        \n+        NSError*    error                       = nil;\n+        NSString*   metaData                    = [NSDictionary apc_stringFromDictionary:sample.metadata error:&error];\n+        \n+        if (!metaData)\n+        {\n+            if (error)\n+            {\n+                APCLogError2(error);\n+            }\n+            \n+            metaData = @\"\";\n+        }\n+        \n+        NSString*   metaDataStringified         = [NSString stringWithFormat:@\"\\\"%@\\\"\", metaData];\n+        NSString*   stringToWrite               = [NSString stringWithFormat:@\"%@,%@,%@,%@,%@,%@,%@,%@,%@,%@,%@\\n\",\n+                                                   startDateTimeStamp,\n+                                                   endDateTimeStamp,\n+                                                   healthKitType,\n+                                                   activityType,\n+                                                   totalDistance,\n+                                                   distanceUnit,\n+                                                   energyConsumed,\n+                                                   energyUnit,\n+                                                   quantitySource,\n+                                                   sourceIdentifier,\n+                                                   metaDataStringified];\n+        \n+        return stringToWrite;\n+    };\n     \n-    if (locationTracker != nil)\n+    NSString*(^CategoryDataSerializer)(id) = ^NSString*(id dataSample)\n     {\n-        [self.passiveDataCollector addTracker: locationTracker];\n+        HKCategorySample*   catSample       = (HKCategorySample *)dataSample;\n+        NSString*           stringToWrite   = nil;\n+        \n+        if ([catSample.categoryType.identifier isEqualToString:@\"HKCategoryTypeIdentifierSleepAnalysis\"])","path":"BreastCancer/Startup/APHAppDelegate.m","position":697,"original_position":697,"commit_id":"264f80f7265ac816eaaf431ac7f1ac61f0a0da5e","original_commit_id":"264f80f7265ac816eaaf431ac7f1ac61f0a0da5e","user":{"login":"YuanZhu-apple","id":11466704,"avatar_url":"https://avatars.githubusercontent.com/u/11466704?v=3","gravatar_id":"","url":"https://api.github.com/users/YuanZhu-apple","html_url":"https://github.com/YuanZhu-apple","followers_url":"https://api.github.com/users/YuanZhu-apple/followers","following_url":"https://api.github.com/users/YuanZhu-apple/following{/other_user}","gists_url":"https://api.github.com/users/YuanZhu-apple/gists{/gist_id}","starred_url":"https://api.github.com/users/YuanZhu-apple/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/YuanZhu-apple/subscriptions","organizations_url":"https://api.github.com/users/YuanZhu-apple/orgs","repos_url":"https://api.github.com/users/YuanZhu-apple/repos","events_url":"https://api.github.com/users/YuanZhu-apple/events{/privacy}","received_events_url":"https://api.github.com/users/YuanZhu-apple/received_events","type":"User","site_admin":false},"body":"Use constant `HKCategoryTypeIdentifierSleepAnalysis`","created_at":"2015-06-22T19:52:33Z","updated_at":"2015-06-22T19:52:33Z","html_url":"https://github.com/ResearchKit/ShareTheJourney/pull/3#discussion_r32975750","pull_request_url":"https://api.github.com/repos/ResearchKit/ShareTheJourney/pulls/3","_links":{"self":{"href":"https://api.github.com/repos/ResearchKit/ShareTheJourney/pulls/comments/32975750"},"html":{"href":"https://github.com/ResearchKit/ShareTheJourney/pull/3#discussion_r32975750"},"pull_request":{"href":"https://api.github.com/repos/ResearchKit/ShareTheJourney/pulls/3"}}},"pull_request":{"url":"https://api.github.com/repos/ResearchKit/ShareTheJourney/pulls/3","id":35569991,"html_url":"https://github.com/ResearchKit/ShareTheJourney/pull/3","diff_url":"https://github.com/ResearchKit/ShareTheJourney/pull/3.diff","patch_url":"https://github.com/ResearchKit/ShareTheJourney/pull/3.patch","issue_url":"https://api.github.com/repos/ResearchKit/ShareTheJourney/issues/3","number":3,"state":"open","locked":false,"title":"Updates from shipping apps","user":{"login":"peculiar","id":826077,"avatar_url":"https://avatars.githubusercontent.com/u/826077?v=3","gravatar_id":"","url":"https://api.github.com/users/peculiar","html_url":"https://github.com/peculiar","followers_url":"https://api.github.com/users/peculiar/followers","following_url":"https://api.github.com/users/peculiar/following{/other_user}","gists_url":"https://api.github.com/users/peculiar/gists{/gist_id}","starred_url":"https://api.github.com/users/peculiar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/peculiar/subscriptions","organizations_url":"https://api.github.com/users/peculiar/orgs","repos_url":"https://api.github.com/users/peculiar/repos","events_url":"https://api.github.com/users/peculiar/events{/privacy}","received_events_url":"https://api.github.com/users/peculiar/received_events","type":"User","site_admin":false},"body":"This PR will be updated cone https://github.com/ResearchKit/AppCore/pull/55 is accepted.","created_at":"2015-05-16T11:46:22Z","updated_at":"2015-06-22T19:52:33Z","closed_at":null,"merged_at":null,"merge_commit_sha":"882b9b6edd29cfc6014ee51b34ccdb3a365ec2ef","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/ResearchKit/ShareTheJourney/pulls/3/commits","review_comments_url":"https://api.github.com/repos/ResearchKit/ShareTheJourney/pulls/3/comments","review_comment_url":"https://api.github.com/repos/ResearchKit/ShareTheJourney/pulls/comments{/number}","comments_url":"https://api.github.com/repos/ResearchKit/ShareTheJourney/issues/3/comments","statuses_url":"https://api.github.com/repos/ResearchKit/ShareTheJourney/statuses/264f80f7265ac816eaaf431ac7f1ac61f0a0da5e","head":{"label":"peculiar:master","ref":"master","sha":"264f80f7265ac816eaaf431ac7f1ac61f0a0da5e","user":{"login":"peculiar","id":826077,"avatar_url":"https://avatars.githubusercontent.com/u/826077?v=3","gravatar_id":"","url":"https://api.github.com/users/peculiar","html_url":"https://github.com/peculiar","followers_url":"https://api.github.com/users/peculiar/followers","following_url":"https://api.github.com/users/peculiar/following{/other_user}","gists_url":"https://api.github.com/users/peculiar/gists{/gist_id}","starred_url":"https://api.github.com/users/peculiar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/peculiar/subscriptions","organizations_url":"https://api.github.com/users/peculiar/orgs","repos_url":"https://api.github.com/users/peculiar/repos","events_url":"https://api.github.com/users/peculiar/events{/privacy}","received_events_url":"https://api.github.com/users/peculiar/received_events","type":"User","site_admin":false},"repo":{"id":35587997,"name":"ShareTheJourney","full_name":"peculiar/ShareTheJourney","owner":{"login":"peculiar","id":826077,"avatar_url":"https://avatars.githubusercontent.com/u/826077?v=3","gravatar_id":"","url":"https://api.github.com/users/peculiar","html_url":"https://github.com/peculiar","followers_url":"https://api.github.com/users/peculiar/followers","following_url":"https://api.github.com/users/peculiar/following{/other_user}","gists_url":"https://api.github.com/users/peculiar/gists{/gist_id}","starred_url":"https://api.github.com/users/peculiar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/peculiar/subscriptions","organizations_url":"https://api.github.com/users/peculiar/orgs","repos_url":"https://api.github.com/users/peculiar/repos","events_url":"https://api.github.com/users/peculiar/events{/privacy}","received_events_url":"https://api.github.com/users/peculiar/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/peculiar/ShareTheJourney","description":"ResearchKit app studying Breast Cancer, developed by Sage Bionetworks.","fork":true,"url":"https://api.github.com/repos/peculiar/ShareTheJourney","forks_url":"https://api.github.com/repos/peculiar/ShareTheJourney/forks","keys_url":"https://api.github.com/repos/peculiar/ShareTheJourney/keys{/key_id}","collaborators_url":"https://api.github.com/repos/peculiar/ShareTheJourney/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/peculiar/ShareTheJourney/teams","hooks_url":"https://api.github.com/repos/peculiar/ShareTheJourney/hooks","issue_events_url":"https://api.github.com/repos/peculiar/ShareTheJourney/issues/events{/number}","events_url":"https://api.github.com/repos/peculiar/ShareTheJourney/events","assignees_url":"https://api.github.com/repos/peculiar/ShareTheJourney/assignees{/user}","branches_url":"https://api.github.com/repos/peculiar/ShareTheJourney/branches{/branch}","tags_url":"https://api.github.com/repos/peculiar/ShareTheJourney/tags","blobs_url":"https://api.github.com/repos/peculiar/ShareTheJourney/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/peculiar/ShareTheJourney/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/peculiar/ShareTheJourney/git/refs{/sha}","trees_url":"https://api.github.com/repos/peculiar/ShareTheJourney/git/trees{/sha}","statuses_url":"https://api.github.com/repos/peculiar/ShareTheJourney/statuses/{sha}","languages_url":"https://api.github.com/repos/peculiar/ShareTheJourney/languages","stargazers_url":"https://api.github.com/repos/peculiar/ShareTheJourney/stargazers","contributors_url":"https://api.github.com/repos/peculiar/ShareTheJourney/contributors","subscribers_url":"https://api.github.com/repos/peculiar/ShareTheJourney/subscribers","subscription_url":"https://api.github.com/repos/peculiar/ShareTheJourney/subscription","commits_url":"https://api.github.com/repos/peculiar/ShareTheJourney/commits{/sha}","git_commits_url":"https://api.github.com/repos/peculiar/ShareTheJourney/git/commits{/sha}","comments_url":"https://api.github.com/repos/peculiar/ShareTheJourney/comments{/number}","issue_comment_url":"https://api.github.com/repos/peculiar/ShareTheJourney/issues/comments{/number}","contents_url":"https://api.github.com/repos/peculiar/ShareTheJourney/contents/{+path}","compare_url":"https://api.github.com/repos/peculiar/ShareTheJourney/compare/{base}...{head}","merges_url":"https://api.github.com/repos/peculiar/ShareTheJourney/merges","archive_url":"https://api.github.com/repos/peculiar/ShareTheJourney/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/peculiar/ShareTheJourney/downloads","issues_url":"https://api.github.com/repos/peculiar/ShareTheJourney/issues{/number}","pulls_url":"https://api.github.com/repos/peculiar/ShareTheJourney/pulls{/number}","milestones_url":"https://api.github.com/repos/peculiar/ShareTheJourney/milestones{/number}","notifications_url":"https://api.github.com/repos/peculiar/ShareTheJourney/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/peculiar/ShareTheJourney/labels{/name}","releases_url":"https://api.github.com/repos/peculiar/ShareTheJourney/releases{/id}","created_at":"2015-05-14T03:10:57Z","updated_at":"2015-05-14T03:10:58Z","pushed_at":"2015-06-22T18:57:52Z","git_url":"git://github.com/peculiar/ShareTheJourney.git","ssh_url":"git@github.com:peculiar/ShareTheJourney.git","clone_url":"https://github.com/peculiar/ShareTheJourney.git","svn_url":"https://github.com/peculiar/ShareTheJourney","homepage":"","size":162098,"stargazers_count":0,"watchers_count":0,"language":"Objective-C","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":2,"mirror_url":null,"open_issues_count":0,"forks":2,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"ResearchKit:master","ref":"master","sha":"8c94c114b3b37d19775133be478e0686d63f9a96","user":{"login":"ResearchKit","id":11183179,"avatar_url":"https://avatars.githubusercontent.com/u/11183179?v=3","gravatar_id":"","url":"https://api.github.com/users/ResearchKit","html_url":"https://github.com/ResearchKit","followers_url":"https://api.github.com/users/ResearchKit/followers","following_url":"https://api.github.com/users/ResearchKit/following{/other_user}","gists_url":"https://api.github.com/users/ResearchKit/gists{/gist_id}","starred_url":"https://api.github.com/users/ResearchKit/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ResearchKit/subscriptions","organizations_url":"https://api.github.com/users/ResearchKit/orgs","repos_url":"https://api.github.com/users/ResearchKit/repos","events_url":"https://api.github.com/users/ResearchKit/events{/privacy}","received_events_url":"https://api.github.com/users/ResearchKit/received_events","type":"Organization","site_admin":false},"repo":{"id":32883131,"name":"ShareTheJourney","full_name":"ResearchKit/ShareTheJourney","owner":{"login":"ResearchKit","id":11183179,"avatar_url":"https://avatars.githubusercontent.com/u/11183179?v=3","gravatar_id":"","url":"https://api.github.com/users/ResearchKit","html_url":"https://github.com/ResearchKit","followers_url":"https://api.github.com/users/ResearchKit/followers","following_url":"https://api.github.com/users/ResearchKit/following{/other_user}","gists_url":"https://api.github.com/users/ResearchKit/gists{/gist_id}","starred_url":"https://api.github.com/users/ResearchKit/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ResearchKit/subscriptions","organizations_url":"https://api.github.com/users/ResearchKit/orgs","repos_url":"https://api.github.com/users/ResearchKit/repos","events_url":"https://api.github.com/users/ResearchKit/events{/privacy}","received_events_url":"https://api.github.com/users/ResearchKit/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/ResearchKit/ShareTheJourney","description":"ResearchKit app studying Breast Cancer, developed by Sage Bionetworks.","fork":false,"url":"https://api.github.com/repos/ResearchKit/ShareTheJourney","forks_url":"https://api.github.com/repos/ResearchKit/ShareTheJourney/forks","keys_url":"https://api.github.com/repos/ResearchKit/ShareTheJourney/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ResearchKit/ShareTheJourney/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ResearchKit/ShareTheJourney/teams","hooks_url":"https://api.github.com/repos/ResearchKit/ShareTheJourney/hooks","issue_events_url":"https://api.github.com/repos/ResearchKit/ShareTheJourney/issues/events{/number}","events_url":"https://api.github.com/repos/ResearchKit/ShareTheJourney/events","assignees_url":"https://api.github.com/repos/ResearchKit/ShareTheJourney/assignees{/user}","branches_url":"https://api.github.com/repos/ResearchKit/ShareTheJourney/branches{/branch}","tags_url":"https://api.github.com/repos/ResearchKit/ShareTheJourney/tags","blobs_url":"https://api.github.com/repos/ResearchKit/ShareTheJourney/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ResearchKit/ShareTheJourney/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ResearchKit/ShareTheJourney/git/refs{/sha}","trees_url":"https://api.github.com/repos/ResearchKit/ShareTheJourney/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ResearchKit/ShareTheJourney/statuses/{sha}","languages_url":"https://api.github.com/repos/ResearchKit/ShareTheJourney/languages","stargazers_url":"https://api.github.com/repos/ResearchKit/ShareTheJourney/stargazers","contributors_url":"https://api.github.com/repos/ResearchKit/ShareTheJourney/contributors","subscribers_url":"https://api.github.com/repos/ResearchKit/ShareTheJourney/subscribers","subscription_url":"https://api.github.com/repos/ResearchKit/ShareTheJourney/subscription","commits_url":"https://api.github.com/repos/ResearchKit/ShareTheJourney/commits{/sha}","git_commits_url":"https://api.github.com/repos/ResearchKit/ShareTheJourney/git/commits{/sha}","comments_url":"https://api.github.com/repos/ResearchKit/ShareTheJourney/comments{/number}","issue_comment_url":"https://api.github.com/repos/ResearchKit/ShareTheJourney/issues/comments{/number}","contents_url":"https://api.github.com/repos/ResearchKit/ShareTheJourney/contents/{+path}","compare_url":"https://api.github.com/repos/ResearchKit/ShareTheJourney/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ResearchKit/ShareTheJourney/merges","archive_url":"https://api.github.com/repos/ResearchKit/ShareTheJourney/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ResearchKit/ShareTheJourney/downloads","issues_url":"https://api.github.com/repos/ResearchKit/ShareTheJourney/issues{/number}","pulls_url":"https://api.github.com/repos/ResearchKit/ShareTheJourney/pulls{/number}","milestones_url":"https://api.github.com/repos/ResearchKit/ShareTheJourney/milestones{/number}","notifications_url":"https://api.github.com/repos/ResearchKit/ShareTheJourney/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ResearchKit/ShareTheJourney/labels{/name}","releases_url":"https://api.github.com/repos/ResearchKit/ShareTheJourney/releases{/id}","created_at":"2015-03-25T18:28:20Z","updated_at":"2015-06-15T22:04:19Z","pushed_at":"2015-06-22T18:57:53Z","git_url":"git://github.com/ResearchKit/ShareTheJourney.git","ssh_url":"git@github.com:ResearchKit/ShareTheJourney.git","clone_url":"https://github.com/ResearchKit/ShareTheJourney.git","svn_url":"https://github.com/ResearchKit/ShareTheJourney","homepage":"","size":25358,"stargazers_count":48,"watchers_count":48,"language":"Objective-C","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":25,"mirror_url":null,"open_issues_count":3,"forks":25,"open_issues":3,"watchers":48,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/ResearchKit/ShareTheJourney/pulls/3"},"html":{"href":"https://github.com/ResearchKit/ShareTheJourney/pull/3"},"issue":{"href":"https://api.github.com/repos/ResearchKit/ShareTheJourney/issues/3"},"comments":{"href":"https://api.github.com/repos/ResearchKit/ShareTheJourney/issues/3/comments"},"review_comments":{"href":"https://api.github.com/repos/ResearchKit/ShareTheJourney/pulls/3/comments"},"review_comment":{"href":"https://api.github.com/repos/ResearchKit/ShareTheJourney/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/ResearchKit/ShareTheJourney/pulls/3/commits"},"statuses":{"href":"https://api.github.com/repos/ResearchKit/ShareTheJourney/statuses/264f80f7265ac816eaaf431ac7f1ac61f0a0da5e"}}}}