{"action":"created","comment":{"url":"https://api.github.com/repos/grpc/grpc/pulls/comments/223885552","pull_request_review_id":163098862,"id":223885552,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIyMzg4NTU1Mg==","diff_hunk":"@@ -0,0 +1,95 @@\n+/*\n+ *\n+ * Copyright 2018 gRPC authors.\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+\n+#import \"ChannelArgsUtil.h\"\n+\n+#include <grpc/support/alloc.h>\n+#include <grpc/support/string_util.h>\n+\n+static void *copy_pointer_arg(void *p) {\n+  // Add ref count to the object when making copy\n+  id obj = (__bridge id)p;\n+  return (__bridge_retained void *)obj;\n+}\n+\n+static void destroy_pointer_arg(void *p) {\n+  // Decrease ref count to the object when destroying\n+  CFRelease((CFTreeRef)p);\n+}\n+\n+static int cmp_pointer_arg(void *p, void *q) { return p == q; }\n+\n+static const grpc_arg_pointer_vtable objc_arg_vtable = {copy_pointer_arg, destroy_pointer_arg,\n+                                                        cmp_pointer_arg};\n+\n+void FreeChannelArgs(grpc_channel_args *channel_args) {\n+  for (size_t i = 0; i < channel_args->num_args; ++i) {\n+    grpc_arg *arg = &channel_args->args[i];\n+    gpr_free(arg->key);\n+    if (arg->type == GRPC_ARG_STRING) {\n+      gpr_free(arg->value.string);\n+    }\n+  }\n+  gpr_free(channel_args->args);\n+  gpr_free(channel_args);\n+}\n+\n+/**\n+ * Allocates a @c grpc_channel_args and populates it with the options specified in the\n+ * @c dictionary. Keys must be @c NSString. If the value responds to @c @selector(UTF8String) then\n+ * it will be mapped to @c GRPC_ARG_STRING. If not, it will be mapped to @c GRPC_ARG_INTEGER if the\n+ * value responds to @c @selector(intValue). Otherwise, an exception will be raised. The caller of\n+ * this function is responsible for calling @c freeChannelArgs on a non-NULL returned value.\n+ */\n+grpc_channel_args *BuildChannelArgs(NSDictionary *dictionary) {\n+  if (!dictionary) {\n+    return NULL;\n+  }\n+\n+  NSArray *keys = [dictionary allKeys];\n+  NSUInteger argCount = [keys count];\n+\n+  grpc_channel_args *channelArgs = gpr_malloc(sizeof(grpc_channel_args));\n+  channelArgs->num_args = argCount;\n+  channelArgs->args = gpr_malloc(argCount * sizeof(grpc_arg));\n+\n+  // TODO(kriswuollett) Check that keys adhere to GRPC core library requirements","path":"src/objective-c/GRPCClient/private/ChannelArgsUtil.m","position":71,"original_position":71,"commit_id":"309ba191525a96c5314e5762ecaa2fffbc9eccbb","original_commit_id":"309ba191525a96c5314e5762ecaa2fffbc9eccbb","user":{"login":"aharperg","id":38445398,"node_id":"MDQ6VXNlcjM4NDQ1Mzk4","avatar_url":"https://avatars3.githubusercontent.com/u/38445398?v=4","gravatar_id":"","url":"https://api.github.com/users/aharperg","html_url":"https://github.com/aharperg","followers_url":"https://api.github.com/users/aharperg/followers","following_url":"https://api.github.com/users/aharperg/following{/other_user}","gists_url":"https://api.github.com/users/aharperg/gists{/gist_id}","starred_url":"https://api.github.com/users/aharperg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aharperg/subscriptions","organizations_url":"https://api.github.com/users/aharperg/orgs","repos_url":"https://api.github.com/users/aharperg/repos","events_url":"https://api.github.com/users/aharperg/events{/privacy}","received_events_url":"https://api.github.com/users/aharperg/received_events","type":"User","site_admin":false},"body":"I think this comment is copied from before. Can we elaborate on what's required?","created_at":"2018-10-09T22:32:11Z","updated_at":"2018-10-09T22:54:39Z","html_url":"https://github.com/grpc/grpc/pull/16190#discussion_r223885552","pull_request_url":"https://api.github.com/repos/grpc/grpc/pulls/16190","author_association":"NONE","_links":{"self":{"href":"https://api.github.com/repos/grpc/grpc/pulls/comments/223885552"},"html":{"href":"https://github.com/grpc/grpc/pull/16190#discussion_r223885552"},"pull_request":{"href":"https://api.github.com/repos/grpc/grpc/pulls/16190"}}},"pull_request":{"url":"https://api.github.com/repos/grpc/grpc/pulls/16190","id":204975915,"node_id":"MDExOlB1bGxSZXF1ZXN0MjA0OTc1OTE1","html_url":"https://github.com/grpc/grpc/pull/16190","diff_url":"https://github.com/grpc/grpc/pull/16190.diff","patch_url":"https://github.com/grpc/grpc/pull/16190.patch","issue_url":"https://api.github.com/repos/grpc/grpc/issues/16190","number":16190,"state":"open","locked":false,"title":"Implement L38: gRPC Objective-C API Upgrade","user":{"login":"muxi","id":1054404,"node_id":"MDQ6VXNlcjEwNTQ0MDQ=","avatar_url":"https://avatars1.githubusercontent.com/u/1054404?v=4","gravatar_id":"","url":"https://api.github.com/users/muxi","html_url":"https://github.com/muxi","followers_url":"https://api.github.com/users/muxi/followers","following_url":"https://api.github.com/users/muxi/following{/other_user}","gists_url":"https://api.github.com/users/muxi/gists{/gist_id}","starred_url":"https://api.github.com/users/muxi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/muxi/subscriptions","organizations_url":"https://api.github.com/users/muxi/orgs","repos_url":"https://api.github.com/users/muxi/repos","events_url":"https://api.github.com/users/muxi/events{/privacy}","received_events_url":"https://api.github.com/users/muxi/received_events","type":"User","site_admin":false},"body":"Isolate gRPC Objective-C configurations into an individual class.\r\n\r\ncc: @aharperg","created_at":"2018-07-31T01:58:43Z","updated_at":"2018-10-09T22:54:38Z","closed_at":null,"merged_at":null,"merge_commit_sha":"284b7567283d8a62e6187b4908d539932f345787","assignee":{"login":"muxi","id":1054404,"node_id":"MDQ6VXNlcjEwNTQ0MDQ=","avatar_url":"https://avatars1.githubusercontent.com/u/1054404?v=4","gravatar_id":"","url":"https://api.github.com/users/muxi","html_url":"https://github.com/muxi","followers_url":"https://api.github.com/users/muxi/followers","following_url":"https://api.github.com/users/muxi/following{/other_user}","gists_url":"https://api.github.com/users/muxi/gists{/gist_id}","starred_url":"https://api.github.com/users/muxi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/muxi/subscriptions","organizations_url":"https://api.github.com/users/muxi/orgs","repos_url":"https://api.github.com/users/muxi/repos","events_url":"https://api.github.com/users/muxi/events{/privacy}","received_events_url":"https://api.github.com/users/muxi/received_events","type":"User","site_admin":false},"assignees":[{"login":"muxi","id":1054404,"node_id":"MDQ6VXNlcjEwNTQ0MDQ=","avatar_url":"https://avatars1.githubusercontent.com/u/1054404?v=4","gravatar_id":"","url":"https://api.github.com/users/muxi","html_url":"https://github.com/muxi","followers_url":"https://api.github.com/users/muxi/followers","following_url":"https://api.github.com/users/muxi/following{/other_user}","gists_url":"https://api.github.com/users/muxi/gists{/gist_id}","starred_url":"https://api.github.com/users/muxi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/muxi/subscriptions","organizations_url":"https://api.github.com/users/muxi/orgs","repos_url":"https://api.github.com/users/muxi/repos","events_url":"https://api.github.com/users/muxi/events{/privacy}","received_events_url":"https://api.github.com/users/muxi/received_events","type":"User","site_admin":false},{"login":"dapengzhang0","id":4779759,"node_id":"MDQ6VXNlcjQ3Nzk3NTk=","avatar_url":"https://avatars2.githubusercontent.com/u/4779759?v=4","gravatar_id":"","url":"https://api.github.com/users/dapengzhang0","html_url":"https://github.com/dapengzhang0","followers_url":"https://api.github.com/users/dapengzhang0/followers","following_url":"https://api.github.com/users/dapengzhang0/following{/other_user}","gists_url":"https://api.github.com/users/dapengzhang0/gists{/gist_id}","starred_url":"https://api.github.com/users/dapengzhang0/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dapengzhang0/subscriptions","organizations_url":"https://api.github.com/users/dapengzhang0/orgs","repos_url":"https://api.github.com/users/dapengzhang0/repos","events_url":"https://api.github.com/users/dapengzhang0/events{/privacy}","received_events_url":"https://api.github.com/users/dapengzhang0/received_events","type":"User","site_admin":false}],"requested_reviewers":[{"login":"dapengzhang0","id":4779759,"node_id":"MDQ6VXNlcjQ3Nzk3NTk=","avatar_url":"https://avatars2.githubusercontent.com/u/4779759?v=4","gravatar_id":"","url":"https://api.github.com/users/dapengzhang0","html_url":"https://github.com/dapengzhang0","followers_url":"https://api.github.com/users/dapengzhang0/followers","following_url":"https://api.github.com/users/dapengzhang0/following{/other_user}","gists_url":"https://api.github.com/users/dapengzhang0/gists{/gist_id}","starred_url":"https://api.github.com/users/dapengzhang0/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dapengzhang0/subscriptions","organizations_url":"https://api.github.com/users/dapengzhang0/orgs","repos_url":"https://api.github.com/users/dapengzhang0/repos","events_url":"https://api.github.com/users/dapengzhang0/events{/privacy}","received_events_url":"https://api.github.com/users/dapengzhang0/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[{"id":171080795,"node_id":"MDU6TGFiZWwxNzEwODA3OTU=","url":"https://api.github.com/repos/grpc/grpc/labels/lang/ObjC","name":"lang/ObjC","color":"fad8c7","default":false},{"id":961831639,"node_id":"MDU6TGFiZWw5NjE4MzE2Mzk=","url":"https://api.github.com/repos/grpc/grpc/labels/release%20notes:%20yes","name":"release notes: yes","color":"5319e7","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/grpc/grpc/pulls/16190/commits","review_comments_url":"https://api.github.com/repos/grpc/grpc/pulls/16190/comments","review_comment_url":"https://api.github.com/repos/grpc/grpc/pulls/comments{/number}","comments_url":"https://api.github.com/repos/grpc/grpc/issues/16190/comments","statuses_url":"https://api.github.com/repos/grpc/grpc/statuses/309ba191525a96c5314e5762ecaa2fffbc9eccbb","head":{"label":"muxi:config-isolation","ref":"config-isolation","sha":"309ba191525a96c5314e5762ecaa2fffbc9eccbb","user":{"login":"muxi","id":1054404,"node_id":"MDQ6VXNlcjEwNTQ0MDQ=","avatar_url":"https://avatars1.githubusercontent.com/u/1054404?v=4","gravatar_id":"","url":"https://api.github.com/users/muxi","html_url":"https://github.com/muxi","followers_url":"https://api.github.com/users/muxi/followers","following_url":"https://api.github.com/users/muxi/following{/other_user}","gists_url":"https://api.github.com/users/muxi/gists{/gist_id}","starred_url":"https://api.github.com/users/muxi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/muxi/subscriptions","organizations_url":"https://api.github.com/users/muxi/orgs","repos_url":"https://api.github.com/users/muxi/repos","events_url":"https://api.github.com/users/muxi/events{/privacy}","received_events_url":"https://api.github.com/users/muxi/received_events","type":"User","site_admin":false},"repo":{"id":61651647,"node_id":"MDEwOlJlcG9zaXRvcnk2MTY1MTY0Nw==","name":"grpc","full_name":"muxi/grpc","private":false,"owner":{"login":"muxi","id":1054404,"node_id":"MDQ6VXNlcjEwNTQ0MDQ=","avatar_url":"https://avatars1.githubusercontent.com/u/1054404?v=4","gravatar_id":"","url":"https://api.github.com/users/muxi","html_url":"https://github.com/muxi","followers_url":"https://api.github.com/users/muxi/followers","following_url":"https://api.github.com/users/muxi/following{/other_user}","gists_url":"https://api.github.com/users/muxi/gists{/gist_id}","starred_url":"https://api.github.com/users/muxi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/muxi/subscriptions","organizations_url":"https://api.github.com/users/muxi/orgs","repos_url":"https://api.github.com/users/muxi/repos","events_url":"https://api.github.com/users/muxi/events{/privacy}","received_events_url":"https://api.github.com/users/muxi/received_events","type":"User","site_admin":false},"html_url":"https://github.com/muxi/grpc","description":"The C based gRPC (C++, Node.js, Python, Ruby, Objective-C, PHP, C#)","fork":true,"url":"https://api.github.com/repos/muxi/grpc","forks_url":"https://api.github.com/repos/muxi/grpc/forks","keys_url":"https://api.github.com/repos/muxi/grpc/keys{/key_id}","collaborators_url":"https://api.github.com/repos/muxi/grpc/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/muxi/grpc/teams","hooks_url":"https://api.github.com/repos/muxi/grpc/hooks","issue_events_url":"https://api.github.com/repos/muxi/grpc/issues/events{/number}","events_url":"https://api.github.com/repos/muxi/grpc/events","assignees_url":"https://api.github.com/repos/muxi/grpc/assignees{/user}","branches_url":"https://api.github.com/repos/muxi/grpc/branches{/branch}","tags_url":"https://api.github.com/repos/muxi/grpc/tags","blobs_url":"https://api.github.com/repos/muxi/grpc/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/muxi/grpc/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/muxi/grpc/git/refs{/sha}","trees_url":"https://api.github.com/repos/muxi/grpc/git/trees{/sha}","statuses_url":"https://api.github.com/repos/muxi/grpc/statuses/{sha}","languages_url":"https://api.github.com/repos/muxi/grpc/languages","stargazers_url":"https://api.github.com/repos/muxi/grpc/stargazers","contributors_url":"https://api.github.com/repos/muxi/grpc/contributors","subscribers_url":"https://api.github.com/repos/muxi/grpc/subscribers","subscription_url":"https://api.github.com/repos/muxi/grpc/subscription","commits_url":"https://api.github.com/repos/muxi/grpc/commits{/sha}","git_commits_url":"https://api.github.com/repos/muxi/grpc/git/commits{/sha}","comments_url":"https://api.github.com/repos/muxi/grpc/comments{/number}","issue_comment_url":"https://api.github.com/repos/muxi/grpc/issues/comments{/number}","contents_url":"https://api.github.com/repos/muxi/grpc/contents/{+path}","compare_url":"https://api.github.com/repos/muxi/grpc/compare/{base}...{head}","merges_url":"https://api.github.com/repos/muxi/grpc/merges","archive_url":"https://api.github.com/repos/muxi/grpc/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/muxi/grpc/downloads","issues_url":"https://api.github.com/repos/muxi/grpc/issues{/number}","pulls_url":"https://api.github.com/repos/muxi/grpc/pulls{/number}","milestones_url":"https://api.github.com/repos/muxi/grpc/milestones{/number}","notifications_url":"https://api.github.com/repos/muxi/grpc/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/muxi/grpc/labels{/name}","releases_url":"https://api.github.com/repos/muxi/grpc/releases{/id}","deployments_url":"https://api.github.com/repos/muxi/grpc/deployments","created_at":"2016-06-21T17:00:36Z","updated_at":"2018-07-16T16:41:17Z","pushed_at":"2018-10-09T00:12:32Z","git_url":"git://github.com/muxi/grpc.git","ssh_url":"git@github.com:muxi/grpc.git","clone_url":"https://github.com/muxi/grpc.git","svn_url":"https://github.com/muxi/grpc","homepage":"","size":167436,"stargazers_count":0,"watchers_count":0,"language":"C++","has_issues":false,"has_projects":true,"has_downloads":false,"has_wiki":true,"has_pages":false,"forks_count":0,"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":0,"open_issues":1,"watchers":0,"default_branch":"master"}},"base":{"label":"grpc:master","ref":"master","sha":"af1b4d6b486e527497158e4f35c1003b2a48ea60","user":{"login":"grpc","id":7802525,"node_id":"MDEyOk9yZ2FuaXphdGlvbjc4MDI1MjU=","avatar_url":"https://avatars1.githubusercontent.com/u/7802525?v=4","gravatar_id":"","url":"https://api.github.com/users/grpc","html_url":"https://github.com/grpc","followers_url":"https://api.github.com/users/grpc/followers","following_url":"https://api.github.com/users/grpc/following{/other_user}","gists_url":"https://api.github.com/users/grpc/gists{/gist_id}","starred_url":"https://api.github.com/users/grpc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/grpc/subscriptions","organizations_url":"https://api.github.com/users/grpc/orgs","repos_url":"https://api.github.com/users/grpc/repos","events_url":"https://api.github.com/users/grpc/events{/privacy}","received_events_url":"https://api.github.com/users/grpc/received_events","type":"Organization","site_admin":false},"repo":{"id":27729880,"node_id":"MDEwOlJlcG9zaXRvcnkyNzcyOTg4MA==","name":"grpc","full_name":"grpc/grpc","private":false,"owner":{"login":"grpc","id":7802525,"node_id":"MDEyOk9yZ2FuaXphdGlvbjc4MDI1MjU=","avatar_url":"https://avatars1.githubusercontent.com/u/7802525?v=4","gravatar_id":"","url":"https://api.github.com/users/grpc","html_url":"https://github.com/grpc","followers_url":"https://api.github.com/users/grpc/followers","following_url":"https://api.github.com/users/grpc/following{/other_user}","gists_url":"https://api.github.com/users/grpc/gists{/gist_id}","starred_url":"https://api.github.com/users/grpc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/grpc/subscriptions","organizations_url":"https://api.github.com/users/grpc/orgs","repos_url":"https://api.github.com/users/grpc/repos","events_url":"https://api.github.com/users/grpc/events{/privacy}","received_events_url":"https://api.github.com/users/grpc/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/grpc/grpc","description":"The C based gRPC (C++, Python, Ruby, Objective-C, PHP, C#)","fork":false,"url":"https://api.github.com/repos/grpc/grpc","forks_url":"https://api.github.com/repos/grpc/grpc/forks","keys_url":"https://api.github.com/repos/grpc/grpc/keys{/key_id}","collaborators_url":"https://api.github.com/repos/grpc/grpc/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/grpc/grpc/teams","hooks_url":"https://api.github.com/repos/grpc/grpc/hooks","issue_events_url":"https://api.github.com/repos/grpc/grpc/issues/events{/number}","events_url":"https://api.github.com/repos/grpc/grpc/events","assignees_url":"https://api.github.com/repos/grpc/grpc/assignees{/user}","branches_url":"https://api.github.com/repos/grpc/grpc/branches{/branch}","tags_url":"https://api.github.com/repos/grpc/grpc/tags","blobs_url":"https://api.github.com/repos/grpc/grpc/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/grpc/grpc/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/grpc/grpc/git/refs{/sha}","trees_url":"https://api.github.com/repos/grpc/grpc/git/trees{/sha}","statuses_url":"https://api.github.com/repos/grpc/grpc/statuses/{sha}","languages_url":"https://api.github.com/repos/grpc/grpc/languages","stargazers_url":"https://api.github.com/repos/grpc/grpc/stargazers","contributors_url":"https://api.github.com/repos/grpc/grpc/contributors","subscribers_url":"https://api.github.com/repos/grpc/grpc/subscribers","subscription_url":"https://api.github.com/repos/grpc/grpc/subscription","commits_url":"https://api.github.com/repos/grpc/grpc/commits{/sha}","git_commits_url":"https://api.github.com/repos/grpc/grpc/git/commits{/sha}","comments_url":"https://api.github.com/repos/grpc/grpc/comments{/number}","issue_comment_url":"https://api.github.com/repos/grpc/grpc/issues/comments{/number}","contents_url":"https://api.github.com/repos/grpc/grpc/contents/{+path}","compare_url":"https://api.github.com/repos/grpc/grpc/compare/{base}...{head}","merges_url":"https://api.github.com/repos/grpc/grpc/merges","archive_url":"https://api.github.com/repos/grpc/grpc/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/grpc/grpc/downloads","issues_url":"https://api.github.com/repos/grpc/grpc/issues{/number}","pulls_url":"https://api.github.com/repos/grpc/grpc/pulls{/number}","milestones_url":"https://api.github.com/repos/grpc/grpc/milestones{/number}","notifications_url":"https://api.github.com/repos/grpc/grpc/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/grpc/grpc/labels{/name}","releases_url":"https://api.github.com/repos/grpc/grpc/releases{/id}","deployments_url":"https://api.github.com/repos/grpc/grpc/deployments","created_at":"2014-12-08T18:58:53Z","updated_at":"2018-10-09T22:32:52Z","pushed_at":"2018-10-09T22:32:05Z","git_url":"git://github.com/grpc/grpc.git","ssh_url":"git@github.com:grpc/grpc.git","clone_url":"https://github.com/grpc/grpc.git","svn_url":"https://github.com/grpc/grpc","homepage":"https://grpc.io","size":194532,"stargazers_count":17421,"watchers_count":17421,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":false,"has_wiki":true,"has_pages":true,"forks_count":3982,"mirror_url":null,"archived":false,"open_issues_count":1042,"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":3982,"open_issues":1042,"watchers":17421,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/grpc/grpc/pulls/16190"},"html":{"href":"https://github.com/grpc/grpc/pull/16190"},"issue":{"href":"https://api.github.com/repos/grpc/grpc/issues/16190"},"comments":{"href":"https://api.github.com/repos/grpc/grpc/issues/16190/comments"},"review_comments":{"href":"https://api.github.com/repos/grpc/grpc/pulls/16190/comments"},"review_comment":{"href":"https://api.github.com/repos/grpc/grpc/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/grpc/grpc/pulls/16190/commits"},"statuses":{"href":"https://api.github.com/repos/grpc/grpc/statuses/309ba191525a96c5314e5762ecaa2fffbc9eccbb"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"aharperg"}}