{"action":"created","comment":{"url":"https://api.github.com/repos/knative/eventing-sources/pulls/comments/243146346","pull_request_review_id":186836517,"id":243146346,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDI0MzE0NjM0Ng==","diff_hunk":"@@ -0,0 +1,169 @@\n+package main\n+\n+import (\n+\t\"encoding/json\"\n+\t\"log\"\n+\t\"net/http\"\n+\t\"os\"\n+\t\"os/signal\"\n+\t\"strconv\"\n+\t\"time\"\n+\n+\t\"github.com/Shopify/sarama\"\n+\tcluster \"github.com/bsm/sarama-cluster\"\n+\t\"github.com/google/uuid\"\n+\n+\t\"github.com/knative/eventing-sources/contrib/kafka/eventsource/pkg/eventsourceconfig\"\n+\t\"github.com/knative/pkg/cloudevents\"\n+)\n+\n+func main() {\n+\n+\teventsourceconfig := eventsourceconfig.GetConfig()\n+\tlog.Printf(\"BOOTSTRAP_SERVERS: %s\", eventsourceconfig.BootStrapServers)\n+\n+\t//Config\n+\tconfig := cluster.NewConfig()\n+\tconfig.Consumer.Return.Errors = true\n+\tconfig.Group.Return.Notifications = true\n+\tconfig.Net.MaxOpenRequests = int(eventsourceconfig.NetMaxOpenRequests)\n+\tconfig.Net.KeepAlive = time.Duration(eventsourceconfig.NetKeepAlive)\n+\tconfig.Net.SASL.Enable = eventsourceconfig.NetSaslEnable\n+\tconfig.Net.SASL.Handshake = eventsourceconfig.NetSaslHandshake\n+\tconfig.Net.SASL.User = eventsourceconfig.NetSaslUser\n+\tconfig.Net.SASL.Password = eventsourceconfig.NetSaslPassword\n+\tconfig.Consumer.MaxWaitTime = time.Duration(eventsourceconfig.ConsumerMaxWaitTime)\n+\tconfig.Consumer.MaxProcessingTime = time.Duration(eventsourceconfig.ConsumerMaxProcessingTime)\n+\tconfig.Consumer.Offsets.CommitInterval = time.Duration(eventsourceconfig.ConsumerOffsetsCommitInterval)\n+\tconfig.Consumer.Offsets.Retention = time.Duration(eventsourceconfig.ConsumerOffsetsRetention)\n+\tconfig.Consumer.Offsets.Retry.Max = int(eventsourceconfig.ConsumerOffsetsRetryMax)\n+\tconfig.ChannelBufferSize = int(eventsourceconfig.ChannelBufferSize)\n+\tconfig.Group.Session.Timeout = time.Duration(eventsourceconfig.GroupSessionTimeout)\n+\n+\tkafkaversion, err := sarama.ParseKafkaVersion(eventsourceconfig.KafkaVersion)\n+\tif err != nil {\n+\t\tlog.Println(\"Unsupported Kafka Version. Should be in format 2.0.0\")\n+\t\tlog.Printf(\"Defaulting to minimum supported version: %s\", kafkaversion)\n+\t}\n+\tconfig.Version = kafkaversion\n+\tlog.Printf(\"Setting Kafka version to: %s\", config.Version)\n+\n+\tconfig.Consumer.Offsets.Initial = sarama.OffsetNewest\n+\tif eventsourceconfig.ConsumerOffsetsInitial == \"OffsetOldest\" {\n+\t\tlog.Println(\"Setting to offsetOldest\")\n+\t\tconfig.Consumer.Offsets.Initial = sarama.OffsetOldest\n+\t}\n+\n+\tconfig.Group.PartitionStrategy = cluster.StrategyRange\n+\tif eventsourceconfig.GroupPartitionStrategy == \"RoundRobin\" {\n+\t\tconfig.Group.PartitionStrategy = cluster.StrategyRoundRobin\n+\t}\n+\n+\t// init consumer\n+\tbrokers := []string{eventsourceconfig.BootStrapServers}\n+\ttopics := []string{eventsourceconfig.KafkaTopic}\n+\n+\tconsumerGroupID := eventsourceconfig.ConsumerGroupID\n+\tif consumerGroupID == \"\" {\n+\t\tconsumerGroupID = uuid.New().String()\n+\t}\n+\tlog.Printf(\"Setting ConsumerGroupID to: %s\", consumerGroupID)\n+\n+\tconfig.Consumer.Return.Errors = false\n+\n+\tconsumer, err := cluster.NewConsumer(brokers, consumerGroupID, topics, config)\n+\tif err != nil {\n+\t\tpanic(err)\n+\t}\n+\tdefer consumer.Close()\n+\n+\t// trap SIGINT to trigger a shutdown.\n+\tsignals := make(chan os.Signal, 1)\n+\tsignal.Notify(signals, os.Interrupt)\n+\n+\t// consume notifications\n+\tgo func() {\n+\t\tfor ntf := range consumer.Notifications() {\n+\t\t\tlog.Printf(\"Rebalanced: %+v\\n\", ntf)\n+\t\t}\n+\t}()\n+\n+\t// consume messages, watch signals\n+\tfor {\n+\t\tselect {\n+\t\tcase msg, ok := <-consumer.Messages():\n+\t\t\tif ok {\n+\t\t\t\t// fmt.Fprintf(os.Stdout, \"%s/%d/%d\\t%s\\t%s\\n\", msg.Topic, msg.Partition, msg.Offset, msg.Key, msg.Value)\n+\t\t\t\tlog.Printf(\"Received %s\", msg.Value)\n+\n+\t\t\t\tvar jsonPayload map[string]interface{}\n+\t\t\t\terr := json.Unmarshal(msg.Value, &jsonPayload)\n+\t\t\t\tif err != nil {\n+\t\t\t\t\t\tlog.Printf(\"Unable to unmarshal message value: %s\", msg.Value)\n+\t\t\t\t\t\tlog.Printf(\"Error: %s\", err)\n+\t\t\t\t\t\t//todo: Fix error catching as above doesn't fire\n+\t\t\t\t\t\tposterr := postMessage(msg.Key, msg.Timestamp, eventsourceconfig.KafkaTopic, eventsourceconfig.Target, msg.Partition, msg.Offset, \"application/json\", msg.Value)\n+\t\t\t\t\t\tif posterr != nil{\n+\t\t\t\t\t\t\tconsumer.MarkOffset(msg, \"\") // mark message as processed\n+\t\t\t\t\t\t}else{\n+\t\t\t\t\t\t\tlog.Printf(\"Error posting message: %s\", err)\n+\t\t\t\t\t\t}\n+\t\n+\t\t\t\t} else {\n+\t\t\t\t\t//valid JSON message\n+\t\t\t\t\tposterr := postMessage(msg.Key, msg.Timestamp, eventsourceconfig.KafkaTopic, eventsourceconfig.Target, msg.Partition, msg.Offset, \"application/json\", jsonPayload)\n+\t\t\t\t\tif(posterr != nil){","path":"contrib/kafka/eventsource/cmd/eventsource/main.go","position":115,"original_position":115,"commit_id":"916f34afc4d21a34604985b44ffc8eda0d7f1c57","original_commit_id":"916f34afc4d21a34604985b44ffc8eda0d7f1c57","user":{"login":"yuzisun","id":7662095,"node_id":"MDQ6VXNlcjc2NjIwOTU=","avatar_url":"https://avatars0.githubusercontent.com/u/7662095?v=4","gravatar_id":"","url":"https://api.github.com/users/yuzisun","html_url":"https://github.com/yuzisun","followers_url":"https://api.github.com/users/yuzisun/followers","following_url":"https://api.github.com/users/yuzisun/following{/other_user}","gists_url":"https://api.github.com/users/yuzisun/gists{/gist_id}","starred_url":"https://api.github.com/users/yuzisun/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yuzisun/subscriptions","organizations_url":"https://api.github.com/users/yuzisun/orgs","repos_url":"https://api.github.com/users/yuzisun/repos","events_url":"https://api.github.com/users/yuzisun/events{/privacy}","received_events_url":"https://api.github.com/users/yuzisun/received_events","type":"User","site_admin":false},"body":"should here be `posters == nil` instead?","created_at":"2018-12-20T03:20:41Z","updated_at":"2018-12-20T03:20:51Z","html_url":"https://github.com/knative/eventing-sources/pull/148#discussion_r243146346","pull_request_url":"https://api.github.com/repos/knative/eventing-sources/pulls/148","author_association":"NONE","_links":{"self":{"href":"https://api.github.com/repos/knative/eventing-sources/pulls/comments/243146346"},"html":{"href":"https://github.com/knative/eventing-sources/pull/148#discussion_r243146346"},"pull_request":{"href":"https://api.github.com/repos/knative/eventing-sources/pulls/148"}}},"pull_request":{"url":"https://api.github.com/repos/knative/eventing-sources/pulls/148","id":236828832,"node_id":"MDExOlB1bGxSZXF1ZXN0MjM2ODI4ODMy","html_url":"https://github.com/knative/eventing-sources/pull/148","diff_url":"https://github.com/knative/eventing-sources/pull/148.diff","patch_url":"https://github.com/knative/eventing-sources/pull/148.patch","issue_url":"https://api.github.com/repos/knative/eventing-sources/issues/148","number":148,"state":"open","locked":false,"title":"Initial version of Kafka EventSource","user":{"login":"sjwoodman","id":522629,"node_id":"MDQ6VXNlcjUyMjYyOQ==","avatar_url":"https://avatars0.githubusercontent.com/u/522629?v=4","gravatar_id":"","url":"https://api.github.com/users/sjwoodman","html_url":"https://github.com/sjwoodman","followers_url":"https://api.github.com/users/sjwoodman/followers","following_url":"https://api.github.com/users/sjwoodman/following{/other_user}","gists_url":"https://api.github.com/users/sjwoodman/gists{/gist_id}","starred_url":"https://api.github.com/users/sjwoodman/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sjwoodman/subscriptions","organizations_url":"https://api.github.com/users/sjwoodman/orgs","repos_url":"https://api.github.com/users/sjwoodman/repos","events_url":"https://api.github.com/users/sjwoodman/events{/privacy}","received_events_url":"https://api.github.com/users/sjwoodman/received_events","type":"User","site_admin":false},"body":"Adds and EventSource that can consume messages from a Kafka Topic. It is configurable to consume all historical messages in the Topic or only new ones. \r\n\r\nI don't know if a /contrib directory is the best place to put 3rd party sources - If there are other suggestions, let me know.\r\n\r\nI'm not an experienced Go developer so there may well be better techniques - please comment and I'll update the PR. \r\n","created_at":"2018-12-07T10:56:26Z","updated_at":"2018-12-20T03:20:51Z","closed_at":null,"merged_at":null,"merge_commit_sha":"696c3690059cd8672400b29887574275840a19c8","assignee":null,"assignees":[],"requested_reviewers":[{"login":"grantr","id":680,"node_id":"MDQ6VXNlcjY4MA==","avatar_url":"https://avatars3.githubusercontent.com/u/680?v=4","gravatar_id":"","url":"https://api.github.com/users/grantr","html_url":"https://github.com/grantr","followers_url":"https://api.github.com/users/grantr/followers","following_url":"https://api.github.com/users/grantr/following{/other_user}","gists_url":"https://api.github.com/users/grantr/gists{/gist_id}","starred_url":"https://api.github.com/users/grantr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/grantr/subscriptions","organizations_url":"https://api.github.com/users/grantr/orgs","repos_url":"https://api.github.com/users/grantr/repos","events_url":"https://api.github.com/users/grantr/events{/privacy}","received_events_url":"https://api.github.com/users/grantr/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[{"id":1101329178,"node_id":"MDU6TGFiZWwxMTAxMzI5MTc4","url":"https://api.github.com/repos/knative/eventing-sources/labels/needs-ok-to-test","name":"needs-ok-to-test","color":"ededed","default":false},{"id":1097195145,"node_id":"MDU6TGFiZWwxMDk3MTk1MTQ1","url":"https://api.github.com/repos/knative/eventing-sources/labels/size/XXL","name":"size/XXL","color":"ededed","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/knative/eventing-sources/pulls/148/commits","review_comments_url":"https://api.github.com/repos/knative/eventing-sources/pulls/148/comments","review_comment_url":"https://api.github.com/repos/knative/eventing-sources/pulls/comments{/number}","comments_url":"https://api.github.com/repos/knative/eventing-sources/issues/148/comments","statuses_url":"https://api.github.com/repos/knative/eventing-sources/statuses/916f34afc4d21a34604985b44ffc8eda0d7f1c57","head":{"label":"sjwoodman:kafkaeventsource","ref":"kafkaeventsource","sha":"916f34afc4d21a34604985b44ffc8eda0d7f1c57","user":{"login":"sjwoodman","id":522629,"node_id":"MDQ6VXNlcjUyMjYyOQ==","avatar_url":"https://avatars0.githubusercontent.com/u/522629?v=4","gravatar_id":"","url":"https://api.github.com/users/sjwoodman","html_url":"https://github.com/sjwoodman","followers_url":"https://api.github.com/users/sjwoodman/followers","following_url":"https://api.github.com/users/sjwoodman/following{/other_user}","gists_url":"https://api.github.com/users/sjwoodman/gists{/gist_id}","starred_url":"https://api.github.com/users/sjwoodman/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sjwoodman/subscriptions","organizations_url":"https://api.github.com/users/sjwoodman/orgs","repos_url":"https://api.github.com/users/sjwoodman/repos","events_url":"https://api.github.com/users/sjwoodman/events{/privacy}","received_events_url":"https://api.github.com/users/sjwoodman/received_events","type":"User","site_admin":false},"repo":{"id":156360201,"node_id":"MDEwOlJlcG9zaXRvcnkxNTYzNjAyMDE=","name":"eventing-sources","full_name":"sjwoodman/eventing-sources","private":false,"owner":{"login":"sjwoodman","id":522629,"node_id":"MDQ6VXNlcjUyMjYyOQ==","avatar_url":"https://avatars0.githubusercontent.com/u/522629?v=4","gravatar_id":"","url":"https://api.github.com/users/sjwoodman","html_url":"https://github.com/sjwoodman","followers_url":"https://api.github.com/users/sjwoodman/followers","following_url":"https://api.github.com/users/sjwoodman/following{/other_user}","gists_url":"https://api.github.com/users/sjwoodman/gists{/gist_id}","starred_url":"https://api.github.com/users/sjwoodman/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sjwoodman/subscriptions","organizations_url":"https://api.github.com/users/sjwoodman/orgs","repos_url":"https://api.github.com/users/sjwoodman/repos","events_url":"https://api.github.com/users/sjwoodman/events{/privacy}","received_events_url":"https://api.github.com/users/sjwoodman/received_events","type":"User","site_admin":false},"html_url":"https://github.com/sjwoodman/eventing-sources","description":"Event Sources","fork":true,"url":"https://api.github.com/repos/sjwoodman/eventing-sources","forks_url":"https://api.github.com/repos/sjwoodman/eventing-sources/forks","keys_url":"https://api.github.com/repos/sjwoodman/eventing-sources/keys{/key_id}","collaborators_url":"https://api.github.com/repos/sjwoodman/eventing-sources/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/sjwoodman/eventing-sources/teams","hooks_url":"https://api.github.com/repos/sjwoodman/eventing-sources/hooks","issue_events_url":"https://api.github.com/repos/sjwoodman/eventing-sources/issues/events{/number}","events_url":"https://api.github.com/repos/sjwoodman/eventing-sources/events","assignees_url":"https://api.github.com/repos/sjwoodman/eventing-sources/assignees{/user}","branches_url":"https://api.github.com/repos/sjwoodman/eventing-sources/branches{/branch}","tags_url":"https://api.github.com/repos/sjwoodman/eventing-sources/tags","blobs_url":"https://api.github.com/repos/sjwoodman/eventing-sources/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/sjwoodman/eventing-sources/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/sjwoodman/eventing-sources/git/refs{/sha}","trees_url":"https://api.github.com/repos/sjwoodman/eventing-sources/git/trees{/sha}","statuses_url":"https://api.github.com/repos/sjwoodman/eventing-sources/statuses/{sha}","languages_url":"https://api.github.com/repos/sjwoodman/eventing-sources/languages","stargazers_url":"https://api.github.com/repos/sjwoodman/eventing-sources/stargazers","contributors_url":"https://api.github.com/repos/sjwoodman/eventing-sources/contributors","subscribers_url":"https://api.github.com/repos/sjwoodman/eventing-sources/subscribers","subscription_url":"https://api.github.com/repos/sjwoodman/eventing-sources/subscription","commits_url":"https://api.github.com/repos/sjwoodman/eventing-sources/commits{/sha}","git_commits_url":"https://api.github.com/repos/sjwoodman/eventing-sources/git/commits{/sha}","comments_url":"https://api.github.com/repos/sjwoodman/eventing-sources/comments{/number}","issue_comment_url":"https://api.github.com/repos/sjwoodman/eventing-sources/issues/comments{/number}","contents_url":"https://api.github.com/repos/sjwoodman/eventing-sources/contents/{+path}","compare_url":"https://api.github.com/repos/sjwoodman/eventing-sources/compare/{base}...{head}","merges_url":"https://api.github.com/repos/sjwoodman/eventing-sources/merges","archive_url":"https://api.github.com/repos/sjwoodman/eventing-sources/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/sjwoodman/eventing-sources/downloads","issues_url":"https://api.github.com/repos/sjwoodman/eventing-sources/issues{/number}","pulls_url":"https://api.github.com/repos/sjwoodman/eventing-sources/pulls{/number}","milestones_url":"https://api.github.com/repos/sjwoodman/eventing-sources/milestones{/number}","notifications_url":"https://api.github.com/repos/sjwoodman/eventing-sources/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/sjwoodman/eventing-sources/labels{/name}","releases_url":"https://api.github.com/repos/sjwoodman/eventing-sources/releases{/id}","deployments_url":"https://api.github.com/repos/sjwoodman/eventing-sources/deployments","created_at":"2018-11-06T09:39:11Z","updated_at":"2018-12-07T10:04:17Z","pushed_at":"2018-12-17T13:43:29Z","git_url":"git://github.com/sjwoodman/eventing-sources.git","ssh_url":"git@github.com:sjwoodman/eventing-sources.git","clone_url":"https://github.com/sjwoodman/eventing-sources.git","svn_url":"https://github.com/sjwoodman/eventing-sources","homepage":"","size":44084,"stargazers_count":0,"watchers_count":0,"language":"Go","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"knative:master","ref":"master","sha":"0363b4927dbde11a9b51e3497eee5a49532c00ee","user":{"login":"knative","id":35583233,"node_id":"MDEyOk9yZ2FuaXphdGlvbjM1NTgzMjMz","avatar_url":"https://avatars2.githubusercontent.com/u/35583233?v=4","gravatar_id":"","url":"https://api.github.com/users/knative","html_url":"https://github.com/knative","followers_url":"https://api.github.com/users/knative/followers","following_url":"https://api.github.com/users/knative/following{/other_user}","gists_url":"https://api.github.com/users/knative/gists{/gist_id}","starred_url":"https://api.github.com/users/knative/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/knative/subscriptions","organizations_url":"https://api.github.com/users/knative/orgs","repos_url":"https://api.github.com/users/knative/repos","events_url":"https://api.github.com/users/knative/events{/privacy}","received_events_url":"https://api.github.com/users/knative/received_events","type":"Organization","site_admin":false},"repo":{"id":153685000,"node_id":"MDEwOlJlcG9zaXRvcnkxNTM2ODUwMDA=","name":"eventing-sources","full_name":"knative/eventing-sources","private":false,"owner":{"login":"knative","id":35583233,"node_id":"MDEyOk9yZ2FuaXphdGlvbjM1NTgzMjMz","avatar_url":"https://avatars2.githubusercontent.com/u/35583233?v=4","gravatar_id":"","url":"https://api.github.com/users/knative","html_url":"https://github.com/knative","followers_url":"https://api.github.com/users/knative/followers","following_url":"https://api.github.com/users/knative/following{/other_user}","gists_url":"https://api.github.com/users/knative/gists{/gist_id}","starred_url":"https://api.github.com/users/knative/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/knative/subscriptions","organizations_url":"https://api.github.com/users/knative/orgs","repos_url":"https://api.github.com/users/knative/repos","events_url":"https://api.github.com/users/knative/events{/privacy}","received_events_url":"https://api.github.com/users/knative/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/knative/eventing-sources","description":"Event Sources","fork":false,"url":"https://api.github.com/repos/knative/eventing-sources","forks_url":"https://api.github.com/repos/knative/eventing-sources/forks","keys_url":"https://api.github.com/repos/knative/eventing-sources/keys{/key_id}","collaborators_url":"https://api.github.com/repos/knative/eventing-sources/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/knative/eventing-sources/teams","hooks_url":"https://api.github.com/repos/knative/eventing-sources/hooks","issue_events_url":"https://api.github.com/repos/knative/eventing-sources/issues/events{/number}","events_url":"https://api.github.com/repos/knative/eventing-sources/events","assignees_url":"https://api.github.com/repos/knative/eventing-sources/assignees{/user}","branches_url":"https://api.github.com/repos/knative/eventing-sources/branches{/branch}","tags_url":"https://api.github.com/repos/knative/eventing-sources/tags","blobs_url":"https://api.github.com/repos/knative/eventing-sources/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/knative/eventing-sources/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/knative/eventing-sources/git/refs{/sha}","trees_url":"https://api.github.com/repos/knative/eventing-sources/git/trees{/sha}","statuses_url":"https://api.github.com/repos/knative/eventing-sources/statuses/{sha}","languages_url":"https://api.github.com/repos/knative/eventing-sources/languages","stargazers_url":"https://api.github.com/repos/knative/eventing-sources/stargazers","contributors_url":"https://api.github.com/repos/knative/eventing-sources/contributors","subscribers_url":"https://api.github.com/repos/knative/eventing-sources/subscribers","subscription_url":"https://api.github.com/repos/knative/eventing-sources/subscription","commits_url":"https://api.github.com/repos/knative/eventing-sources/commits{/sha}","git_commits_url":"https://api.github.com/repos/knative/eventing-sources/git/commits{/sha}","comments_url":"https://api.github.com/repos/knative/eventing-sources/comments{/number}","issue_comment_url":"https://api.github.com/repos/knative/eventing-sources/issues/comments{/number}","contents_url":"https://api.github.com/repos/knative/eventing-sources/contents/{+path}","compare_url":"https://api.github.com/repos/knative/eventing-sources/compare/{base}...{head}","merges_url":"https://api.github.com/repos/knative/eventing-sources/merges","archive_url":"https://api.github.com/repos/knative/eventing-sources/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/knative/eventing-sources/downloads","issues_url":"https://api.github.com/repos/knative/eventing-sources/issues{/number}","pulls_url":"https://api.github.com/repos/knative/eventing-sources/pulls{/number}","milestones_url":"https://api.github.com/repos/knative/eventing-sources/milestones{/number}","notifications_url":"https://api.github.com/repos/knative/eventing-sources/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/knative/eventing-sources/labels{/name}","releases_url":"https://api.github.com/repos/knative/eventing-sources/releases{/id}","deployments_url":"https://api.github.com/repos/knative/eventing-sources/deployments","created_at":"2018-10-18T20:42:19Z","updated_at":"2018-12-19T18:51:39Z","pushed_at":"2018-12-19T18:51:36Z","git_url":"git://github.com/knative/eventing-sources.git","ssh_url":"git@github.com:knative/eventing-sources.git","clone_url":"https://github.com/knative/eventing-sources.git","svn_url":"https://github.com/knative/eventing-sources","homepage":"","size":44043,"stargazers_count":16,"watchers_count":16,"language":"Go","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":34,"mirror_url":null,"archived":false,"open_issues_count":42,"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":34,"open_issues":42,"watchers":16,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/knative/eventing-sources/pulls/148"},"html":{"href":"https://github.com/knative/eventing-sources/pull/148"},"issue":{"href":"https://api.github.com/repos/knative/eventing-sources/issues/148"},"comments":{"href":"https://api.github.com/repos/knative/eventing-sources/issues/148/comments"},"review_comments":{"href":"https://api.github.com/repos/knative/eventing-sources/pulls/148/comments"},"review_comment":{"href":"https://api.github.com/repos/knative/eventing-sources/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/knative/eventing-sources/pulls/148/commits"},"statuses":{"href":"https://api.github.com/repos/knative/eventing-sources/statuses/916f34afc4d21a34604985b44ffc8eda0d7f1c57"}},"author_association":"NONE"}}
{"actor":{"display_login":"yuzisun"}}