{"action":"created","comment":{"url":"https://api.github.com/repos/googleapis/toolkit/pulls/comments/64116207","id":64116207,"diff_hunk":"@@ -0,0 +1,427 @@\n+/* Copyright 2016 Google 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+package com.google.api.codegen.nodejs;\n+\n+import com.google.api.codegen.ApiConfig;\n+import com.google.api.codegen.GapicContext;\n+import com.google.api.codegen.MethodConfig;\n+import com.google.api.tools.framework.aspects.documentation.model.DocumentationUtil;\n+import com.google.api.tools.framework.aspects.documentation.model.ElementDocumentationAttribute;\n+import com.google.api.tools.framework.model.Field;\n+import com.google.api.tools.framework.model.Interface;\n+import com.google.api.tools.framework.model.MessageType;\n+import com.google.api.tools.framework.model.Method;\n+import com.google.api.tools.framework.model.Model;\n+import com.google.api.tools.framework.model.ProtoContainerElement;\n+import com.google.api.tools.framework.model.ProtoElement;\n+import com.google.api.tools.framework.model.ProtoFile;\n+import com.google.api.tools.framework.model.TypeRef;\n+import com.google.api.tools.framework.model.TypeRef.Cardinality;\n+import com.google.common.base.Joiner;\n+import com.google.common.base.Preconditions;\n+import com.google.common.base.Splitter;\n+import com.google.common.base.Strings;\n+import com.google.common.collect.ImmutableList;\n+import com.google.common.collect.ImmutableMap;\n+import com.google.common.collect.ImmutableSet;\n+import com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Type;\n+\n+import java.util.ArrayList;\n+import java.util.List;\n+\n+import javax.annotation.Nullable;\n+\n+/**\n+ * A GapicContext specialized for Node.JS.\n+ */\n+public class NodeJSGapicContext extends GapicContext implements NodeJSContext {\n+\n+  public NodeJSGapicContext(Model model, ApiConfig apiConfig) {\n+    super(model, apiConfig);\n+  }\n+\n+  // Snippet Helpers\n+  // ===============\n+\n+  public String filePath(ProtoFile file) {\n+    return file.getSimpleName().replace(\".proto\", \"_pb2.js\");\n+  }\n+\n+  /**\n+   * Return comments lines for a given proto element, extracted directly from the proto doc\n+   */\n+  public List<String> defaultComments(ProtoElement element) {\n+    if (!element.hasAttribute(ElementDocumentationAttribute.KEY)) {\n+      return ImmutableList.<String>of();\n+    }\n+    return convertToCommentedBlock(JSDocCommentFixer.jsdocify(\n+        DocumentationUtil.getScopedDescription(element)));\n+  }\n+\n+  /**\n+   * Returns type information for a field in YARD style.\n+   */\n+  private String fieldTypeCardinalityComment(Field field) {\n+    TypeRef type = field.getType();\n+\n+    String cardinalityComment = \"\";\n+    if (type.getCardinality() == Cardinality.REPEATED) {\n+      if (type.isMap()) {\n+        return \"Object\";\n+      } else {\n+        cardinalityComment = \"[]\";\n+      }\n+    }\n+    String typeComment = jsTypeName(field.getType());\n+    return String.format(\"%s%s\", typeComment, cardinalityComment);\n+  }\n+\n+  /**\n+   * Returns a JSDoc comment string for the field as a parameter to a function or\n+   * attribute of a message.\n+   */\n+  private String fieldParamComment(Field field, boolean isOptional) {\n+    String commentType = fieldTypeCardinalityComment(field);\n+    String fieldName = wrapIfKeywordOrBuiltIn(lowerUnderscoreToLowerCamel(field.getSimpleName()));\n+    if (isOptional) {\n+      fieldName = \"otherArgs.\" + fieldName;\n+    }\n+    return fieldComment(\n+        String.format(\"@param {%s} %s\", commentType, fieldName), field);\n+  }\n+\n+  private String fieldPropertyComment(Field field) {\n+    String commentType = fieldTypeCardinalityComment(field);\n+    String fieldName = wrapIfKeywordOrBuiltIn(field.getSimpleName());\n+    return fieldComment(\n+        String.format(\"@property {%s} %s\", commentType, fieldName), field);\n+  }\n+\n+  private String fieldComment(String comment, Field field) {\n+    String paramComment = DocumentationUtil.getScopedDescription(field);\n+    if (!Strings.isNullOrEmpty(paramComment)) {\n+      paramComment = JSDocCommentFixer.jsdocify(paramComment);\n+      comment += \"\\n  \" + paramComment.replaceAll(\"(\\\\r?\\\\n)\", \"\\n  \");\n+    }\n+    return comment + \"\\n\";\n+  }\n+\n+  /**\n+   * Return JSDoc return type string for the given method, or null if the return type is\n+   * nil.\n+   */\n+  @Nullable\n+  private String returnTypeComment(Method method) {\n+    MessageType returnMessageType = method.getOutputMessage();\n+    boolean isEmpty = returnMessageType.getFullName().equals(\"google.protobuf.Empty\");\n+\n+    String classInfo = jsTypeName(method.getOutputType());\n+    MethodConfig config = getApiConfig().getInterfaceConfig((Interface) method.getParent())\n+        .getMethodConfig(method);\n+\n+    String callbackType =\n+        isEmpty ? \"EmptyCallback\" : String.format(\"APICallback<%s>\", classInfo);\n+    String callbackComment = \"@param {?\" + callbackType + \"} callback\\n\"\n+        + \"  The function which will be called with the result of the API call.\";\n+    if (config.isPageStreaming()) {\n+      String resourceType = jsTypeName(config.getPageStreaming().getResourcesField().getType());\n+      return callbackComment + \"\\n@returns {?Stream<\" + resourceType + \">}\\n\"\n+          + \"  An object stream of \" + resourceType + \" instances unless\\n\"\n+          + \"  page streaming is disabled through the call options or callback\\n\"\n+          + \"  is specified. If page streaming is disabled or callback is specified,\\n\"\n+          + \"  this return a null and callback will be called with a single instance\\n\"\n+          + \"  of \" + classInfo + \".\";\n+    } else {\n+      return callbackComment;\n+    }\n+  }\n+\n+\n+  /**\n+   * Return comments lines for a given method, consisting of proto doc and parameter type\n+   * documentation.\n+   */\n+  public List<String> methodComments(Method msg) {\n+    MethodConfig config = getApiConfig().getInterfaceConfig((Interface) msg.getParent())\n+        .getMethodConfig(msg);\n+\n+    // Generate parameter types\n+    StringBuilder paramTypesBuilder = new StringBuilder();\n+    for (Field field : config.getRequiredFields()) {\n+      paramTypesBuilder.append(fieldParamComment(field, false));\n+    }\n+    Iterable<Field> optionalParams = config.getOptionalFields();\n+    if (optionalParams.iterator().hasNext()) {\n+      paramTypesBuilder.append(\"@param {?Object} otherArgs\\n\");\n+      for (Field field : optionalParams) {\n+        paramTypesBuilder.append(fieldParamComment(field, true));\n+      }\n+    }\n+    paramTypesBuilder.append(\"@param {?gax.CallOptions} options\\n\" +\n+                             \"  Overrides the default settings for this call, e.g, timeout,\\n\" +\n+                             \"  retries, etc.\");\n+    String paramTypes = paramTypesBuilder.toString();\n+\n+    String returnType = returnTypeComment(msg);\n+\n+    // Generate comment contents\n+    StringBuilder contentBuilder = new StringBuilder();\n+    if (msg.hasAttribute(ElementDocumentationAttribute.KEY)) {\n+      contentBuilder.append(\n+          JSDocCommentFixer.jsdocify(DocumentationUtil.getScopedDescription(msg)));\n+      if (!Strings.isNullOrEmpty(paramTypes)) {\n+        contentBuilder.append(\"\\n\\n\");\n+      }\n+    }\n+    contentBuilder.append(paramTypes);\n+    if (returnType != null) {\n+      contentBuilder.append(\"\\n\" + returnType);\n+    }\n+\n+    contentBuilder.append(\n+        \"\\n@throws an error if the RPC is aborted.\");\n+    return convertToCommentedBlock(contentBuilder.toString());\n+  }\n+\n+  /**\n+   * Return the list of messages within element which should be documented in NodeJS.\n+   */\n+  public ImmutableList<MessageType> filterDocumentingMessages(ProtoContainerElement element) {","path":"src/main/java/com/google/api/codegen/nodejs/NodeJSGapicContext.java","position":null,"original_position":201,"commit_id":"411ca272035c86bf8f1e0c46f2fc5a511c73f48a","original_commit_id":"df8519bb92179bf66cf55e37d86c514c28d7785b","user":{"login":"jmuk","id":816093,"avatar_url":"https://avatars.githubusercontent.com/u/816093?v=3","gravatar_id":"","url":"https://api.github.com/users/jmuk","html_url":"https://github.com/jmuk","followers_url":"https://api.github.com/users/jmuk/followers","following_url":"https://api.github.com/users/jmuk/following{/other_user}","gists_url":"https://api.github.com/users/jmuk/gists{/gist_id}","starred_url":"https://api.github.com/users/jmuk/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jmuk/subscriptions","organizations_url":"https://api.github.com/users/jmuk/orgs","repos_url":"https://api.github.com/users/jmuk/repos","events_url":"https://api.github.com/users/jmuk/events{/privacy}","received_events_url":"https://api.github.com/users/jmuk/received_events","type":"User","site_admin":false},"body":"well -- no. it was copied from RubyGapicContext and forgotten to be removed.","created_at":"2016-05-20T22:30:26Z","updated_at":"2016-05-20T22:30:27Z","html_url":"https://github.com/googleapis/toolkit/pull/135#discussion_r64116207","pull_request_url":"https://api.github.com/repos/googleapis/toolkit/pulls/135","_links":{"self":{"href":"https://api.github.com/repos/googleapis/toolkit/pulls/comments/64116207"},"html":{"href":"https://github.com/googleapis/toolkit/pull/135#discussion_r64116207"},"pull_request":{"href":"https://api.github.com/repos/googleapis/toolkit/pulls/135"}}},"pull_request":{"url":"https://api.github.com/repos/googleapis/toolkit/pulls/135","id":70784962,"html_url":"https://github.com/googleapis/toolkit/pull/135","diff_url":"https://github.com/googleapis/toolkit/pull/135.diff","patch_url":"https://github.com/googleapis/toolkit/pull/135.patch","issue_url":"https://api.github.com/repos/googleapis/toolkit/issues/135","number":135,"state":"open","locked":false,"title":"Introduce NodeJS Gapic code generator.","user":{"login":"jmuk","id":816093,"avatar_url":"https://avatars.githubusercontent.com/u/816093?v=3","gravatar_id":"","url":"https://api.github.com/users/jmuk","html_url":"https://github.com/jmuk","followers_url":"https://api.github.com/users/jmuk/followers","following_url":"https://api.github.com/users/jmuk/following{/other_user}","gists_url":"https://api.github.com/users/jmuk/gists{/gist_id}","starred_url":"https://api.github.com/users/jmuk/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jmuk/subscriptions","organizations_url":"https://api.github.com/users/jmuk/orgs","repos_url":"https://api.github.com/users/jmuk/repos","events_url":"https://api.github.com/users/jmuk/events{/privacy}","received_events_url":"https://api.github.com/users/jmuk/received_events","type":"User","site_admin":false},"body":"","created_at":"2016-05-20T00:10:38Z","updated_at":"2016-05-20T22:30:27Z","closed_at":null,"merged_at":null,"merge_commit_sha":"d526ece12263dd387cf9c53c0d28ceb792985d10","assignee":{"login":"geigerj","id":14222439,"avatar_url":"https://avatars.githubusercontent.com/u/14222439?v=3","gravatar_id":"","url":"https://api.github.com/users/geigerj","html_url":"https://github.com/geigerj","followers_url":"https://api.github.com/users/geigerj/followers","following_url":"https://api.github.com/users/geigerj/following{/other_user}","gists_url":"https://api.github.com/users/geigerj/gists{/gist_id}","starred_url":"https://api.github.com/users/geigerj/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/geigerj/subscriptions","organizations_url":"https://api.github.com/users/geigerj/orgs","repos_url":"https://api.github.com/users/geigerj/repos","events_url":"https://api.github.com/users/geigerj/events{/privacy}","received_events_url":"https://api.github.com/users/geigerj/received_events","type":"User","site_admin":false},"milestone":null,"commits_url":"https://api.github.com/repos/googleapis/toolkit/pulls/135/commits","review_comments_url":"https://api.github.com/repos/googleapis/toolkit/pulls/135/comments","review_comment_url":"https://api.github.com/repos/googleapis/toolkit/pulls/comments{/number}","comments_url":"https://api.github.com/repos/googleapis/toolkit/issues/135/comments","statuses_url":"https://api.github.com/repos/googleapis/toolkit/statuses/411ca272035c86bf8f1e0c46f2fc5a511c73f48a","head":{"label":"jmuk:nodejs","ref":"nodejs","sha":"411ca272035c86bf8f1e0c46f2fc5a511c73f48a","user":{"login":"jmuk","id":816093,"avatar_url":"https://avatars.githubusercontent.com/u/816093?v=3","gravatar_id":"","url":"https://api.github.com/users/jmuk","html_url":"https://github.com/jmuk","followers_url":"https://api.github.com/users/jmuk/followers","following_url":"https://api.github.com/users/jmuk/following{/other_user}","gists_url":"https://api.github.com/users/jmuk/gists{/gist_id}","starred_url":"https://api.github.com/users/jmuk/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jmuk/subscriptions","organizations_url":"https://api.github.com/users/jmuk/orgs","repos_url":"https://api.github.com/users/jmuk/repos","events_url":"https://api.github.com/users/jmuk/events{/privacy}","received_events_url":"https://api.github.com/users/jmuk/received_events","type":"User","site_admin":false},"repo":{"id":56792047,"name":"toolkit","full_name":"jmuk/toolkit","owner":{"login":"jmuk","id":816093,"avatar_url":"https://avatars.githubusercontent.com/u/816093?v=3","gravatar_id":"","url":"https://api.github.com/users/jmuk","html_url":"https://github.com/jmuk","followers_url":"https://api.github.com/users/jmuk/followers","following_url":"https://api.github.com/users/jmuk/following{/other_user}","gists_url":"https://api.github.com/users/jmuk/gists{/gist_id}","starred_url":"https://api.github.com/users/jmuk/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jmuk/subscriptions","organizations_url":"https://api.github.com/users/jmuk/orgs","repos_url":"https://api.github.com/users/jmuk/repos","events_url":"https://api.github.com/users/jmuk/events{/privacy}","received_events_url":"https://api.github.com/users/jmuk/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/jmuk/toolkit","description":"","fork":true,"url":"https://api.github.com/repos/jmuk/toolkit","forks_url":"https://api.github.com/repos/jmuk/toolkit/forks","keys_url":"https://api.github.com/repos/jmuk/toolkit/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jmuk/toolkit/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jmuk/toolkit/teams","hooks_url":"https://api.github.com/repos/jmuk/toolkit/hooks","issue_events_url":"https://api.github.com/repos/jmuk/toolkit/issues/events{/number}","events_url":"https://api.github.com/repos/jmuk/toolkit/events","assignees_url":"https://api.github.com/repos/jmuk/toolkit/assignees{/user}","branches_url":"https://api.github.com/repos/jmuk/toolkit/branches{/branch}","tags_url":"https://api.github.com/repos/jmuk/toolkit/tags","blobs_url":"https://api.github.com/repos/jmuk/toolkit/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jmuk/toolkit/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jmuk/toolkit/git/refs{/sha}","trees_url":"https://api.github.com/repos/jmuk/toolkit/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jmuk/toolkit/statuses/{sha}","languages_url":"https://api.github.com/repos/jmuk/toolkit/languages","stargazers_url":"https://api.github.com/repos/jmuk/toolkit/stargazers","contributors_url":"https://api.github.com/repos/jmuk/toolkit/contributors","subscribers_url":"https://api.github.com/repos/jmuk/toolkit/subscribers","subscription_url":"https://api.github.com/repos/jmuk/toolkit/subscription","commits_url":"https://api.github.com/repos/jmuk/toolkit/commits{/sha}","git_commits_url":"https://api.github.com/repos/jmuk/toolkit/git/commits{/sha}","comments_url":"https://api.github.com/repos/jmuk/toolkit/comments{/number}","issue_comment_url":"https://api.github.com/repos/jmuk/toolkit/issues/comments{/number}","contents_url":"https://api.github.com/repos/jmuk/toolkit/contents/{+path}","compare_url":"https://api.github.com/repos/jmuk/toolkit/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jmuk/toolkit/merges","archive_url":"https://api.github.com/repos/jmuk/toolkit/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jmuk/toolkit/downloads","issues_url":"https://api.github.com/repos/jmuk/toolkit/issues{/number}","pulls_url":"https://api.github.com/repos/jmuk/toolkit/pulls{/number}","milestones_url":"https://api.github.com/repos/jmuk/toolkit/milestones{/number}","notifications_url":"https://api.github.com/repos/jmuk/toolkit/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jmuk/toolkit/labels{/name}","releases_url":"https://api.github.com/repos/jmuk/toolkit/releases{/id}","deployments_url":"https://api.github.com/repos/jmuk/toolkit/deployments","created_at":"2016-04-21T17:10:04Z","updated_at":"2016-04-21T17:10:05Z","pushed_at":"2016-05-20T22:27:18Z","git_url":"git://github.com/jmuk/toolkit.git","ssh_url":"git@github.com:jmuk/toolkit.git","clone_url":"https://github.com/jmuk/toolkit.git","svn_url":"https://github.com/jmuk/toolkit","homepage":null,"size":2939,"stargazers_count":0,"watchers_count":0,"language":"Java","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"googleapis:master","ref":"master","sha":"5608270661ce63d846c6d7b0b73c0c42b7318c06","user":{"login":"googleapis","id":16785467,"avatar_url":"https://avatars.githubusercontent.com/u/16785467?v=3","gravatar_id":"","url":"https://api.github.com/users/googleapis","html_url":"https://github.com/googleapis","followers_url":"https://api.github.com/users/googleapis/followers","following_url":"https://api.github.com/users/googleapis/following{/other_user}","gists_url":"https://api.github.com/users/googleapis/gists{/gist_id}","starred_url":"https://api.github.com/users/googleapis/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/googleapis/subscriptions","organizations_url":"https://api.github.com/users/googleapis/orgs","repos_url":"https://api.github.com/users/googleapis/repos","events_url":"https://api.github.com/users/googleapis/events{/privacy}","received_events_url":"https://api.github.com/users/googleapis/received_events","type":"Organization","site_admin":false},"repo":{"id":56533838,"name":"toolkit","full_name":"googleapis/toolkit","owner":{"login":"googleapis","id":16785467,"avatar_url":"https://avatars.githubusercontent.com/u/16785467?v=3","gravatar_id":"","url":"https://api.github.com/users/googleapis","html_url":"https://github.com/googleapis","followers_url":"https://api.github.com/users/googleapis/followers","following_url":"https://api.github.com/users/googleapis/following{/other_user}","gists_url":"https://api.github.com/users/googleapis/gists{/gist_id}","starred_url":"https://api.github.com/users/googleapis/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/googleapis/subscriptions","organizations_url":"https://api.github.com/users/googleapis/orgs","repos_url":"https://api.github.com/users/googleapis/repos","events_url":"https://api.github.com/users/googleapis/events{/privacy}","received_events_url":"https://api.github.com/users/googleapis/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/googleapis/toolkit","description":"","fork":false,"url":"https://api.github.com/repos/googleapis/toolkit","forks_url":"https://api.github.com/repos/googleapis/toolkit/forks","keys_url":"https://api.github.com/repos/googleapis/toolkit/keys{/key_id}","collaborators_url":"https://api.github.com/repos/googleapis/toolkit/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/googleapis/toolkit/teams","hooks_url":"https://api.github.com/repos/googleapis/toolkit/hooks","issue_events_url":"https://api.github.com/repos/googleapis/toolkit/issues/events{/number}","events_url":"https://api.github.com/repos/googleapis/toolkit/events","assignees_url":"https://api.github.com/repos/googleapis/toolkit/assignees{/user}","branches_url":"https://api.github.com/repos/googleapis/toolkit/branches{/branch}","tags_url":"https://api.github.com/repos/googleapis/toolkit/tags","blobs_url":"https://api.github.com/repos/googleapis/toolkit/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/googleapis/toolkit/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/googleapis/toolkit/git/refs{/sha}","trees_url":"https://api.github.com/repos/googleapis/toolkit/git/trees{/sha}","statuses_url":"https://api.github.com/repos/googleapis/toolkit/statuses/{sha}","languages_url":"https://api.github.com/repos/googleapis/toolkit/languages","stargazers_url":"https://api.github.com/repos/googleapis/toolkit/stargazers","contributors_url":"https://api.github.com/repos/googleapis/toolkit/contributors","subscribers_url":"https://api.github.com/repos/googleapis/toolkit/subscribers","subscription_url":"https://api.github.com/repos/googleapis/toolkit/subscription","commits_url":"https://api.github.com/repos/googleapis/toolkit/commits{/sha}","git_commits_url":"https://api.github.com/repos/googleapis/toolkit/git/commits{/sha}","comments_url":"https://api.github.com/repos/googleapis/toolkit/comments{/number}","issue_comment_url":"https://api.github.com/repos/googleapis/toolkit/issues/comments{/number}","contents_url":"https://api.github.com/repos/googleapis/toolkit/contents/{+path}","compare_url":"https://api.github.com/repos/googleapis/toolkit/compare/{base}...{head}","merges_url":"https://api.github.com/repos/googleapis/toolkit/merges","archive_url":"https://api.github.com/repos/googleapis/toolkit/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/googleapis/toolkit/downloads","issues_url":"https://api.github.com/repos/googleapis/toolkit/issues{/number}","pulls_url":"https://api.github.com/repos/googleapis/toolkit/pulls{/number}","milestones_url":"https://api.github.com/repos/googleapis/toolkit/milestones{/number}","notifications_url":"https://api.github.com/repos/googleapis/toolkit/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/googleapis/toolkit/labels{/name}","releases_url":"https://api.github.com/repos/googleapis/toolkit/releases{/id}","deployments_url":"https://api.github.com/repos/googleapis/toolkit/deployments","created_at":"2016-04-18T18:58:04Z","updated_at":"2016-05-18T17:25:57Z","pushed_at":"2016-05-20T22:27:19Z","git_url":"git://github.com/googleapis/toolkit.git","ssh_url":"git@github.com:googleapis/toolkit.git","clone_url":"https://github.com/googleapis/toolkit.git","svn_url":"https://github.com/googleapis/toolkit","homepage":null,"size":3454,"stargazers_count":10,"watchers_count":10,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":13,"mirror_url":null,"open_issues_count":25,"forks":13,"open_issues":25,"watchers":10,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/googleapis/toolkit/pulls/135"},"html":{"href":"https://github.com/googleapis/toolkit/pull/135"},"issue":{"href":"https://api.github.com/repos/googleapis/toolkit/issues/135"},"comments":{"href":"https://api.github.com/repos/googleapis/toolkit/issues/135/comments"},"review_comments":{"href":"https://api.github.com/repos/googleapis/toolkit/pulls/135/comments"},"review_comment":{"href":"https://api.github.com/repos/googleapis/toolkit/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/googleapis/toolkit/pulls/135/commits"},"statuses":{"href":"https://api.github.com/repos/googleapis/toolkit/statuses/411ca272035c86bf8f1e0c46f2fc5a511c73f48a"}}}}
{"actor":{"display_login":"jmuk"}}