{"action":"created","comment":{"url":"https://api.github.com/repos/mongodb/stitch-android-sdk/pulls/comments/222085711","pull_request_review_id":160890336,"id":222085711,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIyMjA4NTcxMQ==","diff_hunk":"@@ -0,0 +1,245 @@\n+/*\n+ * Copyright 2018-present MongoDB, Inc.\n+ *\n+ * Licensed under the Apache License, Version 2.0 (the \"License\");\n+ * you may not use this file except in compliance with the License.\n+ * You may obtain a copy of the License at\n+ *\n+ *   http://www.apache.org/licenses/LICENSE-2.0\n+ *\n+ * Unless required by applicable law or agreed to in writing, software\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n+ * See the License for the specific language governing permissions and\n+ * limitations under the License.\n+ */\n+\n+package com.mongodb.stitch.core.services.mongodb.remote.sync.internal;\n+\n+import com.mongodb.MongoNamespace;\n+import com.mongodb.stitch.core.internal.common.AuthMonitor;\n+import com.mongodb.stitch.core.internal.common.Callback;\n+import com.mongodb.stitch.core.internal.common.OperationResult;\n+import com.mongodb.stitch.core.internal.common.Stream;\n+import com.mongodb.stitch.core.internal.net.Event;\n+import com.mongodb.stitch.core.internal.net.EventType;\n+import com.mongodb.stitch.core.internal.net.NetworkMonitor;\n+import com.mongodb.stitch.core.services.internal.CoreStitchServiceClient;\n+\n+import java.io.IOException;\n+import java.lang.ref.WeakReference;\n+import java.util.ArrayDeque;\n+import java.util.Collections;\n+import java.util.Deque;\n+import java.util.HashMap;\n+import java.util.Locale;\n+import java.util.Map;\n+import java.util.concurrent.locks.ReadWriteLock;\n+import java.util.concurrent.locks.ReentrantReadWriteLock;\n+\n+import org.bson.BsonDocument;\n+import org.bson.BsonValue;\n+import org.bson.Document;\n+import org.bson.diagnostics.Logger;\n+import org.bson.diagnostics.Loggers;\n+\n+public class NamespaceChangeStreamListener implements NetworkMonitor.StateListener {\n+  private final MongoNamespace namespace;\n+  private final NamespaceSynchronizationConfig nsConfig;\n+  private final CoreStitchServiceClient service;\n+  private final NetworkMonitor networkMonitor;\n+  private final AuthMonitor authMonitor;\n+  private final Logger logger;\n+  private final Map<BsonValue, ChangeEvent<BsonDocument>> events;\n+  private Thread streamThread;\n+  private ReadWriteLock nsLock;\n+  private final Deque<Callback<ChangeEvent<BsonDocument>, Object>> callbackQueue;\n+  private Stream<ChangeEvent<BsonDocument>> currentStream;\n+\n+  NamespaceChangeStreamListener(\n+      final MongoNamespace namespace,\n+      final NamespaceSynchronizationConfig nsConfig,\n+      final CoreStitchServiceClient service,\n+      final NetworkMonitor networkMonitor,\n+      final AuthMonitor authMonitor\n+  ) {\n+    this.namespace = namespace;\n+    this.nsConfig = nsConfig;\n+    this.service = service;\n+    this.networkMonitor = networkMonitor;\n+    this.authMonitor = authMonitor;\n+    this.events = new HashMap<>();\n+    this.nsLock = new ReentrantReadWriteLock();\n+    this.logger =\n+        Loggers.getLogger(\n+            String.format(\"NamespaceChangeStreamListener-%s\", namespace.toString()));\n+    this.callbackQueue = new ArrayDeque<>();\n+    this.networkMonitor.addNetworkStateListener(this);\n+  }\n+\n+  @Override\n+  public void onNetworkStateChanged() {\n+    if (!this.networkMonitor.isConnected()) {\n+      this.stop();\n+      this.nsConfig.setStale();\n+    } else {\n+      this.start();\n+    }\n+  }\n+\n+  /**\n+   * Opens the stream in a background thread.\n+   */\n+  public void start() {\n+    nsLock.writeLock().lock();\n+    try {\n+      if (streamThread != null) {\n+        return;\n+      }\n+      streamThread =\n+          new Thread(new NamespaceChangeStreamRunner(\n+              new WeakReference<>(this), networkMonitor, logger));\n+      streamThread.start();\n+    } finally {\n+      nsLock.writeLock().unlock();\n+    }\n+  }\n+\n+  /**\n+   * Stops the background stream thread.\n+   */\n+  public void stop() {\n+    nsLock.writeLock().lock();\n+    try {\n+      if (streamThread == null) {\n+        return;\n+      }\n+\n+      streamThread.interrupt();\n+      try {\n+        if (streamThread.isAlive()) {\n+          close();\n+          streamThread.join();\n+        }\n+      } catch (final Exception e) {\n+        return;\n+      }\n+      streamThread = null;\n+    } catch (Exception e) {\n+      e.printStackTrace();\n+    } finally {\n+      nsLock.writeLock().unlock();\n+    }\n+  }\n+\n+  void queueWatcher(final Callback<ChangeEvent<BsonDocument>, Object> callback) {\n+    callbackQueue.add(callback);\n+  }\n+\n+  void clearWatchers() {\n+    for (int i = 0; i < callbackQueue.size(); i++) {\n+      callbackQueue.remove().onComplete(","path":"core/services/mongodb-remote/src/main/java/com/mongodb/stitch/core/services/mongodb/remote/sync/internal/NamespaceChangeStreamListener.java","position":141,"original_position":141,"commit_id":"a9b8365c972fa022e02cbabcdfaf83d7a52cd083","original_commit_id":"a9b8365c972fa022e02cbabcdfaf83d7a52cd083","user":{"login":"jsflax","id":4356928,"node_id":"MDQ6VXNlcjQzNTY5Mjg=","avatar_url":"https://avatars3.githubusercontent.com/u/4356928?v=4","gravatar_id":"","url":"https://api.github.com/users/jsflax","html_url":"https://github.com/jsflax","followers_url":"https://api.github.com/users/jsflax/followers","following_url":"https://api.github.com/users/jsflax/following{/other_user}","gists_url":"https://api.github.com/users/jsflax/gists{/gist_id}","starred_url":"https://api.github.com/users/jsflax/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jsflax/subscriptions","organizations_url":"https://api.github.com/users/jsflax/orgs","repos_url":"https://api.github.com/users/jsflax/repos","events_url":"https://api.github.com/users/jsflax/events{/privacy}","received_events_url":"https://api.github.com/users/jsflax/received_events","type":"User","site_admin":false},"body":"The failed result can allow for certain test failures that might otherwise be stalled.","created_at":"2018-10-02T19:40:30Z","updated_at":"2018-10-02T19:40:30Z","html_url":"https://github.com/mongodb/stitch-android-sdk/pull/65#discussion_r222085711","pull_request_url":"https://api.github.com/repos/mongodb/stitch-android-sdk/pulls/65","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/mongodb/stitch-android-sdk/pulls/comments/222085711"},"html":{"href":"https://github.com/mongodb/stitch-android-sdk/pull/65#discussion_r222085711"},"pull_request":{"href":"https://api.github.com/repos/mongodb/stitch-android-sdk/pulls/65"}},"in_reply_to_id":222049558},"pull_request":{"url":"https://api.github.com/repos/mongodb/stitch-android-sdk/pulls/65","id":218730198,"node_id":"MDExOlB1bGxSZXF1ZXN0MjE4NzMwMTk4","html_url":"https://github.com/mongodb/stitch-android-sdk/pull/65","diff_url":"https://github.com/mongodb/stitch-android-sdk/pull/65.diff","patch_url":"https://github.com/mongodb/stitch-android-sdk/pull/65.patch","issue_url":"https://api.github.com/repos/mongodb/stitch-android-sdk/issues/65","number":65,"state":"open","locked":false,"title":"STITCH-1955 Implement NamespaceChangeStreamListener","user":{"login":"jsflax","id":4356928,"node_id":"MDQ6VXNlcjQzNTY5Mjg=","avatar_url":"https://avatars3.githubusercontent.com/u/4356928?v=4","gravatar_id":"","url":"https://api.github.com/users/jsflax","html_url":"https://github.com/jsflax","followers_url":"https://api.github.com/users/jsflax/followers","following_url":"https://api.github.com/users/jsflax/following{/other_user}","gists_url":"https://api.github.com/users/jsflax/gists{/gist_id}","starred_url":"https://api.github.com/users/jsflax/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jsflax/subscriptions","organizations_url":"https://api.github.com/users/jsflax/orgs","repos_url":"https://api.github.com/users/jsflax/repos","events_url":"https://api.github.com/users/jsflax/events{/privacy}","received_events_url":"https://api.github.com/users/jsflax/received_events","type":"User","site_admin":false},"body":"*Not ready for review*","created_at":"2018-09-27T17:25:20Z","updated_at":"2018-10-02T19:40:30Z","closed_at":null,"merged_at":null,"merge_commit_sha":"5020aaf2fec3cb36bccfa77babcb7fb31e4d2599","assignee":null,"assignees":[],"requested_reviewers":[{"login":"adamchel","id":1976694,"node_id":"MDQ6VXNlcjE5NzY2OTQ=","avatar_url":"https://avatars1.githubusercontent.com/u/1976694?v=4","gravatar_id":"","url":"https://api.github.com/users/adamchel","html_url":"https://github.com/adamchel","followers_url":"https://api.github.com/users/adamchel/followers","following_url":"https://api.github.com/users/adamchel/following{/other_user}","gists_url":"https://api.github.com/users/adamchel/gists{/gist_id}","starred_url":"https://api.github.com/users/adamchel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/adamchel/subscriptions","organizations_url":"https://api.github.com/users/adamchel/orgs","repos_url":"https://api.github.com/users/adamchel/repos","events_url":"https://api.github.com/users/adamchel/events{/privacy}","received_events_url":"https://api.github.com/users/adamchel/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/mongodb/stitch-android-sdk/pulls/65/commits","review_comments_url":"https://api.github.com/repos/mongodb/stitch-android-sdk/pulls/65/comments","review_comment_url":"https://api.github.com/repos/mongodb/stitch-android-sdk/pulls/comments{/number}","comments_url":"https://api.github.com/repos/mongodb/stitch-android-sdk/issues/65/comments","statuses_url":"https://api.github.com/repos/mongodb/stitch-android-sdk/statuses/a9b8365c972fa022e02cbabcdfaf83d7a52cd083","head":{"label":"jsflax:STITCH-1955","ref":"STITCH-1955","sha":"a9b8365c972fa022e02cbabcdfaf83d7a52cd083","user":{"login":"jsflax","id":4356928,"node_id":"MDQ6VXNlcjQzNTY5Mjg=","avatar_url":"https://avatars3.githubusercontent.com/u/4356928?v=4","gravatar_id":"","url":"https://api.github.com/users/jsflax","html_url":"https://github.com/jsflax","followers_url":"https://api.github.com/users/jsflax/followers","following_url":"https://api.github.com/users/jsflax/following{/other_user}","gists_url":"https://api.github.com/users/jsflax/gists{/gist_id}","starred_url":"https://api.github.com/users/jsflax/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jsflax/subscriptions","organizations_url":"https://api.github.com/users/jsflax/orgs","repos_url":"https://api.github.com/users/jsflax/repos","events_url":"https://api.github.com/users/jsflax/events{/privacy}","received_events_url":"https://api.github.com/users/jsflax/received_events","type":"User","site_admin":false},"repo":{"id":111605587,"node_id":"MDEwOlJlcG9zaXRvcnkxMTE2MDU1ODc=","name":"stitch-android-sdk","full_name":"jsflax/stitch-android-sdk","private":false,"owner":{"login":"jsflax","id":4356928,"node_id":"MDQ6VXNlcjQzNTY5Mjg=","avatar_url":"https://avatars3.githubusercontent.com/u/4356928?v=4","gravatar_id":"","url":"https://api.github.com/users/jsflax","html_url":"https://github.com/jsflax","followers_url":"https://api.github.com/users/jsflax/followers","following_url":"https://api.github.com/users/jsflax/following{/other_user}","gists_url":"https://api.github.com/users/jsflax/gists{/gist_id}","starred_url":"https://api.github.com/users/jsflax/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jsflax/subscriptions","organizations_url":"https://api.github.com/users/jsflax/orgs","repos_url":"https://api.github.com/users/jsflax/repos","events_url":"https://api.github.com/users/jsflax/events{/privacy}","received_events_url":"https://api.github.com/users/jsflax/received_events","type":"User","site_admin":false},"html_url":"https://github.com/jsflax/stitch-android-sdk","description":"MongoDB Stitch Android SDK","fork":true,"url":"https://api.github.com/repos/jsflax/stitch-android-sdk","forks_url":"https://api.github.com/repos/jsflax/stitch-android-sdk/forks","keys_url":"https://api.github.com/repos/jsflax/stitch-android-sdk/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jsflax/stitch-android-sdk/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jsflax/stitch-android-sdk/teams","hooks_url":"https://api.github.com/repos/jsflax/stitch-android-sdk/hooks","issue_events_url":"https://api.github.com/repos/jsflax/stitch-android-sdk/issues/events{/number}","events_url":"https://api.github.com/repos/jsflax/stitch-android-sdk/events","assignees_url":"https://api.github.com/repos/jsflax/stitch-android-sdk/assignees{/user}","branches_url":"https://api.github.com/repos/jsflax/stitch-android-sdk/branches{/branch}","tags_url":"https://api.github.com/repos/jsflax/stitch-android-sdk/tags","blobs_url":"https://api.github.com/repos/jsflax/stitch-android-sdk/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jsflax/stitch-android-sdk/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jsflax/stitch-android-sdk/git/refs{/sha}","trees_url":"https://api.github.com/repos/jsflax/stitch-android-sdk/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jsflax/stitch-android-sdk/statuses/{sha}","languages_url":"https://api.github.com/repos/jsflax/stitch-android-sdk/languages","stargazers_url":"https://api.github.com/repos/jsflax/stitch-android-sdk/stargazers","contributors_url":"https://api.github.com/repos/jsflax/stitch-android-sdk/contributors","subscribers_url":"https://api.github.com/repos/jsflax/stitch-android-sdk/subscribers","subscription_url":"https://api.github.com/repos/jsflax/stitch-android-sdk/subscription","commits_url":"https://api.github.com/repos/jsflax/stitch-android-sdk/commits{/sha}","git_commits_url":"https://api.github.com/repos/jsflax/stitch-android-sdk/git/commits{/sha}","comments_url":"https://api.github.com/repos/jsflax/stitch-android-sdk/comments{/number}","issue_comment_url":"https://api.github.com/repos/jsflax/stitch-android-sdk/issues/comments{/number}","contents_url":"https://api.github.com/repos/jsflax/stitch-android-sdk/contents/{+path}","compare_url":"https://api.github.com/repos/jsflax/stitch-android-sdk/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jsflax/stitch-android-sdk/merges","archive_url":"https://api.github.com/repos/jsflax/stitch-android-sdk/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jsflax/stitch-android-sdk/downloads","issues_url":"https://api.github.com/repos/jsflax/stitch-android-sdk/issues{/number}","pulls_url":"https://api.github.com/repos/jsflax/stitch-android-sdk/pulls{/number}","milestones_url":"https://api.github.com/repos/jsflax/stitch-android-sdk/milestones{/number}","notifications_url":"https://api.github.com/repos/jsflax/stitch-android-sdk/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jsflax/stitch-android-sdk/labels{/name}","releases_url":"https://api.github.com/repos/jsflax/stitch-android-sdk/releases{/id}","deployments_url":"https://api.github.com/repos/jsflax/stitch-android-sdk/deployments","created_at":"2017-11-21T21:55:43Z","updated_at":"2018-09-20T15:22:41Z","pushed_at":"2018-10-01T22:35:05Z","git_url":"git://github.com/jsflax/stitch-android-sdk.git","ssh_url":"git@github.com:jsflax/stitch-android-sdk.git","clone_url":"https://github.com/jsflax/stitch-android-sdk.git","svn_url":"https://github.com/jsflax/stitch-android-sdk","homepage":"","size":1769,"stargazers_count":0,"watchers_count":0,"language":"Java","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"mongodb:master","ref":"master","sha":"5994a06443b0d9295dc3340b232ea862bc63bd05","user":{"login":"mongodb","id":45120,"node_id":"MDEyOk9yZ2FuaXphdGlvbjQ1MTIw","avatar_url":"https://avatars1.githubusercontent.com/u/45120?v=4","gravatar_id":"","url":"https://api.github.com/users/mongodb","html_url":"https://github.com/mongodb","followers_url":"https://api.github.com/users/mongodb/followers","following_url":"https://api.github.com/users/mongodb/following{/other_user}","gists_url":"https://api.github.com/users/mongodb/gists{/gist_id}","starred_url":"https://api.github.com/users/mongodb/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mongodb/subscriptions","organizations_url":"https://api.github.com/users/mongodb/orgs","repos_url":"https://api.github.com/users/mongodb/repos","events_url":"https://api.github.com/users/mongodb/events{/privacy}","received_events_url":"https://api.github.com/users/mongodb/received_events","type":"Organization","site_admin":false},"repo":{"id":87100729,"node_id":"MDEwOlJlcG9zaXRvcnk4NzEwMDcyOQ==","name":"stitch-android-sdk","full_name":"mongodb/stitch-android-sdk","private":false,"owner":{"login":"mongodb","id":45120,"node_id":"MDEyOk9yZ2FuaXphdGlvbjQ1MTIw","avatar_url":"https://avatars1.githubusercontent.com/u/45120?v=4","gravatar_id":"","url":"https://api.github.com/users/mongodb","html_url":"https://github.com/mongodb","followers_url":"https://api.github.com/users/mongodb/followers","following_url":"https://api.github.com/users/mongodb/following{/other_user}","gists_url":"https://api.github.com/users/mongodb/gists{/gist_id}","starred_url":"https://api.github.com/users/mongodb/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mongodb/subscriptions","organizations_url":"https://api.github.com/users/mongodb/orgs","repos_url":"https://api.github.com/users/mongodb/repos","events_url":"https://api.github.com/users/mongodb/events{/privacy}","received_events_url":"https://api.github.com/users/mongodb/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/mongodb/stitch-android-sdk","description":"MongoDB Stitch Android SDK","fork":false,"url":"https://api.github.com/repos/mongodb/stitch-android-sdk","forks_url":"https://api.github.com/repos/mongodb/stitch-android-sdk/forks","keys_url":"https://api.github.com/repos/mongodb/stitch-android-sdk/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mongodb/stitch-android-sdk/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mongodb/stitch-android-sdk/teams","hooks_url":"https://api.github.com/repos/mongodb/stitch-android-sdk/hooks","issue_events_url":"https://api.github.com/repos/mongodb/stitch-android-sdk/issues/events{/number}","events_url":"https://api.github.com/repos/mongodb/stitch-android-sdk/events","assignees_url":"https://api.github.com/repos/mongodb/stitch-android-sdk/assignees{/user}","branches_url":"https://api.github.com/repos/mongodb/stitch-android-sdk/branches{/branch}","tags_url":"https://api.github.com/repos/mongodb/stitch-android-sdk/tags","blobs_url":"https://api.github.com/repos/mongodb/stitch-android-sdk/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mongodb/stitch-android-sdk/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mongodb/stitch-android-sdk/git/refs{/sha}","trees_url":"https://api.github.com/repos/mongodb/stitch-android-sdk/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mongodb/stitch-android-sdk/statuses/{sha}","languages_url":"https://api.github.com/repos/mongodb/stitch-android-sdk/languages","stargazers_url":"https://api.github.com/repos/mongodb/stitch-android-sdk/stargazers","contributors_url":"https://api.github.com/repos/mongodb/stitch-android-sdk/contributors","subscribers_url":"https://api.github.com/repos/mongodb/stitch-android-sdk/subscribers","subscription_url":"https://api.github.com/repos/mongodb/stitch-android-sdk/subscription","commits_url":"https://api.github.com/repos/mongodb/stitch-android-sdk/commits{/sha}","git_commits_url":"https://api.github.com/repos/mongodb/stitch-android-sdk/git/commits{/sha}","comments_url":"https://api.github.com/repos/mongodb/stitch-android-sdk/comments{/number}","issue_comment_url":"https://api.github.com/repos/mongodb/stitch-android-sdk/issues/comments{/number}","contents_url":"https://api.github.com/repos/mongodb/stitch-android-sdk/contents/{+path}","compare_url":"https://api.github.com/repos/mongodb/stitch-android-sdk/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mongodb/stitch-android-sdk/merges","archive_url":"https://api.github.com/repos/mongodb/stitch-android-sdk/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mongodb/stitch-android-sdk/downloads","issues_url":"https://api.github.com/repos/mongodb/stitch-android-sdk/issues{/number}","pulls_url":"https://api.github.com/repos/mongodb/stitch-android-sdk/pulls{/number}","milestones_url":"https://api.github.com/repos/mongodb/stitch-android-sdk/milestones{/number}","notifications_url":"https://api.github.com/repos/mongodb/stitch-android-sdk/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mongodb/stitch-android-sdk/labels{/name}","releases_url":"https://api.github.com/repos/mongodb/stitch-android-sdk/releases{/id}","deployments_url":"https://api.github.com/repos/mongodb/stitch-android-sdk/deployments","created_at":"2017-04-03T17:19:42Z","updated_at":"2018-09-27T16:06:34Z","pushed_at":"2018-10-01T22:35:06Z","git_url":"git://github.com/mongodb/stitch-android-sdk.git","ssh_url":"git@github.com:mongodb/stitch-android-sdk.git","clone_url":"https://github.com/mongodb/stitch-android-sdk.git","svn_url":"https://github.com/mongodb/stitch-android-sdk","homepage":"","size":1565,"stargazers_count":24,"watchers_count":24,"language":"Java","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":12,"mirror_url":null,"archived":false,"open_issues_count":1,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"forks":12,"open_issues":1,"watchers":24,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/mongodb/stitch-android-sdk/pulls/65"},"html":{"href":"https://github.com/mongodb/stitch-android-sdk/pull/65"},"issue":{"href":"https://api.github.com/repos/mongodb/stitch-android-sdk/issues/65"},"comments":{"href":"https://api.github.com/repos/mongodb/stitch-android-sdk/issues/65/comments"},"review_comments":{"href":"https://api.github.com/repos/mongodb/stitch-android-sdk/pulls/65/comments"},"review_comment":{"href":"https://api.github.com/repos/mongodb/stitch-android-sdk/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/mongodb/stitch-android-sdk/pulls/65/commits"},"statuses":{"href":"https://api.github.com/repos/mongodb/stitch-android-sdk/statuses/a9b8365c972fa022e02cbabcdfaf83d7a52cd083"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"jsflax"}}