{"action":"created","comment":{"url":"https://api.github.com/repos/infobloxopen/go-trees/pulls/comments/216985466","pull_request_review_id":154592051,"id":216985466,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIxNjk4NTQ2Ng==","diff_hunk":"@@ -0,0 +1,272 @@\n+// Package domain provides functions to parse and handle domain names.\n+package domain\n+\n+import (\n+\t\"encoding/binary\"\n+\t\"errors\"\n+\t\"math\"\n+)\n+\n+var (\n+\t// ErrLabelTooLong is returned when one of domain labels has more than 63 characters.\n+\tErrLabelTooLong = errors.New(\"label too long\")\n+\t// ErrEmptyLabel indicates that domain name contains empty label.\n+\tErrEmptyLabel = errors.New(\"empty label\")\n+\t// ErrNameTooLong is returned when domain name has more than 255 characters.\n+\tErrNameTooLong = errors.New(\"name too long\")\n+\t// ErrInvalidEscape is returned for invalid escape sequence.\n+\tErrInvalidEscape = errors.New(\"invalid escape sequence\")\n+)\n+\n+// Name is a structure which represents domain name.\n+type Name struct {\n+\th string\n+\tn int\n+\tc []int64\n+}\n+\n+const (\n+\t// MaxName is maximum number of bytes for whole domain name.\n+\tMaxName = 255\n+\t// MaxLabels is maximum number of labels domain name can consist of.\n+\tMaxLabels = MaxName / 2\n+\t// MaxLabel is maximim number of bytes for single label.\n+\tMaxLabel = 63\n+\n+\tuInt64Size = 8\n+)\n+\n+const (\n+\tescRegular = iota\n+\tescFirstChar\n+\tescSecondDigit\n+\tescThirdDigit\n+)\n+\n+func MakeNameFromString(s string) (Name, error) {\n+\tout := Name{h: s}\n+\tif len(s) <= 0 || s == \".\" {\n+\t\treturn out, nil\n+\t}\n+\n+\tvar (\n+\t\tfragment [uInt64Size]byte\n+\t\tzeros    [uInt64Size]byte\n+\t\tlabel    [(MaxLabel + 1) / uInt64Size]int64\n+\t\tname     [MaxLabels]int64\n+\t)\n+\n+\tn := 0\n+\tj := 1\n+\tk := 0\n+\tcount := 1\n+\tesc := escRegular\n+\tcode := 0\n+\tfor i := 0; i < len(s); i++ {\n+\t\tb := s[i]\n+\t\tswitch esc {\n+\t\tcase escRegular:\n+\t\t\tswitch b {\n+\t\t\tdefault:\n+\t\t\t\tif b >= 'a' && b <= 'z' {\n+\t\t\t\t\tb &= 0xdf\n+\t\t\t\t}\n+\n+\t\t\t\tfragment[j] = b\n+\t\t\t\tj++\n+\n+\t\t\t\tcount++\n+\t\t\t\tif count > MaxName {\n+\t\t\t\t\treturn out, ErrNameTooLong\n+\t\t\t\t}\n+\n+\t\t\t\tif j >= len(fragment) {\n+\t\t\t\t\tif n >= len(label) {\n+\t\t\t\t\t\treturn out, ErrLabelTooLong\n+\t\t\t\t\t}\n+\n+\t\t\t\t\tlabel[n] = int64(binary.LittleEndian.Uint64(fragment[:]))\n+\t\t\t\t\tn++\n+\t\t\t\t\tj = 0\n+\t\t\t\t}\n+\n+\t\t\tcase '.':\n+\t\t\t\tif n < 1 && j <= 1 {\n+\t\t\t\t\treturn out, ErrEmptyLabel\n+\t\t\t\t}\n+\n+\t\t\t\tif j > 0 {\n+\t\t\t\t\tif n >= len(label) {\n+\t\t\t\t\t\treturn out, ErrLabelTooLong\n+\t\t\t\t\t}\n+\n+\t\t\t\t\tcopy(fragment[j:], zeros[:])\n+\n+\t\t\t\t\tlabel[n] = int64(binary.LittleEndian.Uint64(fragment[:]))\n+\t\t\t\t\tn++\n+\t\t\t\t}\n+\n+\t\t\t\tlabel[0] = int64(uint64(label[0]) | uint64(n) | uint64(j<<4))\n+\n+\t\t\t\tj = 1\n+\t\t\t\tcount++\n+\n+\t\t\t\tcopy(name[k:], label[:n])\n+\t\t\t\tout.n++\n+\t\t\t\tk += n\n+\n+\t\t\t\tn = 0\n+\t\t\t\tfragment[0] = 0\n+\n+\t\t\tcase '\\\\':\n+\t\t\t\tesc = escFirstChar\n+\t\t\t}\n+\n+\t\tcase escFirstChar:\n+\t\t\tif b < '0' || b > '9' {\n+\t\t\t\tesc = escRegular\n+\n+\t\t\t\tif b >= 'a' && b <= 'z' {\n+\t\t\t\t\tb &= 0xdf\n+\t\t\t\t}\n+\n+\t\t\t\tfragment[j] = b\n+\t\t\t\tj++\n+\n+\t\t\t\tcount++\n+\t\t\t\tif count > MaxName {\n+\t\t\t\t\treturn out, ErrNameTooLong\n+\t\t\t\t}\n+\n+\t\t\t\tif j >= len(fragment) {\n+\t\t\t\t\tif n >= len(label) {\n+\t\t\t\t\t\treturn out, ErrLabelTooLong\n+\t\t\t\t\t}\n+\n+\t\t\t\t\tlabel[n] = int64(binary.LittleEndian.Uint64(fragment[:]))\n+\t\t\t\t\tn++\n+\t\t\t\t\tj = 0\n+\t\t\t\t}\n+\n+\t\t\t\tbreak\n+\t\t\t}\n+\n+\t\t\tesc = escSecondDigit\n+\n+\t\t\tcode = int(b-'0') * 100\n+\t\t\tif code > math.MaxUint8 {\n+\t\t\t\treturn out, ErrInvalidEscape\n+\t\t\t}\n+\n+\t\tcase escSecondDigit:\n+\t\t\tif b < '0' || b > '9' {\n+\t\t\t\treturn out, ErrInvalidEscape\n+\t\t\t}\n+\n+\t\t\tesc = escThirdDigit\n+\n+\t\t\tcode += int(b-'0') * 10\n+\t\t\tif code > math.MaxUint8 {\n+\t\t\t\treturn out, ErrInvalidEscape\n+\t\t\t}\n+\n+\t\tcase escThirdDigit:\n+\t\t\tif b < '0' || b > '9' {\n+\t\t\t\treturn out, ErrInvalidEscape\n+\t\t\t}\n+\n+\t\t\tesc = escRegular\n+\n+\t\t\tcode += int(b - '0')\n+\t\t\tif code > math.MaxUint8 {\n+\t\t\t\treturn out, ErrInvalidEscape\n+\t\t\t}\n+\n+\t\t\tb = byte(code)\n+\t\t\tif b >= 'a' && b <= 'z' {\n+\t\t\t\tb &= 0xdf\n+\t\t\t}\n+\n+\t\t\tfragment[j] = b\n+\t\t\tj++\n+\n+\t\t\tcount++\n+\t\t\tif count > MaxName {\n+\t\t\t\treturn out, ErrNameTooLong\n+\t\t\t}\n+\n+\t\t\tif j >= len(fragment) {\n+\t\t\t\tif n >= len(label) {\n+\t\t\t\t\treturn out, ErrLabelTooLong\n+\t\t\t\t}\n+\n+\t\t\t\tlabel[n] = int64(binary.LittleEndian.Uint64(fragment[:]))\n+\t\t\t\tn++\n+\t\t\t\tj = 0\n+\t\t\t}\n+\t\t}\n+\t}\n+\n+\tif esc != escRegular {\n+\t\treturn out, ErrInvalidEscape\n+\t}\n+\n+\tif n > 0 || j > 1 {\n+\t\tif n >= len(label) {\n+\t\t\treturn out, ErrLabelTooLong\n+\t\t}\n+\n+\t\tif j > 0 {\n+\t\t\tcopy(fragment[j:], zeros[:])\n+\n+\t\t\tlabel[n] = int64(binary.LittleEndian.Uint64(fragment[:]))\n+\t\t\tn++\n+\t\t}\n+\n+\t\tlabel[0] = int64(uint64(label[0]) | uint64(n) | uint64(j<<4))\n+\n+\t\tcopy(name[k:], label[:n])\n+\t\tout.n++\n+\t\tk += n\n+\t}\n+\n+\tout.c = name[:k]\n+\treturn out, nil\n+}\n+\n+func MakeNameFromSlice(s []int64) Name {\n+\treturn Name{c: s}","path":"udomain/name.go","position":null,"original_position":238,"commit_id":"5eff36d767133b8c19d0601db27b4fd062557dda","original_commit_id":"85f3700ea88f189fd86b8c33b6eca114c4891411","user":{"login":"vasili-v","id":3368552,"node_id":"MDQ6VXNlcjMzNjg1NTI=","avatar_url":"https://avatars2.githubusercontent.com/u/3368552?v=4","gravatar_id":"","url":"https://api.github.com/users/vasili-v","html_url":"https://github.com/vasili-v","followers_url":"https://api.github.com/users/vasili-v/followers","following_url":"https://api.github.com/users/vasili-v/following{/other_user}","gists_url":"https://api.github.com/users/vasili-v/gists{/gist_id}","starred_url":"https://api.github.com/users/vasili-v/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vasili-v/subscriptions","organizations_url":"https://api.github.com/users/vasili-v/orgs","repos_url":"https://api.github.com/users/vasili-v/repos","events_url":"https://api.github.com/users/vasili-v/events{/privacy}","received_events_url":"https://api.github.com/users/vasili-v/received_events","type":"User","site_admin":false},"body":"Yep. Added.","created_at":"2018-09-12T10:59:27Z","updated_at":"2018-09-12T10:59:27Z","html_url":"https://github.com/infobloxopen/go-trees/pull/20#discussion_r216985466","pull_request_url":"https://api.github.com/repos/infobloxopen/go-trees/pulls/20","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/infobloxopen/go-trees/pulls/comments/216985466"},"html":{"href":"https://github.com/infobloxopen/go-trees/pull/20#discussion_r216985466"},"pull_request":{"href":"https://api.github.com/repos/infobloxopen/go-trees/pulls/20"}},"in_reply_to_id":216452258},"pull_request":{"url":"https://api.github.com/repos/infobloxopen/go-trees/pulls/20","id":213340237,"node_id":"MDExOlB1bGxSZXF1ZXN0MjEzMzQwMjM3","html_url":"https://github.com/infobloxopen/go-trees/pull/20","diff_url":"https://github.com/infobloxopen/go-trees/pull/20.diff","patch_url":"https://github.com/infobloxopen/go-trees/pull/20.patch","issue_url":"https://api.github.com/repos/infobloxopen/go-trees/issues/20","number":20,"state":"open","locked":false,"title":"POC: Sorted domain name table with uint64 values","user":{"login":"vasili-v","id":3368552,"node_id":"MDQ6VXNlcjMzNjg1NTI=","avatar_url":"https://avatars2.githubusercontent.com/u/3368552?v=4","gravatar_id":"","url":"https://api.github.com/users/vasili-v","html_url":"https://github.com/vasili-v","followers_url":"https://api.github.com/users/vasili-v/followers","following_url":"https://api.github.com/users/vasili-v/following{/other_user}","gists_url":"https://api.github.com/users/vasili-v/gists{/gist_id}","starred_url":"https://api.github.com/users/vasili-v/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vasili-v/subscriptions","organizations_url":"https://api.github.com/users/vasili-v/orgs","repos_url":"https://api.github.com/users/vasili-v/repos","events_url":"https://api.github.com/users/vasili-v/events{/privacy}","received_events_url":"https://api.github.com/users/vasili-v/received_events","type":"User","site_admin":false},"body":"This is PoC. Please don't merge. Implemented sorted domain name table with uint64 as values with ability to store data on block storage.","created_at":"2018-09-05T15:39:35Z","updated_at":"2018-09-12T10:59:27Z","closed_at":null,"merged_at":null,"merge_commit_sha":"69e18c93b6150915c12b45cbdec3483580355d49","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/infobloxopen/go-trees/pulls/20/commits","review_comments_url":"https://api.github.com/repos/infobloxopen/go-trees/pulls/20/comments","review_comment_url":"https://api.github.com/repos/infobloxopen/go-trees/pulls/comments{/number}","comments_url":"https://api.github.com/repos/infobloxopen/go-trees/issues/20/comments","statuses_url":"https://api.github.com/repos/infobloxopen/go-trees/statuses/5eff36d767133b8c19d0601db27b4fd062557dda","head":{"label":"vasili-v:sdntable","ref":"sdntable","sha":"5eff36d767133b8c19d0601db27b4fd062557dda","user":{"login":"vasili-v","id":3368552,"node_id":"MDQ6VXNlcjMzNjg1NTI=","avatar_url":"https://avatars2.githubusercontent.com/u/3368552?v=4","gravatar_id":"","url":"https://api.github.com/users/vasili-v","html_url":"https://github.com/vasili-v","followers_url":"https://api.github.com/users/vasili-v/followers","following_url":"https://api.github.com/users/vasili-v/following{/other_user}","gists_url":"https://api.github.com/users/vasili-v/gists{/gist_id}","starred_url":"https://api.github.com/users/vasili-v/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vasili-v/subscriptions","organizations_url":"https://api.github.com/users/vasili-v/orgs","repos_url":"https://api.github.com/users/vasili-v/repos","events_url":"https://api.github.com/users/vasili-v/events{/privacy}","received_events_url":"https://api.github.com/users/vasili-v/received_events","type":"User","site_admin":false},"repo":{"id":94461669,"node_id":"MDEwOlJlcG9zaXRvcnk5NDQ2MTY2OQ==","name":"go-trees","full_name":"vasili-v/go-trees","owner":{"login":"vasili-v","id":3368552,"node_id":"MDQ6VXNlcjMzNjg1NTI=","avatar_url":"https://avatars2.githubusercontent.com/u/3368552?v=4","gravatar_id":"","url":"https://api.github.com/users/vasili-v","html_url":"https://github.com/vasili-v","followers_url":"https://api.github.com/users/vasili-v/followers","following_url":"https://api.github.com/users/vasili-v/following{/other_user}","gists_url":"https://api.github.com/users/vasili-v/gists{/gist_id}","starred_url":"https://api.github.com/users/vasili-v/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vasili-v/subscriptions","organizations_url":"https://api.github.com/users/vasili-v/orgs","repos_url":"https://api.github.com/users/vasili-v/repos","events_url":"https://api.github.com/users/vasili-v/events{/privacy}","received_events_url":"https://api.github.com/users/vasili-v/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/vasili-v/go-trees","description":"go packages for radix and other trees","fork":true,"url":"https://api.github.com/repos/vasili-v/go-trees","forks_url":"https://api.github.com/repos/vasili-v/go-trees/forks","keys_url":"https://api.github.com/repos/vasili-v/go-trees/keys{/key_id}","collaborators_url":"https://api.github.com/repos/vasili-v/go-trees/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/vasili-v/go-trees/teams","hooks_url":"https://api.github.com/repos/vasili-v/go-trees/hooks","issue_events_url":"https://api.github.com/repos/vasili-v/go-trees/issues/events{/number}","events_url":"https://api.github.com/repos/vasili-v/go-trees/events","assignees_url":"https://api.github.com/repos/vasili-v/go-trees/assignees{/user}","branches_url":"https://api.github.com/repos/vasili-v/go-trees/branches{/branch}","tags_url":"https://api.github.com/repos/vasili-v/go-trees/tags","blobs_url":"https://api.github.com/repos/vasili-v/go-trees/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/vasili-v/go-trees/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/vasili-v/go-trees/git/refs{/sha}","trees_url":"https://api.github.com/repos/vasili-v/go-trees/git/trees{/sha}","statuses_url":"https://api.github.com/repos/vasili-v/go-trees/statuses/{sha}","languages_url":"https://api.github.com/repos/vasili-v/go-trees/languages","stargazers_url":"https://api.github.com/repos/vasili-v/go-trees/stargazers","contributors_url":"https://api.github.com/repos/vasili-v/go-trees/contributors","subscribers_url":"https://api.github.com/repos/vasili-v/go-trees/subscribers","subscription_url":"https://api.github.com/repos/vasili-v/go-trees/subscription","commits_url":"https://api.github.com/repos/vasili-v/go-trees/commits{/sha}","git_commits_url":"https://api.github.com/repos/vasili-v/go-trees/git/commits{/sha}","comments_url":"https://api.github.com/repos/vasili-v/go-trees/comments{/number}","issue_comment_url":"https://api.github.com/repos/vasili-v/go-trees/issues/comments{/number}","contents_url":"https://api.github.com/repos/vasili-v/go-trees/contents/{+path}","compare_url":"https://api.github.com/repos/vasili-v/go-trees/compare/{base}...{head}","merges_url":"https://api.github.com/repos/vasili-v/go-trees/merges","archive_url":"https://api.github.com/repos/vasili-v/go-trees/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/vasili-v/go-trees/downloads","issues_url":"https://api.github.com/repos/vasili-v/go-trees/issues{/number}","pulls_url":"https://api.github.com/repos/vasili-v/go-trees/pulls{/number}","milestones_url":"https://api.github.com/repos/vasili-v/go-trees/milestones{/number}","notifications_url":"https://api.github.com/repos/vasili-v/go-trees/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/vasili-v/go-trees/labels{/name}","releases_url":"https://api.github.com/repos/vasili-v/go-trees/releases{/id}","deployments_url":"https://api.github.com/repos/vasili-v/go-trees/deployments","created_at":"2017-06-15T17:09:53Z","updated_at":"2018-06-08T12:25:45Z","pushed_at":"2018-09-12T10:57:26Z","git_url":"git://github.com/vasili-v/go-trees.git","ssh_url":"git@github.com:vasili-v/go-trees.git","clone_url":"https://github.com/vasili-v/go-trees.git","svn_url":"https://github.com/vasili-v/go-trees","homepage":null,"size":300,"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","node_id":"MDc6TGljZW5zZTI="},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"infobloxopen:sdntable","ref":"sdntable","sha":"a1e500cde93cdca91ae6c7366e0cb9f477c63603","user":{"login":"infobloxopen","id":8064882,"node_id":"MDEyOk9yZ2FuaXphdGlvbjgwNjQ4ODI=","avatar_url":"https://avatars0.githubusercontent.com/u/8064882?v=4","gravatar_id":"","url":"https://api.github.com/users/infobloxopen","html_url":"https://github.com/infobloxopen","followers_url":"https://api.github.com/users/infobloxopen/followers","following_url":"https://api.github.com/users/infobloxopen/following{/other_user}","gists_url":"https://api.github.com/users/infobloxopen/gists{/gist_id}","starred_url":"https://api.github.com/users/infobloxopen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/infobloxopen/subscriptions","organizations_url":"https://api.github.com/users/infobloxopen/orgs","repos_url":"https://api.github.com/users/infobloxopen/repos","events_url":"https://api.github.com/users/infobloxopen/events{/privacy}","received_events_url":"https://api.github.com/users/infobloxopen/received_events","type":"Organization","site_admin":false},"repo":{"id":94455106,"node_id":"MDEwOlJlcG9zaXRvcnk5NDQ1NTEwNg==","name":"go-trees","full_name":"infobloxopen/go-trees","owner":{"login":"infobloxopen","id":8064882,"node_id":"MDEyOk9yZ2FuaXphdGlvbjgwNjQ4ODI=","avatar_url":"https://avatars0.githubusercontent.com/u/8064882?v=4","gravatar_id":"","url":"https://api.github.com/users/infobloxopen","html_url":"https://github.com/infobloxopen","followers_url":"https://api.github.com/users/infobloxopen/followers","following_url":"https://api.github.com/users/infobloxopen/following{/other_user}","gists_url":"https://api.github.com/users/infobloxopen/gists{/gist_id}","starred_url":"https://api.github.com/users/infobloxopen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/infobloxopen/subscriptions","organizations_url":"https://api.github.com/users/infobloxopen/orgs","repos_url":"https://api.github.com/users/infobloxopen/repos","events_url":"https://api.github.com/users/infobloxopen/events{/privacy}","received_events_url":"https://api.github.com/users/infobloxopen/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/infobloxopen/go-trees","description":"go packages for radix and other trees","fork":false,"url":"https://api.github.com/repos/infobloxopen/go-trees","forks_url":"https://api.github.com/repos/infobloxopen/go-trees/forks","keys_url":"https://api.github.com/repos/infobloxopen/go-trees/keys{/key_id}","collaborators_url":"https://api.github.com/repos/infobloxopen/go-trees/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/infobloxopen/go-trees/teams","hooks_url":"https://api.github.com/repos/infobloxopen/go-trees/hooks","issue_events_url":"https://api.github.com/repos/infobloxopen/go-trees/issues/events{/number}","events_url":"https://api.github.com/repos/infobloxopen/go-trees/events","assignees_url":"https://api.github.com/repos/infobloxopen/go-trees/assignees{/user}","branches_url":"https://api.github.com/repos/infobloxopen/go-trees/branches{/branch}","tags_url":"https://api.github.com/repos/infobloxopen/go-trees/tags","blobs_url":"https://api.github.com/repos/infobloxopen/go-trees/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/infobloxopen/go-trees/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/infobloxopen/go-trees/git/refs{/sha}","trees_url":"https://api.github.com/repos/infobloxopen/go-trees/git/trees{/sha}","statuses_url":"https://api.github.com/repos/infobloxopen/go-trees/statuses/{sha}","languages_url":"https://api.github.com/repos/infobloxopen/go-trees/languages","stargazers_url":"https://api.github.com/repos/infobloxopen/go-trees/stargazers","contributors_url":"https://api.github.com/repos/infobloxopen/go-trees/contributors","subscribers_url":"https://api.github.com/repos/infobloxopen/go-trees/subscribers","subscription_url":"https://api.github.com/repos/infobloxopen/go-trees/subscription","commits_url":"https://api.github.com/repos/infobloxopen/go-trees/commits{/sha}","git_commits_url":"https://api.github.com/repos/infobloxopen/go-trees/git/commits{/sha}","comments_url":"https://api.github.com/repos/infobloxopen/go-trees/comments{/number}","issue_comment_url":"https://api.github.com/repos/infobloxopen/go-trees/issues/comments{/number}","contents_url":"https://api.github.com/repos/infobloxopen/go-trees/contents/{+path}","compare_url":"https://api.github.com/repos/infobloxopen/go-trees/compare/{base}...{head}","merges_url":"https://api.github.com/repos/infobloxopen/go-trees/merges","archive_url":"https://api.github.com/repos/infobloxopen/go-trees/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/infobloxopen/go-trees/downloads","issues_url":"https://api.github.com/repos/infobloxopen/go-trees/issues{/number}","pulls_url":"https://api.github.com/repos/infobloxopen/go-trees/pulls{/number}","milestones_url":"https://api.github.com/repos/infobloxopen/go-trees/milestones{/number}","notifications_url":"https://api.github.com/repos/infobloxopen/go-trees/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/infobloxopen/go-trees/labels{/name}","releases_url":"https://api.github.com/repos/infobloxopen/go-trees/releases{/id}","deployments_url":"https://api.github.com/repos/infobloxopen/go-trees/deployments","created_at":"2017-06-15T15:48:59Z","updated_at":"2018-06-08T12:25:02Z","pushed_at":"2018-09-12T10:57:27Z","git_url":"git://github.com/infobloxopen/go-trees.git","ssh_url":"git@github.com:infobloxopen/go-trees.git","clone_url":"https://github.com/infobloxopen/go-trees.git","svn_url":"https://github.com/infobloxopen/go-trees","homepage":null,"size":235,"stargazers_count":1,"watchers_count":1,"language":"Go","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":5,"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":5,"open_issues":1,"watchers":1,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/infobloxopen/go-trees/pulls/20"},"html":{"href":"https://github.com/infobloxopen/go-trees/pull/20"},"issue":{"href":"https://api.github.com/repos/infobloxopen/go-trees/issues/20"},"comments":{"href":"https://api.github.com/repos/infobloxopen/go-trees/issues/20/comments"},"review_comments":{"href":"https://api.github.com/repos/infobloxopen/go-trees/pulls/20/comments"},"review_comment":{"href":"https://api.github.com/repos/infobloxopen/go-trees/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/infobloxopen/go-trees/pulls/20/commits"},"statuses":{"href":"https://api.github.com/repos/infobloxopen/go-trees/statuses/5eff36d767133b8c19d0601db27b4fd062557dda"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"vasili-v"}}