{"action":"created","comment":{"url":"https://api.github.com/repos/aws/aws-sdk-go/pulls/comments/190749986","pull_request_review_id":123196046,"id":190749986,"diff_hunk":"@@ -2,27 +2,399 @@\n \n package api\n \n-func (a *API) suppressEventStreams() {\n+import (\n+\t\"bytes\"\n+\t\"fmt\"\n+\t\"io\"\n+\t\"text/template\"\n+)\n+\n+// EventStreamAPI provides details about the event stream async API and\n+// associated EventStream shapes.\n+type EventStreamAPI struct {\n+\tName      string\n+\tOperation *Operation\n+\tShape     *Shape\n+\tInbound   *EventStream\n+\tOutbound  *EventStream\n+}\n+\n+// EventStream represents a single eventstream group (input/output) and the\n+// modeled events that are known for the stream.\n+type EventStream struct {\n+\tName   string\n+\tShape  *Shape\n+\tEvents []*Event\n+}\n+\n+// Event is a single EventStream event that can be sent or received in an\n+// EventStream.\n+type Event struct {\n+\tName  string\n+\tShape *Shape\n+\tFor   *EventStream\n+}\n+\n+// ShapeDoc returns the docstring for the EventStream API.\n+func (esAPI *EventStreamAPI) ShapeDoc() string {\n+\ttmpl := template.Must(template.New(\"eventStreamShapeDoc\").Parse(`\n+{{- $.Name }} provides handling of EventStreams for\n+the {{ $.Operation.ExportedName }} API. \n+{{- if $.Inbound }}\n+\n+Use this type to receive {{ $.Inbound.Name }} events. The events\n+can be read from the Events channel member.\n+\n+The events that can be received are:\n+{{ range $_, $event := $.Inbound.Events }}\n+    * {{ $event.Shape.ShapeName }}\n+{{- end }}\n+\n+{{- end }}\n+\n+{{- if $.Outbound }}\n+\n+Use this type to send {{ $.Outbound.Name }} events. The events \n+can be sent with the Send method.\n+\n+The events that can be sent are:\n+{{ range $_, $event := $.Outbound.Events -}}\n+    * {{ $event.Shape.ShapeName }}\n+{{- end }}\n+\n+{{- end }}`))\n+\n+\tvar w bytes.Buffer\n+\tif err := tmpl.Execute(&w, esAPI); err != nil {\n+\t\tpanic(fmt.Sprintf(\"failed to generate eventstream shape template for %v, %v\", esAPI.Name, err))\n+\t}\n+\n+\treturn commentify(w.String())\n+}\n+\n+func eventStreamAPIShapeRefDoc(refName string) string {\n+\treturn commentify(fmt.Sprintf(\"Use %s to use the API's stream.\", refName))\n+}\n+\n+func (a *API) setupEventStreams() {\n \tconst eventStreamMemberName = \"EventStream\"\n \n-\tfor name, op := range a.Operations {\n-\t\toutbound := hasEventStream(op.InputRef.Shape)\n-\t\tinbound := hasEventStream(op.OutputRef.Shape)\n+\tfor _, op := range a.Operations {\n+\t\toutbound := setupEventStream(op.InputRef.Shape)\n+\t\tinbound := setupEventStream(op.OutputRef.Shape)\n \n-\t\tif !(outbound || inbound) {\n+\t\tif outbound == nil && inbound == nil {\n \t\t\tcontinue\n \t\t}\n \n-\t\ta.removeOperation(name)\n+\t\tif outbound != nil {\n+\t\t\tpanic(fmt.Sprintf(\"Outbound stream support not implemented, %s, %s\",\n+\t\t\t\toutbound.Name, outbound.Shape.ShapeName))\n+\t\t}\n+\n+\t\teventStreamAPI := &EventStreamAPI{\n+\t\t\tName:      op.ExportedName + eventStreamMemberName,\n+\t\t\tOperation: op,\n+\t\t\tOutbound:  outbound,\n+\t\t\tInbound:   inbound,\n+\t\t}\n+\n+\t\tstreamShape := &Shape{\n+\t\t\tAPI:            a,\n+\t\t\tShapeName:      eventStreamAPI.Name,\n+\t\t\tDocumentation:  eventStreamAPI.ShapeDoc(),\n+\t\t\tType:           \"structure\",\n+\t\t\tEventStreamAPI: eventStreamAPI,\n+\t\t}\n+\t\tstreamShapeRef := &ShapeRef{\n+\t\t\tAPI:           a,\n+\t\t\tShapeName:     streamShape.ShapeName,\n+\t\t\tShape:         streamShape,\n+\t\t\tDocumentation: eventStreamAPIShapeRefDoc(eventStreamMemberName),\n+\t\t}\n+\t\tstreamShape.refs = []*ShapeRef{streamShapeRef}\n+\t\teventStreamAPI.Shape = streamShape\n+\n+\t\tif _, ok := op.OutputRef.Shape.MemberRefs[eventStreamMemberName]; ok {\n+\t\t\tpanic(fmt.Sprintf(\"shape ref already exists, %s.%s\",\n+\t\t\t\top.OutputRef.Shape.ShapeName, eventStreamMemberName))\n+\t\t}\n+\t\top.OutputRef.Shape.MemberRefs[eventStreamMemberName] = streamShapeRef\n+\t\top.OutputRef.Shape.EventStreamsMemberName = eventStreamMemberName\n+\t\tif _, ok := a.Shapes[streamShape.ShapeName]; ok {\n+\t\t\tpanic(\"shape already exists, \" + streamShape.ShapeName)\n+\t\t}\n+\t\ta.Shapes[streamShape.ShapeName] = streamShape\n+\n+\t\ta.HasEventStream = true\n \t}\n }\n \n-func hasEventStream(topShape *Shape) bool {\n-\tfor _, ref := range topShape.MemberRefs {\n-\t\tif ref.Shape.IsEventStream {\n-\t\t\treturn true\n+func setupEventStream(topShape *Shape) *EventStream {\n+\tvar eventStream *EventStream\n+\tfor refName, ref := range topShape.MemberRefs {\n+\t\tif !ref.Shape.IsEventStream {\n+\t\t\tcontinue\n+\t\t}\n+\t\tif eventStream != nil {\n+\t\t\tpanic(fmt.Sprintf(\"multiple shape ref eventstreams, %s, prev: %s\",\n+\t\t\t\trefName, eventStream.Name))\n+\t\t}\n+\n+\t\teventStream = &EventStream{\n+\t\t\tName:  ref.Shape.ShapeName,\n+\t\t\tShape: ref.Shape,\n \t\t}\n+\t\tfor _, eventRefName := range ref.Shape.MemberNames() {\n+\t\t\teventRef := ref.Shape.MemberRefs[eventRefName]\n+\t\t\tif !eventRef.Shape.IsEvent {\n+\t\t\t\tpanic(fmt.Sprintf(\"unexpected non-event member reference %s.%s\",\n+\t\t\t\t\tref.Shape.ShapeName, eventRefName))\n+\t\t\t}\n+\n+\t\t\tupdateEventPayloadRef(eventRef.Shape)","path":"private/model/api/eventstream.go","position":171,"original_position":164,"commit_id":"410a428ff3b1dcfa8f50262a0f34cd0cc72fde9e","original_commit_id":"84f42b313d510e32591390e9b9b31a8b152f72f8","user":{"login":"jasdel","id":961963,"avatar_url":"https://avatars3.githubusercontent.com/u/961963?v=4","gravatar_id":"","url":"https://api.github.com/users/jasdel","html_url":"https://github.com/jasdel","followers_url":"https://api.github.com/users/jasdel/followers","following_url":"https://api.github.com/users/jasdel/following{/other_user}","gists_url":"https://api.github.com/users/jasdel/gists{/gist_id}","starred_url":"https://api.github.com/users/jasdel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jasdel/subscriptions","organizations_url":"https://api.github.com/users/jasdel/orgs","repos_url":"https://api.github.com/users/jasdel/repos","events_url":"https://api.github.com/users/jasdel/events{/privacy}","received_events_url":"https://api.github.com/users/jasdel/received_events","type":"User","site_admin":false},"body":"the check for protocol should be removed as that is now caught in `API.setupEventStreams`.\r\n\r\nAs for the rest of the function. It only adds the location name to a Event shape's struct. For Events with explicit modeled payloads the LocationName needs to be set. If the event stream event uses implicit payload (no payload modeled directly) no tagging will be added.","created_at":"2018-05-24T22:35:51Z","updated_at":"2018-05-24T22:35:51Z","html_url":"https://github.com/aws/aws-sdk-go/pull/1941#discussion_r190749986","pull_request_url":"https://api.github.com/repos/aws/aws-sdk-go/pulls/1941","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/aws/aws-sdk-go/pulls/comments/190749986"},"html":{"href":"https://github.com/aws/aws-sdk-go/pull/1941#discussion_r190749986"},"pull_request":{"href":"https://api.github.com/repos/aws/aws-sdk-go/pulls/1941"}},"in_reply_to_id":190732435},"pull_request":{"url":"https://api.github.com/repos/aws/aws-sdk-go/pulls/1941","id":189159158,"html_url":"https://github.com/aws/aws-sdk-go/pull/1941","diff_url":"https://github.com/aws/aws-sdk-go/pull/1941.diff","patch_url":"https://github.com/aws/aws-sdk-go/pull/1941.patch","issue_url":"https://api.github.com/repos/aws/aws-sdk-go/issues/1941","number":1941,"state":"open","locked":false,"title":"Add support for EventStream based APIs (S3 SelectObjectContent)","user":{"login":"jasdel","id":961963,"avatar_url":"https://avatars3.githubusercontent.com/u/961963?v=4","gravatar_id":"","url":"https://api.github.com/users/jasdel","html_url":"https://github.com/jasdel","followers_url":"https://api.github.com/users/jasdel/followers","following_url":"https://api.github.com/users/jasdel/following{/other_user}","gists_url":"https://api.github.com/users/jasdel/gists{/gist_id}","starred_url":"https://api.github.com/users/jasdel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jasdel/subscriptions","organizations_url":"https://api.github.com/users/jasdel/orgs","repos_url":"https://api.github.com/users/jasdel/repos","events_url":"https://api.github.com/users/jasdel/events{/privacy}","received_events_url":"https://api.github.com/users/jasdel/received_events","type":"User","site_admin":false},"body":"Adds support for EventStream asynchronous APIs such as [S3 SelectObjectContent](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectSELECTContent.html). These APIs allow receiving multiple events asynchronously in the API response. These events are received by reading from a channel until that channel is closed, or the event stream is closed.\r\n\r\nUsing the S3 SelectObjectContent as an example you can read from the `Events` channel member of the `resp.EventStream` value. To interrupt the stream you can call the `resp.EventStream.Close()` method. A stream is stopped when `Close` is called, the service closes the connection on its side, or if a `Context` was used, and it is closed.\r\n\r\n```go\r\nresp, err := svc.SelectObjectContent(&params)\r\nif err != nil {\r\n    return fmt.Errorf(\"failed to make request, %v\", err)\r\n}\r\ndefer resp.EventStream.Close()\r\n\r\nfor event := range resp.EventStream.Events {\r\n    switch tv := event.(type) {\r\n    case *s3.RecordsEvent:\r\n         // process the selected records from the object.\r\n         processRecords(tv.Records)\r\n    case *StatsEvent:\r\n         fmt.Println(\"Processed\", tv.Details.BytesProcessed, \"bytes\")\r\n    case *s3.EndEven:\r\n         fmt.Println(\"SelectObjectContent completed\")\r\n    }\r\n}\r\n\r\nif err := resp.EventStream.Err(); err != nil {\r\n    return fmt.Errorf(\"failed to read from API stream, %v\", err)\r\n}\r\n\r\n```\r\n\r\nFix #1895 \r\n\r\nTODO:\r\n* [x] Add handling error type/message Event headers\r\n* [x] Add integration test.","created_at":"2018-05-19T00:04:17Z","updated_at":"2018-05-24T22:35:51Z","closed_at":null,"merged_at":null,"merge_commit_sha":"dddceca1fac350005b7d70bd790d9d78a969aa6e","assignee":{"login":"jasdel","id":961963,"avatar_url":"https://avatars3.githubusercontent.com/u/961963?v=4","gravatar_id":"","url":"https://api.github.com/users/jasdel","html_url":"https://github.com/jasdel","followers_url":"https://api.github.com/users/jasdel/followers","following_url":"https://api.github.com/users/jasdel/following{/other_user}","gists_url":"https://api.github.com/users/jasdel/gists{/gist_id}","starred_url":"https://api.github.com/users/jasdel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jasdel/subscriptions","organizations_url":"https://api.github.com/users/jasdel/orgs","repos_url":"https://api.github.com/users/jasdel/repos","events_url":"https://api.github.com/users/jasdel/events{/privacy}","received_events_url":"https://api.github.com/users/jasdel/received_events","type":"User","site_admin":false},"assignees":[{"login":"jasdel","id":961963,"avatar_url":"https://avatars3.githubusercontent.com/u/961963?v=4","gravatar_id":"","url":"https://api.github.com/users/jasdel","html_url":"https://github.com/jasdel","followers_url":"https://api.github.com/users/jasdel/followers","following_url":"https://api.github.com/users/jasdel/following{/other_user}","gists_url":"https://api.github.com/users/jasdel/gists{/gist_id}","starred_url":"https://api.github.com/users/jasdel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jasdel/subscriptions","organizations_url":"https://api.github.com/users/jasdel/orgs","repos_url":"https://api.github.com/users/jasdel/repos","events_url":"https://api.github.com/users/jasdel/events{/privacy}","received_events_url":"https://api.github.com/users/jasdel/received_events","type":"User","site_admin":false}],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":189158841,"url":"https://api.github.com/repos/aws/aws-sdk-go/labels/Review%20Needed","name":"Review Needed","color":"207de5","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/aws/aws-sdk-go/pulls/1941/commits","review_comments_url":"https://api.github.com/repos/aws/aws-sdk-go/pulls/1941/comments","review_comment_url":"https://api.github.com/repos/aws/aws-sdk-go/pulls/comments{/number}","comments_url":"https://api.github.com/repos/aws/aws-sdk-go/issues/1941/comments","statuses_url":"https://api.github.com/repos/aws/aws-sdk-go/statuses/410a428ff3b1dcfa8f50262a0f34cd0cc72fde9e","head":{"label":"jasdel:feature/EventStream","ref":"feature/EventStream","sha":"410a428ff3b1dcfa8f50262a0f34cd0cc72fde9e","user":{"login":"jasdel","id":961963,"avatar_url":"https://avatars3.githubusercontent.com/u/961963?v=4","gravatar_id":"","url":"https://api.github.com/users/jasdel","html_url":"https://github.com/jasdel","followers_url":"https://api.github.com/users/jasdel/followers","following_url":"https://api.github.com/users/jasdel/following{/other_user}","gists_url":"https://api.github.com/users/jasdel/gists{/gist_id}","starred_url":"https://api.github.com/users/jasdel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jasdel/subscriptions","organizations_url":"https://api.github.com/users/jasdel/orgs","repos_url":"https://api.github.com/users/jasdel/repos","events_url":"https://api.github.com/users/jasdel/events{/privacy}","received_events_url":"https://api.github.com/users/jasdel/received_events","type":"User","site_admin":false},"repo":{"id":56538390,"name":"aws-sdk-go","full_name":"jasdel/aws-sdk-go","owner":{"login":"jasdel","id":961963,"avatar_url":"https://avatars3.githubusercontent.com/u/961963?v=4","gravatar_id":"","url":"https://api.github.com/users/jasdel","html_url":"https://github.com/jasdel","followers_url":"https://api.github.com/users/jasdel/followers","following_url":"https://api.github.com/users/jasdel/following{/other_user}","gists_url":"https://api.github.com/users/jasdel/gists{/gist_id}","starred_url":"https://api.github.com/users/jasdel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jasdel/subscriptions","organizations_url":"https://api.github.com/users/jasdel/orgs","repos_url":"https://api.github.com/users/jasdel/repos","events_url":"https://api.github.com/users/jasdel/events{/privacy}","received_events_url":"https://api.github.com/users/jasdel/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/jasdel/aws-sdk-go","description":"AWS SDK for the Go programming language.","fork":true,"url":"https://api.github.com/repos/jasdel/aws-sdk-go","forks_url":"https://api.github.com/repos/jasdel/aws-sdk-go/forks","keys_url":"https://api.github.com/repos/jasdel/aws-sdk-go/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jasdel/aws-sdk-go/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jasdel/aws-sdk-go/teams","hooks_url":"https://api.github.com/repos/jasdel/aws-sdk-go/hooks","issue_events_url":"https://api.github.com/repos/jasdel/aws-sdk-go/issues/events{/number}","events_url":"https://api.github.com/repos/jasdel/aws-sdk-go/events","assignees_url":"https://api.github.com/repos/jasdel/aws-sdk-go/assignees{/user}","branches_url":"https://api.github.com/repos/jasdel/aws-sdk-go/branches{/branch}","tags_url":"https://api.github.com/repos/jasdel/aws-sdk-go/tags","blobs_url":"https://api.github.com/repos/jasdel/aws-sdk-go/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jasdel/aws-sdk-go/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jasdel/aws-sdk-go/git/refs{/sha}","trees_url":"https://api.github.com/repos/jasdel/aws-sdk-go/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jasdel/aws-sdk-go/statuses/{sha}","languages_url":"https://api.github.com/repos/jasdel/aws-sdk-go/languages","stargazers_url":"https://api.github.com/repos/jasdel/aws-sdk-go/stargazers","contributors_url":"https://api.github.com/repos/jasdel/aws-sdk-go/contributors","subscribers_url":"https://api.github.com/repos/jasdel/aws-sdk-go/subscribers","subscription_url":"https://api.github.com/repos/jasdel/aws-sdk-go/subscription","commits_url":"https://api.github.com/repos/jasdel/aws-sdk-go/commits{/sha}","git_commits_url":"https://api.github.com/repos/jasdel/aws-sdk-go/git/commits{/sha}","comments_url":"https://api.github.com/repos/jasdel/aws-sdk-go/comments{/number}","issue_comment_url":"https://api.github.com/repos/jasdel/aws-sdk-go/issues/comments{/number}","contents_url":"https://api.github.com/repos/jasdel/aws-sdk-go/contents/{+path}","compare_url":"https://api.github.com/repos/jasdel/aws-sdk-go/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jasdel/aws-sdk-go/merges","archive_url":"https://api.github.com/repos/jasdel/aws-sdk-go/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jasdel/aws-sdk-go/downloads","issues_url":"https://api.github.com/repos/jasdel/aws-sdk-go/issues{/number}","pulls_url":"https://api.github.com/repos/jasdel/aws-sdk-go/pulls{/number}","milestones_url":"https://api.github.com/repos/jasdel/aws-sdk-go/milestones{/number}","notifications_url":"https://api.github.com/repos/jasdel/aws-sdk-go/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jasdel/aws-sdk-go/labels{/name}","releases_url":"https://api.github.com/repos/jasdel/aws-sdk-go/releases{/id}","deployments_url":"https://api.github.com/repos/jasdel/aws-sdk-go/deployments","created_at":"2016-04-18T20:07:44Z","updated_at":"2016-04-18T20:07:47Z","pushed_at":"2018-05-24T22:09:10Z","git_url":"git://github.com/jasdel/aws-sdk-go.git","ssh_url":"git@github.com:jasdel/aws-sdk-go.git","clone_url":"https://github.com/jasdel/aws-sdk-go.git","svn_url":"https://github.com/jasdel/aws-sdk-go","homepage":"http://aws.amazon.com/sdk-for-go/","size":54282,"stargazers_count":0,"watchers_count":0,"language":"Go","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"},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"aws:master","ref":"master","sha":"885bec707eabb8594f9a1f08bdd12d683c074d5c","user":{"login":"aws","id":2232217,"avatar_url":"https://avatars3.githubusercontent.com/u/2232217?v=4","gravatar_id":"","url":"https://api.github.com/users/aws","html_url":"https://github.com/aws","followers_url":"https://api.github.com/users/aws/followers","following_url":"https://api.github.com/users/aws/following{/other_user}","gists_url":"https://api.github.com/users/aws/gists{/gist_id}","starred_url":"https://api.github.com/users/aws/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aws/subscriptions","organizations_url":"https://api.github.com/users/aws/orgs","repos_url":"https://api.github.com/users/aws/repos","events_url":"https://api.github.com/users/aws/events{/privacy}","received_events_url":"https://api.github.com/users/aws/received_events","type":"Organization","site_admin":false},"repo":{"id":27576132,"name":"aws-sdk-go","full_name":"aws/aws-sdk-go","owner":{"login":"aws","id":2232217,"avatar_url":"https://avatars3.githubusercontent.com/u/2232217?v=4","gravatar_id":"","url":"https://api.github.com/users/aws","html_url":"https://github.com/aws","followers_url":"https://api.github.com/users/aws/followers","following_url":"https://api.github.com/users/aws/following{/other_user}","gists_url":"https://api.github.com/users/aws/gists{/gist_id}","starred_url":"https://api.github.com/users/aws/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aws/subscriptions","organizations_url":"https://api.github.com/users/aws/orgs","repos_url":"https://api.github.com/users/aws/repos","events_url":"https://api.github.com/users/aws/events{/privacy}","received_events_url":"https://api.github.com/users/aws/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/aws/aws-sdk-go","description":"AWS SDK for the Go programming language.","fork":false,"url":"https://api.github.com/repos/aws/aws-sdk-go","forks_url":"https://api.github.com/repos/aws/aws-sdk-go/forks","keys_url":"https://api.github.com/repos/aws/aws-sdk-go/keys{/key_id}","collaborators_url":"https://api.github.com/repos/aws/aws-sdk-go/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/aws/aws-sdk-go/teams","hooks_url":"https://api.github.com/repos/aws/aws-sdk-go/hooks","issue_events_url":"https://api.github.com/repos/aws/aws-sdk-go/issues/events{/number}","events_url":"https://api.github.com/repos/aws/aws-sdk-go/events","assignees_url":"https://api.github.com/repos/aws/aws-sdk-go/assignees{/user}","branches_url":"https://api.github.com/repos/aws/aws-sdk-go/branches{/branch}","tags_url":"https://api.github.com/repos/aws/aws-sdk-go/tags","blobs_url":"https://api.github.com/repos/aws/aws-sdk-go/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/aws/aws-sdk-go/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/aws/aws-sdk-go/git/refs{/sha}","trees_url":"https://api.github.com/repos/aws/aws-sdk-go/git/trees{/sha}","statuses_url":"https://api.github.com/repos/aws/aws-sdk-go/statuses/{sha}","languages_url":"https://api.github.com/repos/aws/aws-sdk-go/languages","stargazers_url":"https://api.github.com/repos/aws/aws-sdk-go/stargazers","contributors_url":"https://api.github.com/repos/aws/aws-sdk-go/contributors","subscribers_url":"https://api.github.com/repos/aws/aws-sdk-go/subscribers","subscription_url":"https://api.github.com/repos/aws/aws-sdk-go/subscription","commits_url":"https://api.github.com/repos/aws/aws-sdk-go/commits{/sha}","git_commits_url":"https://api.github.com/repos/aws/aws-sdk-go/git/commits{/sha}","comments_url":"https://api.github.com/repos/aws/aws-sdk-go/comments{/number}","issue_comment_url":"https://api.github.com/repos/aws/aws-sdk-go/issues/comments{/number}","contents_url":"https://api.github.com/repos/aws/aws-sdk-go/contents/{+path}","compare_url":"https://api.github.com/repos/aws/aws-sdk-go/compare/{base}...{head}","merges_url":"https://api.github.com/repos/aws/aws-sdk-go/merges","archive_url":"https://api.github.com/repos/aws/aws-sdk-go/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/aws/aws-sdk-go/downloads","issues_url":"https://api.github.com/repos/aws/aws-sdk-go/issues{/number}","pulls_url":"https://api.github.com/repos/aws/aws-sdk-go/pulls{/number}","milestones_url":"https://api.github.com/repos/aws/aws-sdk-go/milestones{/number}","notifications_url":"https://api.github.com/repos/aws/aws-sdk-go/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/aws/aws-sdk-go/labels{/name}","releases_url":"https://api.github.com/repos/aws/aws-sdk-go/releases{/id}","deployments_url":"https://api.github.com/repos/aws/aws-sdk-go/deployments","created_at":"2014-12-05T05:29:41Z","updated_at":"2018-05-24T22:06:51Z","pushed_at":"2018-05-24T22:09:12Z","git_url":"git://github.com/aws/aws-sdk-go.git","ssh_url":"git@github.com:aws/aws-sdk-go.git","clone_url":"https://github.com/aws/aws-sdk-go.git","svn_url":"https://github.com/aws/aws-sdk-go","homepage":"http://aws.amazon.com/sdk-for-go/","size":53662,"stargazers_count":3984,"watchers_count":3984,"language":"Go","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":919,"mirror_url":null,"archived":false,"open_issues_count":96,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0"},"forks":919,"open_issues":96,"watchers":3984,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/aws/aws-sdk-go/pulls/1941"},"html":{"href":"https://github.com/aws/aws-sdk-go/pull/1941"},"issue":{"href":"https://api.github.com/repos/aws/aws-sdk-go/issues/1941"},"comments":{"href":"https://api.github.com/repos/aws/aws-sdk-go/issues/1941/comments"},"review_comments":{"href":"https://api.github.com/repos/aws/aws-sdk-go/pulls/1941/comments"},"review_comment":{"href":"https://api.github.com/repos/aws/aws-sdk-go/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/aws/aws-sdk-go/pulls/1941/commits"},"statuses":{"href":"https://api.github.com/repos/aws/aws-sdk-go/statuses/410a428ff3b1dcfa8f50262a0f34cd0cc72fde9e"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"jasdel"}}