{"action":"created","comment":{"url":"https://api.github.com/repos/firebase/firebase-ios-sdk/pulls/comments/216002059","pull_request_review_id":153397102,"id":216002059,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIxNjAwMjA1OQ==","diff_hunk":"@@ -0,0 +1,204 @@\n+#! /usr/bin/python\n+\n+# Copyright 2018 Google Inc. All rights reserved.\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+\"\"\"Generates and massages protocol buffer outputs.\n+\"\"\"\n+\n+from __future__ import print_function\n+\n+import sys\n+\n+import argparse\n+import os\n+import os.path\n+import re\n+import shutil\n+import subprocess\n+import tarfile\n+import urllib2\n+\n+\n+NANOPB_VERSION = '0.3.8'\n+PROTOC_BIN = 'Pods/!ProtoCompiler/protoc'\n+\n+COPYRIGHT_NOTICE = '''\n+/*\n+ * Copyright 2018 Google\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+'''.lstrip()\n+\n+\n+def main():\n+  parser = argparse.ArgumentParser(\n+      description='Generates proto messages.')\n+  parser.add_argument(\n+      '--nanopb', action='store_true', help='Generates nanopb messages.')\n+\n+  if len(sys.argv) == 1:\n+    parser.print_help()\n+    sys.exit(1)\n+  args = parser.parse_args()\n+\n+  root_dir = os.path.dirname(__file__)\n+  os.chdir(root_dir)\n+\n+  nanopb_proto_files = collect_files('protos', '.proto')\n+\n+  if args.nanopb:\n+    NanopbGenerator(nanopb_proto_files).run()\n+\n+\n+class NanopbGenerator(object):\n+  \"\"\"Builds and runs the nanopb plugin to protoc.\"\"\"\n+\n+  def __init__(self, proto_files):\n+    self.proto_files = proto_files\n+\n+  def run(self):\n+    \"\"\"Performs the action of the the generator.\"\"\"\n+\n+    # Must match the directory structure inside the tarball\n+    nanopb_dir = 'nanopb-' + NANOPB_VERSION\n+    generator_bin = os.path.join(nanopb_dir, 'generator/protoc-gen-nanopb')\n+    nanopb_out = 'nanopb'\n+\n+    nanopb_py = os.path.join(nanopb_dir, 'generator/proto/nanopb_pb2.py')\n+    if not os.path.isfile(nanopb_py):\n+      self.__download()\n+      self.__build(nanopb_dir)\n+\n+    self.__run_generator(generator_bin, nanopb_out)\n+\n+    sources = collect_files(nanopb_out, '.nanopb.h', '.nanopb.c')\n+    post_process_files(sources, add_copyright, nanopb_rename_delete)\n+\n+  def __download(self):\n+    \"\"\"Downloads and unpacks nanopb sources.\"\"\"\n+\n+    url = 'https://github.com/nanopb/nanopb/archive/%s.tar.gz' % NANOPB_VERSION\n+    tgz = 'nanopb-%s.tar.gz' % NANOPB_VERSION\n+\n+    if not os.path.isfile(tgz):\n+      print('Downloading %s' % url)\n+      response = urllib2.urlopen(url)\n+      with open(tgz, 'wb') as fd:\n+        shutil.copyfileobj(response, fd)\n+\n+    with tarfile.open(tgz) as tar:\n+      tar.extractall()\n+\n+  def __build(self, nanopb_dir):\n+    \"\"\"Builds the nanopb plugin from sources.\"\"\"\n+\n+    print('Building %s' % nanopb_dir)\n+    cwd = os.getcwd()\n+    os.chdir(nanopb_dir)\n+\n+    subprocess.call(['cmake', '.'])\n+    subprocess.call(['make'])\n+\n+    # Copy built files into place where the generator expects to find them\n+    for src in ['plugin_pb2.py', 'nanopb_pb2.py']:\n+      dest = os.path.join('generator/proto', src)\n+      shutil.copyfile(src, dest)\n+\n+    os.chdir(cwd)\n+\n+  def __run_generator(self, generator_bin, out_dir):\n+    \"\"\"Invokes protoc using the nanopb plugin.\"\"\"\n+    nanopb_flags = ' '.join([\n+        '--extension=.nanopb',\n+        '--options-file=protos/%s.options',\n+    ])\n+\n+    cmd = [\n+        PROTOC_BIN,\n+        '-I', 'protos',\n+        '--plugin=' + generator_bin,\n+        '--nanopb_out=%s:%s' % (nanopb_flags, out_dir),\n+    ]\n+    cmd.extend(self.proto_files)\n+\n+    subprocess.call(cmd)\n+\n+\n+def post_process_files(filenames, *processors):\n+  for filename in filenames:\n+    lines = []\n+    with open(filename, 'r') as fd:\n+      lines = fd.readlines()\n+\n+    for processor in processors:\n+      lines = processor(lines)\n+\n+    write_file(filename, lines)\n+\n+\n+def write_file(filename, lines):\n+  with open(filename, 'w') as fd:\n+    fd.write(''.join(lines))\n+\n+\n+def add_copyright(lines):\n+  \"\"\"Adds a copyright notice to the lines.\"\"\"\n+  result = [COPYRIGHT_NOTICE, '\\n']\n+  result.extend(lines)\n+  return result\n+\n+\n+def nanopb_rename_delete(lines):\n+  \"\"\"Renames a delete symbol to delete_.\n+\n+  If a proto uses a field named 'delete', nanopb happily uses that in the\n+  message definition. Works fine for C; not so much for C++.\n+\n+  Args:\n+    lines: The lines to fix.\n+\n+  Returns:\n+    The lines, fixed.\n+  \"\"\"\n+  delete_keyword = re.compile(r'\\bdelete\\b')\n+  return [delete_keyword.sub('delete_', line) for line in lines]\n+\n+\n+def collect_files(root_dir, *extensions):\n+  \"\"\"Finds files with the given extensions in the root_dir.\"\"\"\n+  result = []\n+  for root, dirs, files in os.walk(root_dir):\n+    del dirs","path":"Firestore/Protos/build_protos.py","position":null,"original_position":194,"commit_id":"b1811629d6febdf16429c7ed5a8efd0cb21de92e","original_commit_id":"4e80811c6b71d5181c348f06f4aa2e5d4a59ba8e","user":{"login":"wilhuff","id":10249104,"node_id":"MDQ6VXNlcjEwMjQ5MTA0","avatar_url":"https://avatars1.githubusercontent.com/u/10249104?v=4","gravatar_id":"","url":"https://api.github.com/users/wilhuff","html_url":"https://github.com/wilhuff","followers_url":"https://api.github.com/users/wilhuff/followers","following_url":"https://api.github.com/users/wilhuff/following{/other_user}","gists_url":"https://api.github.com/users/wilhuff/gists{/gist_id}","starred_url":"https://api.github.com/users/wilhuff/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wilhuff/subscriptions","organizations_url":"https://api.github.com/users/wilhuff/orgs","repos_url":"https://api.github.com/users/wilhuff/repos","events_url":"https://api.github.com/users/wilhuff/events{/privacy}","received_events_url":"https://api.github.com/users/wilhuff/received_events","type":"User","site_admin":false},"body":"Went with underscore.","created_at":"2018-09-07T15:40:38Z","updated_at":"2018-09-07T15:42:20Z","html_url":"https://github.com/firebase/firebase-ios-sdk/pull/1777#discussion_r216002059","pull_request_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/pulls/1777","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/firebase/firebase-ios-sdk/pulls/comments/216002059"},"html":{"href":"https://github.com/firebase/firebase-ios-sdk/pull/1777#discussion_r216002059"},"pull_request":{"href":"https://api.github.com/repos/firebase/firebase-ios-sdk/pulls/1777"}},"in_reply_to_id":215290069},"pull_request":{"url":"https://api.github.com/repos/firebase/firebase-ios-sdk/pulls/1777","id":213120102,"node_id":"MDExOlB1bGxSZXF1ZXN0MjEzMTIwMTAy","html_url":"https://github.com/firebase/firebase-ios-sdk/pull/1777","diff_url":"https://github.com/firebase/firebase-ios-sdk/pull/1777.diff","patch_url":"https://github.com/firebase/firebase-ios-sdk/pull/1777.patch","issue_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/issues/1777","number":1777,"state":"open","locked":false,"title":"Start rewriting build-protos.sh as build_protos.py","user":{"login":"wilhuff","id":10249104,"node_id":"MDQ6VXNlcjEwMjQ5MTA0","avatar_url":"https://avatars1.githubusercontent.com/u/10249104?v=4","gravatar_id":"","url":"https://api.github.com/users/wilhuff","html_url":"https://github.com/wilhuff","followers_url":"https://api.github.com/users/wilhuff/followers","following_url":"https://api.github.com/users/wilhuff/following{/other_user}","gists_url":"https://api.github.com/users/wilhuff/gists{/gist_id}","starred_url":"https://api.github.com/users/wilhuff/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wilhuff/subscriptions","organizations_url":"https://api.github.com/users/wilhuff/orgs","repos_url":"https://api.github.com/users/wilhuff/repos","events_url":"https://api.github.com/users/wilhuff/events{/privacy}","received_events_url":"https://api.github.com/users/wilhuff/received_events","type":"User","site_admin":false},"body":"... and carve out nanopb source generation into a separate target.\r\n\r\nThe one observable difference of this change that regenerating targets now preserves the copyright.","created_at":"2018-09-04T22:23:13Z","updated_at":"2018-09-07T15:42:20Z","closed_at":null,"merged_at":null,"merge_commit_sha":"3dcecf8f93058b25f5ab93a45c83e231ec399b87","assignee":{"login":"wilhuff","id":10249104,"node_id":"MDQ6VXNlcjEwMjQ5MTA0","avatar_url":"https://avatars1.githubusercontent.com/u/10249104?v=4","gravatar_id":"","url":"https://api.github.com/users/wilhuff","html_url":"https://github.com/wilhuff","followers_url":"https://api.github.com/users/wilhuff/followers","following_url":"https://api.github.com/users/wilhuff/following{/other_user}","gists_url":"https://api.github.com/users/wilhuff/gists{/gist_id}","starred_url":"https://api.github.com/users/wilhuff/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wilhuff/subscriptions","organizations_url":"https://api.github.com/users/wilhuff/orgs","repos_url":"https://api.github.com/users/wilhuff/repos","events_url":"https://api.github.com/users/wilhuff/events{/privacy}","received_events_url":"https://api.github.com/users/wilhuff/received_events","type":"User","site_admin":false},"assignees":[{"login":"wilhuff","id":10249104,"node_id":"MDQ6VXNlcjEwMjQ5MTA0","avatar_url":"https://avatars1.githubusercontent.com/u/10249104?v=4","gravatar_id":"","url":"https://api.github.com/users/wilhuff","html_url":"https://github.com/wilhuff","followers_url":"https://api.github.com/users/wilhuff/followers","following_url":"https://api.github.com/users/wilhuff/following{/other_user}","gists_url":"https://api.github.com/users/wilhuff/gists{/gist_id}","starred_url":"https://api.github.com/users/wilhuff/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wilhuff/subscriptions","organizations_url":"https://api.github.com/users/wilhuff/orgs","repos_url":"https://api.github.com/users/wilhuff/repos","events_url":"https://api.github.com/users/wilhuff/events{/privacy}","received_events_url":"https://api.github.com/users/wilhuff/received_events","type":"User","site_admin":false}],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":713434153,"node_id":"MDU6TGFiZWw3MTM0MzQxNTM=","url":"https://api.github.com/repos/firebase/firebase-ios-sdk/labels/Firestore","name":"Firestore","color":"c5def5","default":false},{"id":658858759,"node_id":"MDU6TGFiZWw2NTg4NTg3NTk=","url":"https://api.github.com/repos/firebase/firebase-ios-sdk/labels/cla:%20yes","name":"cla: yes","color":"ededed","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/pulls/1777/commits","review_comments_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/pulls/1777/comments","review_comment_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/pulls/comments{/number}","comments_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/issues/1777/comments","statuses_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/statuses/b1811629d6febdf16429c7ed5a8efd0cb21de92e","head":{"label":"firebase:wilhuff/build-protos","ref":"wilhuff/build-protos","sha":"b1811629d6febdf16429c7ed5a8efd0cb21de92e","user":{"login":"firebase","id":1335026,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzMzUwMjY=","avatar_url":"https://avatars2.githubusercontent.com/u/1335026?v=4","gravatar_id":"","url":"https://api.github.com/users/firebase","html_url":"https://github.com/firebase","followers_url":"https://api.github.com/users/firebase/followers","following_url":"https://api.github.com/users/firebase/following{/other_user}","gists_url":"https://api.github.com/users/firebase/gists{/gist_id}","starred_url":"https://api.github.com/users/firebase/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/firebase/subscriptions","organizations_url":"https://api.github.com/users/firebase/orgs","repos_url":"https://api.github.com/users/firebase/repos","events_url":"https://api.github.com/users/firebase/events{/privacy}","received_events_url":"https://api.github.com/users/firebase/received_events","type":"Organization","site_admin":false},"repo":{"id":89033556,"node_id":"MDEwOlJlcG9zaXRvcnk4OTAzMzU1Ng==","name":"firebase-ios-sdk","full_name":"firebase/firebase-ios-sdk","owner":{"login":"firebase","id":1335026,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzMzUwMjY=","avatar_url":"https://avatars2.githubusercontent.com/u/1335026?v=4","gravatar_id":"","url":"https://api.github.com/users/firebase","html_url":"https://github.com/firebase","followers_url":"https://api.github.com/users/firebase/followers","following_url":"https://api.github.com/users/firebase/following{/other_user}","gists_url":"https://api.github.com/users/firebase/gists{/gist_id}","starred_url":"https://api.github.com/users/firebase/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/firebase/subscriptions","organizations_url":"https://api.github.com/users/firebase/orgs","repos_url":"https://api.github.com/users/firebase/repos","events_url":"https://api.github.com/users/firebase/events{/privacy}","received_events_url":"https://api.github.com/users/firebase/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/firebase/firebase-ios-sdk","description":"Firebase iOS SDK","fork":false,"url":"https://api.github.com/repos/firebase/firebase-ios-sdk","forks_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/forks","keys_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/keys{/key_id}","collaborators_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/teams","hooks_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/hooks","issue_events_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/issues/events{/number}","events_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/events","assignees_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/assignees{/user}","branches_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/branches{/branch}","tags_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/tags","blobs_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/git/refs{/sha}","trees_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/git/trees{/sha}","statuses_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/statuses/{sha}","languages_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/languages","stargazers_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/stargazers","contributors_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/contributors","subscribers_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/subscribers","subscription_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/subscription","commits_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/commits{/sha}","git_commits_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/git/commits{/sha}","comments_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/comments{/number}","issue_comment_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/issues/comments{/number}","contents_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/contents/{+path}","compare_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/compare/{base}...{head}","merges_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/merges","archive_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/downloads","issues_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/issues{/number}","pulls_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/pulls{/number}","milestones_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/milestones{/number}","notifications_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/labels{/name}","releases_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/releases{/id}","deployments_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/deployments","created_at":"2017-04-22T00:26:50Z","updated_at":"2018-09-07T15:07:29Z","pushed_at":"2018-09-07T15:42:20Z","git_url":"git://github.com/firebase/firebase-ios-sdk.git","ssh_url":"git@github.com:firebase/firebase-ios-sdk.git","clone_url":"https://github.com/firebase/firebase-ios-sdk.git","svn_url":"https://github.com/firebase/firebase-ios-sdk","homepage":"https://firebase.google.com","size":12603,"stargazers_count":807,"watchers_count":807,"language":"Objective-C","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":166,"mirror_url":null,"archived":false,"open_issues_count":87,"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":166,"open_issues":87,"watchers":807,"default_branch":"master"}},"base":{"label":"firebase:firestore-protos-master","ref":"firestore-protos-master","sha":"e07e7b4d56e73f981a1a97378d42e68d0fe4af7f","user":{"login":"firebase","id":1335026,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzMzUwMjY=","avatar_url":"https://avatars2.githubusercontent.com/u/1335026?v=4","gravatar_id":"","url":"https://api.github.com/users/firebase","html_url":"https://github.com/firebase","followers_url":"https://api.github.com/users/firebase/followers","following_url":"https://api.github.com/users/firebase/following{/other_user}","gists_url":"https://api.github.com/users/firebase/gists{/gist_id}","starred_url":"https://api.github.com/users/firebase/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/firebase/subscriptions","organizations_url":"https://api.github.com/users/firebase/orgs","repos_url":"https://api.github.com/users/firebase/repos","events_url":"https://api.github.com/users/firebase/events{/privacy}","received_events_url":"https://api.github.com/users/firebase/received_events","type":"Organization","site_admin":false},"repo":{"id":89033556,"node_id":"MDEwOlJlcG9zaXRvcnk4OTAzMzU1Ng==","name":"firebase-ios-sdk","full_name":"firebase/firebase-ios-sdk","owner":{"login":"firebase","id":1335026,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzMzUwMjY=","avatar_url":"https://avatars2.githubusercontent.com/u/1335026?v=4","gravatar_id":"","url":"https://api.github.com/users/firebase","html_url":"https://github.com/firebase","followers_url":"https://api.github.com/users/firebase/followers","following_url":"https://api.github.com/users/firebase/following{/other_user}","gists_url":"https://api.github.com/users/firebase/gists{/gist_id}","starred_url":"https://api.github.com/users/firebase/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/firebase/subscriptions","organizations_url":"https://api.github.com/users/firebase/orgs","repos_url":"https://api.github.com/users/firebase/repos","events_url":"https://api.github.com/users/firebase/events{/privacy}","received_events_url":"https://api.github.com/users/firebase/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/firebase/firebase-ios-sdk","description":"Firebase iOS SDK","fork":false,"url":"https://api.github.com/repos/firebase/firebase-ios-sdk","forks_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/forks","keys_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/keys{/key_id}","collaborators_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/teams","hooks_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/hooks","issue_events_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/issues/events{/number}","events_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/events","assignees_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/assignees{/user}","branches_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/branches{/branch}","tags_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/tags","blobs_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/git/refs{/sha}","trees_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/git/trees{/sha}","statuses_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/statuses/{sha}","languages_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/languages","stargazers_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/stargazers","contributors_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/contributors","subscribers_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/subscribers","subscription_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/subscription","commits_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/commits{/sha}","git_commits_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/git/commits{/sha}","comments_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/comments{/number}","issue_comment_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/issues/comments{/number}","contents_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/contents/{+path}","compare_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/compare/{base}...{head}","merges_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/merges","archive_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/downloads","issues_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/issues{/number}","pulls_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/pulls{/number}","milestones_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/milestones{/number}","notifications_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/labels{/name}","releases_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/releases{/id}","deployments_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/deployments","created_at":"2017-04-22T00:26:50Z","updated_at":"2018-09-07T15:07:29Z","pushed_at":"2018-09-07T15:42:20Z","git_url":"git://github.com/firebase/firebase-ios-sdk.git","ssh_url":"git@github.com:firebase/firebase-ios-sdk.git","clone_url":"https://github.com/firebase/firebase-ios-sdk.git","svn_url":"https://github.com/firebase/firebase-ios-sdk","homepage":"https://firebase.google.com","size":12603,"stargazers_count":807,"watchers_count":807,"language":"Objective-C","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":166,"mirror_url":null,"archived":false,"open_issues_count":87,"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":166,"open_issues":87,"watchers":807,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/firebase/firebase-ios-sdk/pulls/1777"},"html":{"href":"https://github.com/firebase/firebase-ios-sdk/pull/1777"},"issue":{"href":"https://api.github.com/repos/firebase/firebase-ios-sdk/issues/1777"},"comments":{"href":"https://api.github.com/repos/firebase/firebase-ios-sdk/issues/1777/comments"},"review_comments":{"href":"https://api.github.com/repos/firebase/firebase-ios-sdk/pulls/1777/comments"},"review_comment":{"href":"https://api.github.com/repos/firebase/firebase-ios-sdk/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/firebase/firebase-ios-sdk/pulls/1777/commits"},"statuses":{"href":"https://api.github.com/repos/firebase/firebase-ios-sdk/statuses/b1811629d6febdf16429c7ed5a8efd0cb21de92e"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"wilhuff"}}