{"action":"created","comment":{"url":"https://api.github.com/repos/facebook/AsyncDisplayKit/pulls/comments/46935984","id":46935984,"diff_hunk":"@@ -0,0 +1,210 @@\n+/* Copyright (c) 2014-present, Facebook, Inc.\n+ * All rights reserved.\n+ *\n+ * This source code is licensed under the BSD-style license found in the\n+ * LICENSE file in the root directory of this source tree. An additional grant\n+ * of patent rights can be found in the PATENTS file in the same directory.\n+ */\n+\n+#import \"ASMapNode.h\"\n+#import <AsyncDisplayKit/ASInsetLayoutSpec.h>\n+#import <AsyncDisplayKit/ASCenterLayoutSpec.h>\n+#import <AsyncDisplayKit/ASThread.h>\n+\n+@interface ASMapNode()\n+{\n+  ASDN::RecursiveMutex _propertyLock;\n+  MKMapSnapshotter *_snapshotter;\n+  MKMapSnapshotOptions *_options;\n+  NSArray *_annotations;\n+  ASDisplayNode *_mapNode;\n+  CLLocationCoordinate2D _centerCoordinateOfMap;\n+}\n+@end\n+\n+@implementation ASMapNode\n+\n+@synthesize liveMap = _liveMap;\n+@synthesize needsMapReloadOnBoundsChange = _needsMapReloadOnBoundsChange;\n+@synthesize mapDelegate = _mapDelegate;\n+\n+- (instancetype)initWithCoordinate:(CLLocationCoordinate2D)coordinate\n+{\n+  if (!(self = [super init])) {\n+    return nil;\n+  }\n+  self.backgroundColor = ASDisplayNodeDefaultPlaceholderColor();\n+  self.clipsToBounds = YES;\n+\n+  _needsMapReloadOnBoundsChange = YES;\n+  _liveMap = NO;\n+  _centerCoordinateOfMap = kCLLocationCoordinate2DInvalid;\n+\n+  _options = [[MKMapSnapshotOptions alloc] init];\n+  _options.region = MKCoordinateRegionMakeWithDistance(coordinate, 1000, 1000);;\n+  \n+  return self;\n+}\n+\n+- (void)setAnnotations:(NSArray *)annotations\n+{\n+  ASDN::MutexLocker l(_propertyLock);\n+  _annotations = [annotations copy];\n+  if (annotations.count != _annotations.count) {\n+    // Redraw\n+    [self setNeedsDisplay];\n+  }\n+}\n+\n+- (void)setUpSnapshotter\n+{\n+  if (!_snapshotter) {\n+    ASDisplayNodeAssert(!CGSizeEqualToSize(CGSizeZero, self.calculatedSize), @\"self.calculatedSize can not be zero. Make sure that you are setting a preferredFrameSize or wrapping ASMapNode in a ASRatioLayoutSpec or similar.\");\n+      _options.size = self.calculatedSize;\n+      _snapshotter = [[MKMapSnapshotter alloc] initWithOptions:_options];\n+  }\n+}\n+\n+- (BOOL)isLiveMap\n+{\n+  ASDN::MutexLocker l(_propertyLock);\n+  return _liveMap;\n+}\n+\n+- (void)setLiveMap:(BOOL)liveMap\n+{\n+  ASDN::MutexLocker l(_propertyLock);\n+  if (liveMap == _liveMap) {\n+    return;\n+  }\n+  _liveMap = liveMap;\n+  liveMap ? [self addLiveMap] : [self removeLiveMap];\n+}\n+\n+\n+- (BOOL)needsMapReloadOnBoundsChange\n+{\n+  ASDN::MutexLocker l(_propertyLock);\n+  return _needsMapReloadOnBoundsChange;\n+}\n+\n+- (void)setNeedsMapReloadOnBoundsChange:(BOOL)needsMapReloadOnBoundsChange\n+{\n+  ASDN::MutexLocker l(_propertyLock);\n+  _needsMapReloadOnBoundsChange = needsMapReloadOnBoundsChange;\n+}\n+\n+- (void)fetchData\n+{\n+  [super fetchData];\n+  if (_liveMap && !_mapNode) {\n+    [self addLiveMap];\n+  }\n+  else {\n+    [self setUpSnapshotter];\n+    [self takeSnapshot];\n+  }\n+}\n+\n+- (void)clearFetchedData\n+{\n+  [super clearFetchedData];\n+  [self removeLiveMap];\n+}\n+\n+- (void)takeSnapshot\n+{\n+  if (!_snapshotter.isLoading) {\n+    [_snapshotter startWithCompletionHandler:^(MKMapSnapshot *snapshot, NSError *error) {\n+      if (!error) {\n+        UIImage *image = snapshot.image;\n+        CGRect finalImageRect = CGRectMake(0, 0, image.size.width, image.size.height);\n+        \n+        UIGraphicsBeginImageContextWithOptions(image.size, YES, image.scale);\n+        [image drawAtPoint:CGPointMake(0, 0)];\n+        \n+        if (_annotations.count > 0 ) {\n+          // Get a standard annotation view pin. Future implementations should use a custom annotation image property.\n+          MKAnnotationView *pin = [[MKPinAnnotationView alloc] initWithAnnotation:nil reuseIdentifier:@\"\"];\n+          UIImage *pinImage = pin.image;\n+          for (id<MKAnnotation>annotation in _annotations)\n+          {\n+            CGPoint point = [snapshot pointForCoordinate:annotation.coordinate];\n+            if (CGRectContainsPoint(finalImageRect, point))\n+            {\n+              CGPoint pinCenterOffset = pin.centerOffset;\n+              point.x -= pin.bounds.size.width / 2.0;\n+              point.y -= pin.bounds.size.height / 2.0;\n+              point.x += pinCenterOffset.x;\n+              point.y += pinCenterOffset.y;\n+              [pinImage drawAtPoint:point];\n+            }\n+          }\n+        }\n+        \n+        UIImage *finalImage = UIGraphicsGetImageFromCurrentImageContext();\n+        UIGraphicsEndImageContext();\n+        self.image = finalImage;\n+      }\n+    }];\n+  }\n+}\n+\n+- (void)resetSnapshotter\n+{\n+  if (!_snapshotter.isLoading) {\n+    _options.size = self.calculatedSize;\n+    _snapshotter = [[MKMapSnapshotter alloc] initWithOptions:_options];\n+  }\n+}\n+\n+#pragma mark - Action\n+- (void)addLiveMap\n+{\n+  if (self.isNodeLoaded && !_mapNode) {","path":"AsyncDisplayKit/ASMapNode.mm","position":164,"original_position":164,"commit_id":"e1b50ce77ac29fcf963576800e8271a7356a7d02","original_commit_id":"e1b50ce77ac29fcf963576800e8271a7356a7d02","user":{"login":"aaronschubert0","id":9281756,"avatar_url":"https://avatars.githubusercontent.com/u/9281756?v=3","gravatar_id":"","url":"https://api.github.com/users/aaronschubert0","html_url":"https://github.com/aaronschubert0","followers_url":"https://api.github.com/users/aaronschubert0/followers","following_url":"https://api.github.com/users/aaronschubert0/following{/other_user}","gists_url":"https://api.github.com/users/aaronschubert0/gists{/gist_id}","starred_url":"https://api.github.com/users/aaronschubert0/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aaronschubert0/subscriptions","organizations_url":"https://api.github.com/users/aaronschubert0/orgs","repos_url":"https://api.github.com/users/aaronschubert0/repos","events_url":"https://api.github.com/users/aaronschubert0/events{/privacy}","received_events_url":"https://api.github.com/users/aaronschubert0/received_events","type":"User","site_admin":false},"body":"@appleguy \r\n- It doesn't work to set isLiveMap before the node is loaded since it's protected by the if condition checking if the node is loaded. I think to implement this behaviour we would have to implement -didLoad and check if isLiveMap = YES then call -addLiveMap. Having thought about this, I think we should support this functionality since otherwise there isn't any other way to start of with a live map. The problem is that since ASMapNode inherits from ASControlNode (indirectly) then it doesn't respond to touches until a target/action is added, so I need to set `self.userInteractionEnabled = YES;` directly to achieve this but I think this is acceptable.\r\n- I've ran the current version of ASMapNode through Instruments and they seem to be getting destroyed properly, however I presume it would be better to have weakSelf anyway so I will do that.\r\n- I've went with init with CGRectZero and calling setNeedsLayout since this feels cleaner.\r\n\r\n\r\n","created_at":"2015-12-08T10:21:22Z","updated_at":"2015-12-08T10:21:22Z","html_url":"https://github.com/facebook/AsyncDisplayKit/pull/842#discussion_r46935984","pull_request_url":"https://api.github.com/repos/facebook/AsyncDisplayKit/pulls/842","_links":{"self":{"href":"https://api.github.com/repos/facebook/AsyncDisplayKit/pulls/comments/46935984"},"html":{"href":"https://github.com/facebook/AsyncDisplayKit/pull/842#discussion_r46935984"},"pull_request":{"href":"https://api.github.com/repos/facebook/AsyncDisplayKit/pulls/842"}}},"pull_request":{"url":"https://api.github.com/repos/facebook/AsyncDisplayKit/pulls/842","id":50504836,"html_url":"https://github.com/facebook/AsyncDisplayKit/pull/842","diff_url":"https://github.com/facebook/AsyncDisplayKit/pull/842.diff","patch_url":"https://github.com/facebook/AsyncDisplayKit/pull/842.patch","issue_url":"https://api.github.com/repos/facebook/AsyncDisplayKit/issues/842","number":842,"state":"closed","locked":false,"title":"Add ASMapNode","user":{"login":"aaronschubert0","id":9281756,"avatar_url":"https://avatars.githubusercontent.com/u/9281756?v=3","gravatar_id":"","url":"https://api.github.com/users/aaronschubert0","html_url":"https://github.com/aaronschubert0","followers_url":"https://api.github.com/users/aaronschubert0/followers","following_url":"https://api.github.com/users/aaronschubert0/following{/other_user}","gists_url":"https://api.github.com/users/aaronschubert0/gists{/gist_id}","starred_url":"https://api.github.com/users/aaronschubert0/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aaronschubert0/subscriptions","organizations_url":"https://api.github.com/users/aaronschubert0/orgs","repos_url":"https://api.github.com/users/aaronschubert0/repos","events_url":"https://api.github.com/users/aaronschubert0/events{/privacy}","received_events_url":"https://api.github.com/users/aaronschubert0/received_events","type":"User","site_admin":false},"body":"I've started implementing an ASMapNode as discussed here #59 this node uses the `MKMapSnapshotter` API to provide a snapshot of a map. It then supports turning that snapshot into a `MKMapView` when the user taps on it which fully supports the `MKMapView` delegate, as well as annotations.\r\n\r\nI'm still in two minds whether the snapshot should use an `ASImageNode` or whether it'd be better to just draw the image directly to the node.\r\n\r\nThe main issue I'm still facing is a stutter on scrolling when objects are being dealloc'ed in `clearFetchedData` I'm certain this can be improved, and would love community help on this.\r\n\r\ncc @appleguy ","created_at":"2015-11-12T12:26:37Z","updated_at":"2015-12-08T10:21:22Z","closed_at":"2015-12-07T05:07:29Z","merged_at":"2015-12-07T05:07:29Z","merge_commit_sha":"c2989215d53b4f7791c3cfa611af096f247138d4","assignee":null,"milestone":{"url":"https://api.github.com/repos/facebook/AsyncDisplayKit/milestones/11","html_url":"https://github.com/facebook/AsyncDisplayKit/milestones/1.9.3","labels_url":"https://api.github.com/repos/facebook/AsyncDisplayKit/milestones/11/labels","id":1443360,"number":11,"title":"1.9.3","description":null,"creator":{"login":"appleguy","id":565251,"avatar_url":"https://avatars.githubusercontent.com/u/565251?v=3","gravatar_id":"","url":"https://api.github.com/users/appleguy","html_url":"https://github.com/appleguy","followers_url":"https://api.github.com/users/appleguy/followers","following_url":"https://api.github.com/users/appleguy/following{/other_user}","gists_url":"https://api.github.com/users/appleguy/gists{/gist_id}","starred_url":"https://api.github.com/users/appleguy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/appleguy/subscriptions","organizations_url":"https://api.github.com/users/appleguy/orgs","repos_url":"https://api.github.com/users/appleguy/repos","events_url":"https://api.github.com/users/appleguy/events{/privacy}","received_events_url":"https://api.github.com/users/appleguy/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":13,"state":"open","created_at":"2015-12-04T03:24:51Z","updated_at":"2015-12-07T17:31:31Z","due_on":null,"closed_at":null},"commits_url":"https://api.github.com/repos/facebook/AsyncDisplayKit/pulls/842/commits","review_comments_url":"https://api.github.com/repos/facebook/AsyncDisplayKit/pulls/842/comments","review_comment_url":"https://api.github.com/repos/facebook/AsyncDisplayKit/pulls/comments{/number}","comments_url":"https://api.github.com/repos/facebook/AsyncDisplayKit/issues/842/comments","statuses_url":"https://api.github.com/repos/facebook/AsyncDisplayKit/statuses/e1b50ce77ac29fcf963576800e8271a7356a7d02","head":{"label":"aaronschubert0:ASMapNode","ref":"ASMapNode","sha":"e1b50ce77ac29fcf963576800e8271a7356a7d02","user":{"login":"aaronschubert0","id":9281756,"avatar_url":"https://avatars.githubusercontent.com/u/9281756?v=3","gravatar_id":"","url":"https://api.github.com/users/aaronschubert0","html_url":"https://github.com/aaronschubert0","followers_url":"https://api.github.com/users/aaronschubert0/followers","following_url":"https://api.github.com/users/aaronschubert0/following{/other_user}","gists_url":"https://api.github.com/users/aaronschubert0/gists{/gist_id}","starred_url":"https://api.github.com/users/aaronschubert0/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aaronschubert0/subscriptions","organizations_url":"https://api.github.com/users/aaronschubert0/orgs","repos_url":"https://api.github.com/users/aaronschubert0/repos","events_url":"https://api.github.com/users/aaronschubert0/events{/privacy}","received_events_url":"https://api.github.com/users/aaronschubert0/received_events","type":"User","site_admin":false},"repo":{"id":46050291,"name":"AsyncDisplayKit","full_name":"aaronschubert0/AsyncDisplayKit","owner":{"login":"aaronschubert0","id":9281756,"avatar_url":"https://avatars.githubusercontent.com/u/9281756?v=3","gravatar_id":"","url":"https://api.github.com/users/aaronschubert0","html_url":"https://github.com/aaronschubert0","followers_url":"https://api.github.com/users/aaronschubert0/followers","following_url":"https://api.github.com/users/aaronschubert0/following{/other_user}","gists_url":"https://api.github.com/users/aaronschubert0/gists{/gist_id}","starred_url":"https://api.github.com/users/aaronschubert0/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aaronschubert0/subscriptions","organizations_url":"https://api.github.com/users/aaronschubert0/orgs","repos_url":"https://api.github.com/users/aaronschubert0/repos","events_url":"https://api.github.com/users/aaronschubert0/events{/privacy}","received_events_url":"https://api.github.com/users/aaronschubert0/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/aaronschubert0/AsyncDisplayKit","description":"Smooth asynchronous user interfaces for iOS apps.","fork":true,"url":"https://api.github.com/repos/aaronschubert0/AsyncDisplayKit","forks_url":"https://api.github.com/repos/aaronschubert0/AsyncDisplayKit/forks","keys_url":"https://api.github.com/repos/aaronschubert0/AsyncDisplayKit/keys{/key_id}","collaborators_url":"https://api.github.com/repos/aaronschubert0/AsyncDisplayKit/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/aaronschubert0/AsyncDisplayKit/teams","hooks_url":"https://api.github.com/repos/aaronschubert0/AsyncDisplayKit/hooks","issue_events_url":"https://api.github.com/repos/aaronschubert0/AsyncDisplayKit/issues/events{/number}","events_url":"https://api.github.com/repos/aaronschubert0/AsyncDisplayKit/events","assignees_url":"https://api.github.com/repos/aaronschubert0/AsyncDisplayKit/assignees{/user}","branches_url":"https://api.github.com/repos/aaronschubert0/AsyncDisplayKit/branches{/branch}","tags_url":"https://api.github.com/repos/aaronschubert0/AsyncDisplayKit/tags","blobs_url":"https://api.github.com/repos/aaronschubert0/AsyncDisplayKit/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/aaronschubert0/AsyncDisplayKit/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/aaronschubert0/AsyncDisplayKit/git/refs{/sha}","trees_url":"https://api.github.com/repos/aaronschubert0/AsyncDisplayKit/git/trees{/sha}","statuses_url":"https://api.github.com/repos/aaronschubert0/AsyncDisplayKit/statuses/{sha}","languages_url":"https://api.github.com/repos/aaronschubert0/AsyncDisplayKit/languages","stargazers_url":"https://api.github.com/repos/aaronschubert0/AsyncDisplayKit/stargazers","contributors_url":"https://api.github.com/repos/aaronschubert0/AsyncDisplayKit/contributors","subscribers_url":"https://api.github.com/repos/aaronschubert0/AsyncDisplayKit/subscribers","subscription_url":"https://api.github.com/repos/aaronschubert0/AsyncDisplayKit/subscription","commits_url":"https://api.github.com/repos/aaronschubert0/AsyncDisplayKit/commits{/sha}","git_commits_url":"https://api.github.com/repos/aaronschubert0/AsyncDisplayKit/git/commits{/sha}","comments_url":"https://api.github.com/repos/aaronschubert0/AsyncDisplayKit/comments{/number}","issue_comment_url":"https://api.github.com/repos/aaronschubert0/AsyncDisplayKit/issues/comments{/number}","contents_url":"https://api.github.com/repos/aaronschubert0/AsyncDisplayKit/contents/{+path}","compare_url":"https://api.github.com/repos/aaronschubert0/AsyncDisplayKit/compare/{base}...{head}","merges_url":"https://api.github.com/repos/aaronschubert0/AsyncDisplayKit/merges","archive_url":"https://api.github.com/repos/aaronschubert0/AsyncDisplayKit/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/aaronschubert0/AsyncDisplayKit/downloads","issues_url":"https://api.github.com/repos/aaronschubert0/AsyncDisplayKit/issues{/number}","pulls_url":"https://api.github.com/repos/aaronschubert0/AsyncDisplayKit/pulls{/number}","milestones_url":"https://api.github.com/repos/aaronschubert0/AsyncDisplayKit/milestones{/number}","notifications_url":"https://api.github.com/repos/aaronschubert0/AsyncDisplayKit/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/aaronschubert0/AsyncDisplayKit/labels{/name}","releases_url":"https://api.github.com/repos/aaronschubert0/AsyncDisplayKit/releases{/id}","created_at":"2015-11-12T12:05:13Z","updated_at":"2015-11-12T12:05:15Z","pushed_at":"2015-12-03T14:23:32Z","git_url":"git://github.com/aaronschubert0/AsyncDisplayKit.git","ssh_url":"git@github.com:aaronschubert0/AsyncDisplayKit.git","clone_url":"https://github.com/aaronschubert0/AsyncDisplayKit.git","svn_url":"https://github.com/aaronschubert0/AsyncDisplayKit","homepage":"http://asyncdisplaykit.org","size":9867,"stargazers_count":0,"watchers_count":0,"language":"Objective-C","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"facebook:master","ref":"master","sha":"e42bcf47beb1c2560cbc1e965c75ac7f471d5dbc","user":{"login":"facebook","id":69631,"avatar_url":"https://avatars.githubusercontent.com/u/69631?v=3","gravatar_id":"","url":"https://api.github.com/users/facebook","html_url":"https://github.com/facebook","followers_url":"https://api.github.com/users/facebook/followers","following_url":"https://api.github.com/users/facebook/following{/other_user}","gists_url":"https://api.github.com/users/facebook/gists{/gist_id}","starred_url":"https://api.github.com/users/facebook/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/facebook/subscriptions","organizations_url":"https://api.github.com/users/facebook/orgs","repos_url":"https://api.github.com/users/facebook/repos","events_url":"https://api.github.com/users/facebook/events{/privacy}","received_events_url":"https://api.github.com/users/facebook/received_events","type":"Organization","site_admin":false},"repo":{"id":21265042,"name":"AsyncDisplayKit","full_name":"facebook/AsyncDisplayKit","owner":{"login":"facebook","id":69631,"avatar_url":"https://avatars.githubusercontent.com/u/69631?v=3","gravatar_id":"","url":"https://api.github.com/users/facebook","html_url":"https://github.com/facebook","followers_url":"https://api.github.com/users/facebook/followers","following_url":"https://api.github.com/users/facebook/following{/other_user}","gists_url":"https://api.github.com/users/facebook/gists{/gist_id}","starred_url":"https://api.github.com/users/facebook/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/facebook/subscriptions","organizations_url":"https://api.github.com/users/facebook/orgs","repos_url":"https://api.github.com/users/facebook/repos","events_url":"https://api.github.com/users/facebook/events{/privacy}","received_events_url":"https://api.github.com/users/facebook/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/facebook/AsyncDisplayKit","description":"Smooth asynchronous user interfaces for iOS apps.","fork":false,"url":"https://api.github.com/repos/facebook/AsyncDisplayKit","forks_url":"https://api.github.com/repos/facebook/AsyncDisplayKit/forks","keys_url":"https://api.github.com/repos/facebook/AsyncDisplayKit/keys{/key_id}","collaborators_url":"https://api.github.com/repos/facebook/AsyncDisplayKit/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/facebook/AsyncDisplayKit/teams","hooks_url":"https://api.github.com/repos/facebook/AsyncDisplayKit/hooks","issue_events_url":"https://api.github.com/repos/facebook/AsyncDisplayKit/issues/events{/number}","events_url":"https://api.github.com/repos/facebook/AsyncDisplayKit/events","assignees_url":"https://api.github.com/repos/facebook/AsyncDisplayKit/assignees{/user}","branches_url":"https://api.github.com/repos/facebook/AsyncDisplayKit/branches{/branch}","tags_url":"https://api.github.com/repos/facebook/AsyncDisplayKit/tags","blobs_url":"https://api.github.com/repos/facebook/AsyncDisplayKit/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/facebook/AsyncDisplayKit/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/facebook/AsyncDisplayKit/git/refs{/sha}","trees_url":"https://api.github.com/repos/facebook/AsyncDisplayKit/git/trees{/sha}","statuses_url":"https://api.github.com/repos/facebook/AsyncDisplayKit/statuses/{sha}","languages_url":"https://api.github.com/repos/facebook/AsyncDisplayKit/languages","stargazers_url":"https://api.github.com/repos/facebook/AsyncDisplayKit/stargazers","contributors_url":"https://api.github.com/repos/facebook/AsyncDisplayKit/contributors","subscribers_url":"https://api.github.com/repos/facebook/AsyncDisplayKit/subscribers","subscription_url":"https://api.github.com/repos/facebook/AsyncDisplayKit/subscription","commits_url":"https://api.github.com/repos/facebook/AsyncDisplayKit/commits{/sha}","git_commits_url":"https://api.github.com/repos/facebook/AsyncDisplayKit/git/commits{/sha}","comments_url":"https://api.github.com/repos/facebook/AsyncDisplayKit/comments{/number}","issue_comment_url":"https://api.github.com/repos/facebook/AsyncDisplayKit/issues/comments{/number}","contents_url":"https://api.github.com/repos/facebook/AsyncDisplayKit/contents/{+path}","compare_url":"https://api.github.com/repos/facebook/AsyncDisplayKit/compare/{base}...{head}","merges_url":"https://api.github.com/repos/facebook/AsyncDisplayKit/merges","archive_url":"https://api.github.com/repos/facebook/AsyncDisplayKit/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/facebook/AsyncDisplayKit/downloads","issues_url":"https://api.github.com/repos/facebook/AsyncDisplayKit/issues{/number}","pulls_url":"https://api.github.com/repos/facebook/AsyncDisplayKit/pulls{/number}","milestones_url":"https://api.github.com/repos/facebook/AsyncDisplayKit/milestones{/number}","notifications_url":"https://api.github.com/repos/facebook/AsyncDisplayKit/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/facebook/AsyncDisplayKit/labels{/name}","releases_url":"https://api.github.com/repos/facebook/AsyncDisplayKit/releases{/id}","created_at":"2014-06-27T05:29:02Z","updated_at":"2015-12-08T10:06:55Z","pushed_at":"2015-12-07T20:58:28Z","git_url":"git://github.com/facebook/AsyncDisplayKit.git","ssh_url":"git@github.com:facebook/AsyncDisplayKit.git","clone_url":"https://github.com/facebook/AsyncDisplayKit.git","svn_url":"https://github.com/facebook/AsyncDisplayKit","homepage":"http://asyncdisplaykit.org","size":10976,"stargazers_count":6634,"watchers_count":6634,"language":"Objective-C","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":974,"mirror_url":null,"open_issues_count":124,"forks":974,"open_issues":124,"watchers":6634,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/facebook/AsyncDisplayKit/pulls/842"},"html":{"href":"https://github.com/facebook/AsyncDisplayKit/pull/842"},"issue":{"href":"https://api.github.com/repos/facebook/AsyncDisplayKit/issues/842"},"comments":{"href":"https://api.github.com/repos/facebook/AsyncDisplayKit/issues/842/comments"},"review_comments":{"href":"https://api.github.com/repos/facebook/AsyncDisplayKit/pulls/842/comments"},"review_comment":{"href":"https://api.github.com/repos/facebook/AsyncDisplayKit/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/facebook/AsyncDisplayKit/pulls/842/commits"},"statuses":{"href":"https://api.github.com/repos/facebook/AsyncDisplayKit/statuses/e1b50ce77ac29fcf963576800e8271a7356a7d02"}}}}