{"action":"created","comment":{"url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/pulls/comments/76716840","id":76716840,"diff_hunk":"@@ -0,0 +1,289 @@\n+//\n+//  ContentDiscoverer.m\n+//  Branch-TestBed\n+//\n+//  Created by Sojan P.R. on 8/17/16.\n+//  Copyright © 2016 Branch Metrics. All rights reserved.\n+//\n+\n+#import <Foundation/Foundation.h>\n+#import \"ContentDiscoverer.h\"\n+#import \"ContentDiscoveryManifest.h\"\n+#import \"ContentPathProperties.h\"\n+#import \"BNCPreferenceHelper.h\"\n+#import \"BranchConstants.h\"\n+#import <UIKit/UIKit.h>\n+#import <CommonCrypto/CommonDigest.h>\n+\n+@interface ContentDiscoverer ()\n+\n+@property (nonatomic, strong) UIViewController *lastViewController;\n+@property (nonatomic, strong) NSTimer *contentDiscoveryTimer;\n+@property (nonatomic, strong) ContentDiscoveryManifest *cdManifest;\n+@property (nonatomic) NSInteger numOfViewsDiscovered;\n+\n+@end\n+\n+\n+@implementation ContentDiscoverer\n+\n+static ContentDiscoverer *contentViewHandler;\n+static NSInteger const CONTENT_DISCOVERY_INTERVAL = 5;\n+\n+\n++ (ContentDiscoverer *)getInstance:(ContentDiscoveryManifest *)manifest {\n+    if (!contentViewHandler) {\n+        contentViewHandler = [[ContentDiscoverer alloc] init];\n+    }\n+    [contentViewHandler initInstance:manifest];\n+    return contentViewHandler;\n+}\n+\n++ (ContentDiscoverer *)getInstance {\n+    return contentViewHandler;\n+}\n+\n+- (void)initInstance:(ContentDiscoveryManifest *)manifest {\n+    _numOfViewsDiscovered = 0;\n+    _cdManifest = manifest;\n+    \n+}\n+\n+- (void)startContentDiscoveryTask {\n+    _contentDiscoveryTimer = [NSTimer scheduledTimerWithTimeInterval:CONTENT_DISCOVERY_INTERVAL\n+                                                              target:self\n+                                                            selector:@selector(readContentDataIfNeeded)\n+                                                            userInfo:nil\n+                                                             repeats:YES];\n+}\n+\n+- (void)stopContentDiscoveryTask {\n+    _lastViewController = nil;\n+    if (_contentDiscoveryTimer) {\n+        [_contentDiscoveryTimer invalidate];\n+    }\n+}\n+\n+- (void)readContentDataIfNeeded {\n+    if (_numOfViewsDiscovered < _cdManifest.maxViewHistoryLength) {\n+        UIViewController *presentingViewController = [self getActiveViewController];\n+        if (_lastViewController == nil || (_lastViewController.class != presentingViewController.class)) {\n+            _lastViewController = presentingViewController;\n+            [self readContentData];\n+        }\n+    } else {\n+        [self stopContentDiscoveryTask];\n+    }\n+}\n+\n+- (void)readContentData {\n+    UIViewController *viewController = _lastViewController;\n+    if (viewController) {\n+        UIView *rootView = [viewController view];\n+        if ([viewController isKindOfClass:UITableViewController.class]) {\n+            rootView = ((UITableViewController *)viewController).tableView;\n+        } else if ([viewController isKindOfClass:UICollectionViewController.class]) {\n+            rootView = ((UICollectionViewController *)viewController).collectionView;\n+        }\n+        \n+        NSMutableArray *contentDataArray = [[NSMutableArray alloc] init];\n+        NSMutableArray *contentKeysArray = [[NSMutableArray alloc] init];\n+        BOOL isClearText = YES;\n+        \n+        if (rootView) {\n+            ContentPathProperties *pathProperties = [_cdManifest getContentPathProperties:viewController];\n+            // Check for any existing path properties for this ViewController\n+            if (pathProperties) {\n+                isClearText = pathProperties.isClearText;\n+                if (!pathProperties.isSkipContentDiscovery) {\n+                    NSArray *filteredKeys = [pathProperties getFilteredElements];\n+                    if (filteredKeys == nil || filteredKeys.count == 0) {\n+                        [self discoverViewContents:rootView contentData:nil contentKeys:contentKeysArray clearText:isClearText ID:@\"\"];\n+                    } else {\n+                        contentKeysArray = filteredKeys.mutableCopy;\n+                        [self discoverFilteredViewContents:contentDataArray contentKeys:contentKeysArray clearText:isClearText];\n+                    }\n+                }\n+            } else if (_cdManifest.referredLink) { // else discover content if this session is started by a link click\n+                [self discoverViewContents:rootView contentData:nil contentKeys:contentKeysArray clearText:YES ID:@\"\"];\n+            }\n+            if (contentKeysArray && contentKeysArray.count > 0) {\n+                NSMutableDictionary *contentEventObj = [[NSMutableDictionary alloc] init];\n+                [contentEventObj setObject:[NSString stringWithFormat:@\"%f\", [[NSDate date] timeIntervalSince1970]] forKey:BRANCH_TIME_STAMP_KEY];\n+                if (_cdManifest.referredLink) {\n+                    [contentEventObj setObject:_cdManifest.referredLink forKey:BRANCH_REFERRAL_LINK_KEY];\n+                }\n+                \n+                [contentEventObj setObject:[NSString stringWithFormat:@\"/%@\", _lastViewController.class] forKey:BRANCH_VIEW_KEY];\n+                [contentEventObj setObject:!isClearText? @\"true\" : @\"false\" forKey:BRANCH_HASH_MODE_KEY];\n+                [contentEventObj setObject:contentKeysArray forKey:BRANCH_CONTENT_KEYS_KEY];\n+                if (contentDataArray && contentDataArray.count > 0) {\n+                    [contentEventObj setObject:contentDataArray forKey:BRANCH_CONTENT_DATA_KEY];\n+                }\n+                \n+                [[BNCPreferenceHelper preferenceHelper]saveBranchAnalyticsData:contentEventObj];\n+            }\n+        }\n+    }\n+}\n+\n+\n+- (void)discoverViewContents:(UIView *)rootView contentData:(NSMutableArray *)contentDataArray contentKeys:(NSMutableArray *)contentKeysArray clearText:(BOOL)isClearText ID:(NSString *)viewId {\n+    if ([rootView isKindOfClass:UITableView.class] || [rootView isKindOfClass:UICollectionView.class]) {\n+        NSArray *cells = [rootView performSelector:@selector(visibleCells) withObject:nil];\n+        NSInteger cellCnt = -1;\n+        for (UIView *cell in cells) {\n+            cellCnt++;\n+            NSString *format;\n+            if (viewId.length > 0 ) {\n+                format = @\"-%d\";\n+            } else {\n+                format = @\"%d\";\n+            }\n+            NSString *cellViewId = [viewId stringByAppendingFormat:format, cellCnt];\n+            [self discoverViewContents:cell contentData:contentDataArray contentKeys:contentKeysArray clearText:isClearText ID:cellViewId];\n+        }\n+    } else {\n+        NSString *contentData = [self getContentText:rootView];\n+        if (contentData) {\n+            NSString *viewFriendlyName = [NSString stringWithFormat:@\"%@:%@\", [rootView class], viewId];\n+            [contentKeysArray addObject:viewFriendlyName];\n+            if (contentDataArray) {\n+                [self addFormatedContentData:contentDataArray withText:contentData clearText:isClearText];\n+            }\n+        }\n+        NSArray *subViews = [rootView subviews];\n+        if (subViews.count > 0) {\n+            NSInteger childCount = -1;\n+            for (UIView *view in subViews) {\n+                childCount++;\n+                NSString *subViewId = [viewId stringByAppendingFormat:@\"-%ld\", (long)childCount];\n+                [self discoverViewContents:view contentData:contentDataArray contentKeys:contentKeysArray clearText:isClearText ID:subViewId];\n+            }\n+        }\n+    }\n+}\n+\n+\n+- (void)discoverFilteredViewContents:(NSMutableArray *)contentDataArray contentKeys:(NSMutableArray *)contentKeysArray clearText:(BOOL)isClearText {\n+    for (NSString *contentKey in contentKeysArray) {\n+        NSString *contentData = [self getViewText:contentKey forController:_lastViewController];\n+        if (contentData == nil) {\n+            contentData = @\"\";\n+        }\n+        if (contentDataArray) {\n+            [self addFormatedContentData:contentDataArray withText:contentData clearText:isClearText];\n+        }\n+    }\n+}\n+\n+\n+- (NSString *)getViewText:(NSString *)viewId forController:(UIViewController *)viewController {\n+    NSString *viewTxt = @\"\";\n+    if (viewController) {\n+        UIView *rootView = [viewController view];\n+        NSArray *viewIDsplitArray = [viewId componentsSeparatedByString:@\":\"];\n+        if (viewIDsplitArray.count > 0) {\n+            viewId = [[viewId componentsSeparatedByString:@\":\"] objectAtIndex:1];\n+        }\n+        NSArray *viewIds = [viewId componentsSeparatedByString:@\"-\"];\n+        BOOL foundView = YES;\n+        for (NSString *subViewIdStr in viewIds) {\n+            NSInteger subviewId = [subViewIdStr intValue];\n+            if ([rootView isKindOfClass:UITableView.class] || [rootView isKindOfClass:UICollectionView.class]) {\n+                NSArray *cells = [rootView performSelector:@selector(visibleCells) withObject:nil];\n+                if (cells.count > subviewId) {\n+                    rootView = [cells objectAtIndex:subviewId];\n+                } else {\n+                    foundView = NO;\n+                    break;\n+                }\n+            } else {\n+                if ([rootView subviews].count > subviewId) {\n+                    rootView = [[rootView subviews] objectAtIndex:subviewId];\n+                } else {\n+                    foundView = NO;\n+                    break;\n+                }\n+            }\n+        }\n+        if (foundView) {\n+            NSString *contentVal = [self getContentText:rootView];\n+            if (contentVal) {\n+                viewTxt = contentVal;\n+            }\n+        }\n+    }\n+    return viewTxt;\n+}\n+\n+- (UIViewController *)getActiveViewController {\n+    UIViewController *rootViewController = [UIApplication sharedApplication].keyWindow.rootViewController;\n+    return [self getActiveViewController:rootViewController];\n+    \n+}\n+\n+- (UIViewController *)getActiveViewController:(UIViewController *)rootViewController {\n+    UIViewController *activeController;\n+    if ([rootViewController isKindOfClass:[UINavigationController class]]) {\n+        activeController = ((UINavigationController *)rootViewController).topViewController;\n+    } else if ([rootViewController isKindOfClass:[UITabBarController class]]) {\n+        activeController = ((UITabBarController *)rootViewController).selectedViewController;\n+    } else {\n+        activeController = rootViewController;\n+    }\n+    return activeController;\n+}\n+\n+- (void)addFormatedContentData:(NSMutableArray *)contentDataArray withText:(NSString *)contentData clearText:(BOOL)isClearText {\n+    if (contentData && contentData.length > _cdManifest.maxTextLen) {\n+        contentData = [contentData substringToIndex:_cdManifest.maxTextLen];\n+    }\n+    if (!isClearText) {\n+        contentData = [self hashContent:contentData];\n+    }\n+    [contentDataArray addObject:contentData];\n+}\n+\n+- (NSString*)hashContent:(NSString *)content {","path":"Branch-SDK/Branch-SDK/ContentDiscoverer.m","position":248,"original_position":248,"commit_id":"5437977092c2b2fb366fe8a828f2472720676cd8","original_commit_id":"5437977092c2b2fb366fe8a828f2472720676cd8","user":{"login":"ahmednawar","id":16910208,"avatar_url":"https://avatars.githubusercontent.com/u/16910208?v=3","gravatar_id":"","url":"https://api.github.com/users/ahmednawar","html_url":"https://github.com/ahmednawar","followers_url":"https://api.github.com/users/ahmednawar/followers","following_url":"https://api.github.com/users/ahmednawar/following{/other_user}","gists_url":"https://api.github.com/users/ahmednawar/gists{/gist_id}","starred_url":"https://api.github.com/users/ahmednawar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ahmednawar/subscriptions","organizations_url":"https://api.github.com/users/ahmednawar/orgs","repos_url":"https://api.github.com/users/ahmednawar/repos","events_url":"https://api.github.com/users/ahmednawar/events{/privacy}","received_events_url":"https://api.github.com/users/ahmednawar/received_events","type":"User","site_admin":false},"body":"space before the `*` in the return type\r\nmight be a good candidate to add to the encoding utils class","created_at":"2016-08-30T01:16:25Z","updated_at":"2016-08-30T01:16:25Z","html_url":"https://github.com/BranchMetrics/ios-branch-deep-linking/pull/416#discussion_r76716840","pull_request_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/pulls/416","_links":{"self":{"href":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/pulls/comments/76716840"},"html":{"href":"https://github.com/BranchMetrics/ios-branch-deep-linking/pull/416#discussion_r76716840"},"pull_request":{"href":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/pulls/416"}}},"pull_request":{"url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/pulls/416","id":83191404,"html_url":"https://github.com/BranchMetrics/ios-branch-deep-linking/pull/416","diff_url":"https://github.com/BranchMetrics/ios-branch-deep-linking/pull/416.diff","patch_url":"https://github.com/BranchMetrics/ios-branch-deep-linking/pull/416.patch","issue_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/issues/416","number":416,"state":"open","locked":false,"title":"Branch Content Discovery ","user":{"login":"sojanpr","id":7651572,"avatar_url":"https://avatars.githubusercontent.com/u/7651572?v=3","gravatar_id":"","url":"https://api.github.com/users/sojanpr","html_url":"https://github.com/sojanpr","followers_url":"https://api.github.com/users/sojanpr/followers","following_url":"https://api.github.com/users/sojanpr/following{/other_user}","gists_url":"https://api.github.com/users/sojanpr/gists{/gist_id}","starred_url":"https://api.github.com/users/sojanpr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sojanpr/subscriptions","organizations_url":"https://api.github.com/users/sojanpr/orgs","repos_url":"https://api.github.com/users/sojanpr/repos","events_url":"https://api.github.com/users/sojanpr/events{/privacy}","received_events_url":"https://api.github.com/users/sojanpr/received_events","type":"User","site_admin":false},"body":"Branch Content Discovery implementation for next step content analytics.\n\n@aaustin @ahmednawar ","created_at":"2016-08-30T00:40:42Z","updated_at":"2016-08-30T01:16:25Z","closed_at":null,"merged_at":null,"merge_commit_sha":"a6f6afb501523c7974c6aab107aabb1c45d4e332","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/pulls/416/commits","review_comments_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/pulls/416/comments","review_comment_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/pulls/comments{/number}","comments_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/issues/416/comments","statuses_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/statuses/5437977092c2b2fb366fe8a828f2472720676cd8","head":{"label":"BranchMetrics:Content-Discover","ref":"Content-Discover","sha":"5437977092c2b2fb366fe8a828f2472720676cd8","user":{"login":"BranchMetrics","id":7772941,"avatar_url":"https://avatars.githubusercontent.com/u/7772941?v=3","gravatar_id":"","url":"https://api.github.com/users/BranchMetrics","html_url":"https://github.com/BranchMetrics","followers_url":"https://api.github.com/users/BranchMetrics/followers","following_url":"https://api.github.com/users/BranchMetrics/following{/other_user}","gists_url":"https://api.github.com/users/BranchMetrics/gists{/gist_id}","starred_url":"https://api.github.com/users/BranchMetrics/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/BranchMetrics/subscriptions","organizations_url":"https://api.github.com/users/BranchMetrics/orgs","repos_url":"https://api.github.com/users/BranchMetrics/repos","events_url":"https://api.github.com/users/BranchMetrics/events{/privacy}","received_events_url":"https://api.github.com/users/BranchMetrics/received_events","type":"Organization","site_admin":false},"repo":{"id":20539166,"name":"ios-branch-deep-linking","full_name":"BranchMetrics/ios-branch-deep-linking","owner":{"login":"BranchMetrics","id":7772941,"avatar_url":"https://avatars.githubusercontent.com/u/7772941?v=3","gravatar_id":"","url":"https://api.github.com/users/BranchMetrics","html_url":"https://github.com/BranchMetrics","followers_url":"https://api.github.com/users/BranchMetrics/followers","following_url":"https://api.github.com/users/BranchMetrics/following{/other_user}","gists_url":"https://api.github.com/users/BranchMetrics/gists{/gist_id}","starred_url":"https://api.github.com/users/BranchMetrics/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/BranchMetrics/subscriptions","organizations_url":"https://api.github.com/users/BranchMetrics/orgs","repos_url":"https://api.github.com/users/BranchMetrics/repos","events_url":"https://api.github.com/users/BranchMetrics/events{/privacy}","received_events_url":"https://api.github.com/users/BranchMetrics/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/BranchMetrics/ios-branch-deep-linking","description":"The Branch Metrics iOS SDK for deferred and contextual mobile deep linking. Branch helps mobile apps grow with deep links / deeplinks that power referral systems, sharing links and invites with full attribution and analytics.","fork":false,"url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking","forks_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/forks","keys_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/keys{/key_id}","collaborators_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/teams","hooks_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/hooks","issue_events_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/issues/events{/number}","events_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/events","assignees_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/assignees{/user}","branches_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/branches{/branch}","tags_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/tags","blobs_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/git/refs{/sha}","trees_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/git/trees{/sha}","statuses_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/statuses/{sha}","languages_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/languages","stargazers_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/stargazers","contributors_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/contributors","subscribers_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/subscribers","subscription_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/subscription","commits_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/commits{/sha}","git_commits_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/git/commits{/sha}","comments_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/comments{/number}","issue_comment_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/issues/comments{/number}","contents_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/contents/{+path}","compare_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/compare/{base}...{head}","merges_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/merges","archive_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/downloads","issues_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/issues{/number}","pulls_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/pulls{/number}","milestones_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/milestones{/number}","notifications_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/labels{/name}","releases_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/releases{/id}","deployments_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/deployments","created_at":"2014-06-05T19:56:21Z","updated_at":"2016-08-28T15:12:11Z","pushed_at":"2016-08-30T00:40:42Z","git_url":"git://github.com/BranchMetrics/ios-branch-deep-linking.git","ssh_url":"git@github.com:BranchMetrics/ios-branch-deep-linking.git","clone_url":"https://github.com/BranchMetrics/ios-branch-deep-linking.git","svn_url":"https://github.com/BranchMetrics/ios-branch-deep-linking","homepage":"https://dev.branch.io/references/ios_sdk/","size":141505,"stargazers_count":207,"watchers_count":207,"language":"Objective-C","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":78,"mirror_url":null,"open_issues_count":10,"forks":78,"open_issues":10,"watchers":207,"default_branch":"master"}},"base":{"label":"BranchMetrics:master","ref":"master","sha":"f4bc16331c2d7dbe6014eba064d289db0517c115","user":{"login":"BranchMetrics","id":7772941,"avatar_url":"https://avatars.githubusercontent.com/u/7772941?v=3","gravatar_id":"","url":"https://api.github.com/users/BranchMetrics","html_url":"https://github.com/BranchMetrics","followers_url":"https://api.github.com/users/BranchMetrics/followers","following_url":"https://api.github.com/users/BranchMetrics/following{/other_user}","gists_url":"https://api.github.com/users/BranchMetrics/gists{/gist_id}","starred_url":"https://api.github.com/users/BranchMetrics/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/BranchMetrics/subscriptions","organizations_url":"https://api.github.com/users/BranchMetrics/orgs","repos_url":"https://api.github.com/users/BranchMetrics/repos","events_url":"https://api.github.com/users/BranchMetrics/events{/privacy}","received_events_url":"https://api.github.com/users/BranchMetrics/received_events","type":"Organization","site_admin":false},"repo":{"id":20539166,"name":"ios-branch-deep-linking","full_name":"BranchMetrics/ios-branch-deep-linking","owner":{"login":"BranchMetrics","id":7772941,"avatar_url":"https://avatars.githubusercontent.com/u/7772941?v=3","gravatar_id":"","url":"https://api.github.com/users/BranchMetrics","html_url":"https://github.com/BranchMetrics","followers_url":"https://api.github.com/users/BranchMetrics/followers","following_url":"https://api.github.com/users/BranchMetrics/following{/other_user}","gists_url":"https://api.github.com/users/BranchMetrics/gists{/gist_id}","starred_url":"https://api.github.com/users/BranchMetrics/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/BranchMetrics/subscriptions","organizations_url":"https://api.github.com/users/BranchMetrics/orgs","repos_url":"https://api.github.com/users/BranchMetrics/repos","events_url":"https://api.github.com/users/BranchMetrics/events{/privacy}","received_events_url":"https://api.github.com/users/BranchMetrics/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/BranchMetrics/ios-branch-deep-linking","description":"The Branch Metrics iOS SDK for deferred and contextual mobile deep linking. Branch helps mobile apps grow with deep links / deeplinks that power referral systems, sharing links and invites with full attribution and analytics.","fork":false,"url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking","forks_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/forks","keys_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/keys{/key_id}","collaborators_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/teams","hooks_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/hooks","issue_events_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/issues/events{/number}","events_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/events","assignees_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/assignees{/user}","branches_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/branches{/branch}","tags_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/tags","blobs_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/git/refs{/sha}","trees_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/git/trees{/sha}","statuses_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/statuses/{sha}","languages_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/languages","stargazers_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/stargazers","contributors_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/contributors","subscribers_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/subscribers","subscription_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/subscription","commits_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/commits{/sha}","git_commits_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/git/commits{/sha}","comments_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/comments{/number}","issue_comment_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/issues/comments{/number}","contents_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/contents/{+path}","compare_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/compare/{base}...{head}","merges_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/merges","archive_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/downloads","issues_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/issues{/number}","pulls_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/pulls{/number}","milestones_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/milestones{/number}","notifications_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/labels{/name}","releases_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/releases{/id}","deployments_url":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/deployments","created_at":"2014-06-05T19:56:21Z","updated_at":"2016-08-28T15:12:11Z","pushed_at":"2016-08-30T00:40:42Z","git_url":"git://github.com/BranchMetrics/ios-branch-deep-linking.git","ssh_url":"git@github.com:BranchMetrics/ios-branch-deep-linking.git","clone_url":"https://github.com/BranchMetrics/ios-branch-deep-linking.git","svn_url":"https://github.com/BranchMetrics/ios-branch-deep-linking","homepage":"https://dev.branch.io/references/ios_sdk/","size":141505,"stargazers_count":207,"watchers_count":207,"language":"Objective-C","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":78,"mirror_url":null,"open_issues_count":10,"forks":78,"open_issues":10,"watchers":207,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/pulls/416"},"html":{"href":"https://github.com/BranchMetrics/ios-branch-deep-linking/pull/416"},"issue":{"href":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/issues/416"},"comments":{"href":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/issues/416/comments"},"review_comments":{"href":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/pulls/416/comments"},"review_comment":{"href":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/pulls/416/commits"},"statuses":{"href":"https://api.github.com/repos/BranchMetrics/ios-branch-deep-linking/statuses/5437977092c2b2fb366fe8a828f2472720676cd8"}}}}
{"actor":{"display_login":"ahmednawar"}}