lita-github_pr_list 0.0.21 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +4 -0
- data/lib/lita/github_pr_list/comment_hook.rb +48 -9
- data/lib/lita/github_pr_list/pull_request.rb +8 -9
- data/lib/lita/github_pr_list/status.rb +67 -18
- data/lib/lita/github_pr_list/version.rb +1 -1
- data/lib/lita/handlers/github_pr_list.rb +1 -2
- data/lita-github_pr_list.gemspec +2 -2
- data/spec/fixtures/issue_comment_event_passed_design.json +180 -0
- data/spec/fixtures/issue_comments_passed_both.json +110 -0
- data/spec/fixtures/issue_comments_passed_design.json +83 -0
- data/spec/fixtures/three_org_issue_list.json +542 -0
- data/spec/lita/handlers/comment_hook_spec.rb +63 -6
- data/spec/lita/handlers/open_pull_request_message_hook_spec.rb +1 -2
- data/spec/lita/handlers/pull_request_spec.rb +12 -11
- metadata +37 -25
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 81377b8026ca631cf88252170fcb1525e21063ac
|
4
|
+
data.tar.gz: a1d18082305bc6a4e0e2aac7745d82b5dc99f5d9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 075d995d3fd0f0281e5b65c741348439049ed2493b64e3de3a3d71d0dcc688ab29380455c3cfb38a93827685927033576ceb4a1905ec0f53e10b7e3e7eb526e9
|
7
|
+
data.tar.gz: f26270149694e49f5e32ac34e18a57f659cfce4e32fb425d719777c65b5bfacd5085918cf4c87d1c4faf11f7ef0cc8d723b5b2f7ba3ba31934281b319011291a
|
data/README.md
CHANGED
@@ -38,10 +38,14 @@ will display it, otherwise it will display :new:.
|
|
38
38
|
|
39
39
|
New - :new: - This is the default state, shown (new) if none of the other states are set.
|
40
40
|
Pass - :elephant: :elephant: :elephant: = (elephant)(elephant)(elephant)
|
41
|
+
Pass DESIGN - :art: :art: :art: = (art)(art)(art)
|
41
42
|
In Review - :book: = (book)
|
42
43
|
Fail - :poop: OR :hankey: = (poop)
|
43
44
|
Fixed - :wave: = (wave)
|
44
45
|
|
46
|
+
Placing an :art: or :elephant: in the initial pull request will designate the request to be for design or developers respectively
|
47
|
+
Placing neither :art: nor :elephant:, or placing both of them will assume both design and developer review is requested
|
48
|
+
|
45
49
|
## Contributing
|
46
50
|
|
47
51
|
1. Fork it ( https://github.com/amaabca/lita-github_pr_list/fork )
|
@@ -2,12 +2,15 @@ module Lita
|
|
2
2
|
module GithubPrList
|
3
3
|
class CommentHook
|
4
4
|
attr_accessor :request, :response, :payload, :commenter, :issue_owner, :issue_title, :issue_body, :status,
|
5
|
-
:issue_html_url, :redis
|
5
|
+
:issue_html_url, :redis, :github_organization, :github_client
|
6
6
|
|
7
7
|
def initialize(params = {})
|
8
8
|
self.response = params.fetch(:response, nil)
|
9
9
|
self.request = params.fetch(:request, nil)
|
10
10
|
self.redis = params.fetch(:redis, nil)
|
11
|
+
self.github_organization = params.fetch(:github_organization, nil)
|
12
|
+
github_token = params.fetch(:github_token, nil)
|
13
|
+
self.github_client = Octokit::Client.new(access_token: github_token, auto_paginate: true)
|
11
14
|
|
12
15
|
raise "invalid params in #{self.class.name}" if response.nil? || request.nil? || redis.nil?
|
13
16
|
|
@@ -21,22 +24,58 @@ module Lita
|
|
21
24
|
end
|
22
25
|
|
23
26
|
def message
|
24
|
-
status =
|
25
|
-
|
27
|
+
self.status = repo_status(payload["repository"]["full_name"], payload["issue"])
|
26
28
|
if !status.empty?
|
27
|
-
if status
|
28
|
-
|
29
|
-
elsif status
|
29
|
+
if status.include? Lita::GithubPrList::Status::PASS_DEV_EMOJI
|
30
|
+
pass_dev?
|
31
|
+
elsif status.include? Lita::GithubPrList::Status::PASS_DESIGN_EMOJI
|
32
|
+
pass_design?
|
33
|
+
elsif status.include? Lita::GithubPrList::Status::REVIEW_EMOJI
|
30
34
|
"@#{commenter} is currently reviewing: #{issue_title}. #{issue_html_url}"
|
31
|
-
elsif status
|
35
|
+
elsif status.include? Lita::GithubPrList::Status::FAIL_EMOJI
|
32
36
|
"@#{issue_owner} your pull request: #{issue_title} has failed. #{issue_html_url}"
|
33
|
-
elsif status
|
37
|
+
elsif status.include? Lita::GithubPrList::Status::FIXED_EMOJI
|
34
38
|
"#{issue_title} has been fixed: #{issue_html_url}"
|
35
39
|
end
|
36
40
|
else
|
37
41
|
nil
|
38
42
|
end
|
39
43
|
end
|
44
|
+
|
45
|
+
private
|
46
|
+
def pass_dev?
|
47
|
+
if self.status.include? Lita::GithubPrList::Status::PASS_DESIGN_EMOJI
|
48
|
+
"@#{issue_owner} your pull request: #{issue_title} has passed. #{issue_html_url}"
|
49
|
+
else
|
50
|
+
resp = "@#{issue_owner} your pull request: #{issue_title} has passed DEV REVIEW. #{issue_html_url}"
|
51
|
+
if self.status.include?(Lita::GithubPrList::Status::DESIGN_REVIEW_REQUIRED) && !status.include?(Lita::GithubPrList::Status::PASS_DESIGN_EMOJI)
|
52
|
+
resp += " - You still require DESIGN REVIEW"
|
53
|
+
end
|
54
|
+
resp
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
def pass_design?
|
59
|
+
resp = "@#{issue_owner} your pull request: #{issue_title} has passed DESIGN. #{issue_html_url}"
|
60
|
+
if self.status.include?(Lita::GithubPrList::Status::DEV_REVIEW_REQUIRED) && !status.match(Lita::GithubPrList::Status::PASS_DEV_EMOJI)
|
61
|
+
resp += " - You still require DEV REVIEW"
|
62
|
+
end
|
63
|
+
resp
|
64
|
+
end
|
65
|
+
|
66
|
+
def repo_status(repo_full_name, issue)
|
67
|
+
status_object = Lita::GithubPrList::Status.new(comment: ":new: " + issue["body"])
|
68
|
+
status = status_object.comment_status
|
69
|
+
comments(repo_full_name, issue["number"]).each do |c|
|
70
|
+
status = status_object.update(c.body)
|
71
|
+
end
|
72
|
+
status
|
73
|
+
end
|
74
|
+
|
75
|
+
def comments(repo_full_name, issue_number, options = nil)
|
76
|
+
github_options = options || { direction: 'asc', sort: 'created' }
|
77
|
+
github_client.issue_comments(repo_full_name, issue_number, github_options)
|
78
|
+
end
|
40
79
|
end
|
41
80
|
end
|
42
|
-
end
|
81
|
+
end
|
@@ -34,19 +34,18 @@ module Lita
|
|
34
34
|
|
35
35
|
def build_summary
|
36
36
|
github_pull_requests.map do |pr_issue|
|
37
|
-
status = repo_status("#{pr_issue.repository.full_name}", pr_issue
|
37
|
+
status = repo_status("#{pr_issue.repository.full_name}", pr_issue)
|
38
38
|
"#{pr_issue.repository.name} #{status} #{pr_issue.title} #{pr_issue.pull_request.html_url}"
|
39
39
|
end
|
40
40
|
end
|
41
41
|
|
42
|
-
def repo_status(repo_full_name,
|
43
|
-
|
44
|
-
|
45
|
-
comments(repo_full_name,
|
46
|
-
status =
|
42
|
+
def repo_status(repo_full_name, issue)
|
43
|
+
status_object = Lita::GithubPrList::Status.new(comment: ":new: " + issue.body)
|
44
|
+
status = status_object.comment_status
|
45
|
+
comments(repo_full_name, issue.number).each do |c|
|
46
|
+
status = status_object.update(c.body)
|
47
47
|
end
|
48
|
-
|
49
|
-
status[:emoji]
|
48
|
+
status
|
50
49
|
end
|
51
50
|
|
52
51
|
def comments(repo_full_name, issue_number, options = nil)
|
@@ -55,4 +54,4 @@ module Lita
|
|
55
54
|
end
|
56
55
|
end
|
57
56
|
end
|
58
|
-
end
|
57
|
+
end
|
@@ -1,44 +1,93 @@
|
|
1
1
|
module Lita
|
2
2
|
module GithubPrList
|
3
3
|
class Status
|
4
|
-
attr_accessor :comment, :
|
5
|
-
:pass_regex, :review_regex, :fail_regex, :fixed_regex
|
4
|
+
attr_accessor :comment, :base, :dev, :design
|
6
5
|
|
7
|
-
|
6
|
+
DESIGN_REVIEW_REGEX = /:art:/
|
7
|
+
DEV_REVIEW_REGEX = /:elephant:/
|
8
|
+
PASS_DEV_REGEX = /:elephant: :elephant: :elephant:/
|
9
|
+
PASS_DESIGN_REGEX = /:art: :art: :art:/
|
8
10
|
REVIEW_REGEX = /:book:/
|
9
11
|
FAIL_REGEX = /:poop:|:hankey:/
|
10
12
|
FIXED_REGEX = /:wave:/
|
13
|
+
NEW_REGEX = /:new:/
|
11
14
|
|
12
|
-
|
15
|
+
DESIGN_REVIEW_REQUIRED = "(art)"
|
16
|
+
DEV_REVIEW_REQUIRED = "(elephant)"
|
17
|
+
PASS_DEV_EMOJI = "(elephant)(elephant)(elephant)"
|
18
|
+
PASS_DESIGN_EMOJI = "(art)(art)(art)"
|
13
19
|
REVIEW_EMOJI = "(book)"
|
14
20
|
FAIL_EMOJI = "(poop)"
|
15
21
|
FIXED_EMOJI = "(wave)"
|
22
|
+
NEW_EMOJI = "(new)"
|
16
23
|
|
17
24
|
def initialize(params = {})
|
18
25
|
self.comment = params.fetch(:comment, nil)
|
19
|
-
self.
|
20
|
-
|
26
|
+
self.base = "(new)"
|
27
|
+
setup(comment)
|
21
28
|
raise "invalid params in #{self.class.name}" if comment.nil?
|
22
29
|
end
|
23
30
|
|
24
31
|
def comment_status
|
25
|
-
case
|
26
|
-
when
|
27
|
-
|
28
|
-
|
32
|
+
case base
|
33
|
+
when REVIEW_REGEX, FAIL_REGEX
|
34
|
+
base
|
35
|
+
else
|
36
|
+
"#{base}#{dev}#{design}"
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def update(new_comment)
|
41
|
+
parse_dev(new_comment) unless self.dev.empty?
|
42
|
+
parse_design(new_comment) unless self.design.empty?
|
43
|
+
parse_common(new_comment)
|
44
|
+
self.comment = new_comment
|
45
|
+
comment_status
|
46
|
+
end
|
47
|
+
|
48
|
+
private
|
49
|
+
|
50
|
+
def parse_dev(comm)
|
51
|
+
case comm
|
52
|
+
when PASS_DEV_REGEX
|
53
|
+
self.base = ""
|
54
|
+
self.dev = PASS_DEV_EMOJI
|
55
|
+
when DEV_REVIEW_REGEX, FAIL_REGEX, FIXED_REGEX
|
56
|
+
self.dev = DEV_REVIEW_REQUIRED
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
def parse_design(comm)
|
61
|
+
case comm
|
62
|
+
when PASS_DESIGN_REGEX
|
63
|
+
self.base = ""
|
64
|
+
self.design = PASS_DESIGN_EMOJI
|
65
|
+
when DESIGN_REVIEW_REGEX, FAIL_REGEX, FIXED_REGEX
|
66
|
+
self.design = DESIGN_REVIEW_REQUIRED
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
def parse_common(comm)
|
71
|
+
case comm
|
29
72
|
when REVIEW_REGEX
|
30
|
-
|
31
|
-
status[:status] = "In Review"
|
73
|
+
self.base = REVIEW_EMOJI
|
32
74
|
when FAIL_REGEX
|
33
|
-
|
34
|
-
status[:status] = "Failed"
|
75
|
+
self.base = FAIL_EMOJI
|
35
76
|
when FIXED_REGEX
|
36
|
-
|
37
|
-
|
77
|
+
self.base = FIXED_EMOJI
|
78
|
+
when NEW_REGEX
|
79
|
+
self.base = NEW_EMOJI
|
38
80
|
end
|
81
|
+
end
|
39
82
|
|
40
|
-
|
83
|
+
def setup(comm)
|
84
|
+
self.design = DESIGN_REVIEW_REQUIRED if comm.match(DESIGN_REVIEW_REGEX)
|
85
|
+
self.dev = DEV_REVIEW_REQUIRED if comm.match(DEV_REVIEW_REGEX)
|
86
|
+
if !comm.match(DESIGN_REVIEW_REGEX) && !comm.match(DEV_REVIEW_REGEX)
|
87
|
+
self.dev = DEV_REVIEW_REQUIRED
|
88
|
+
self.design = DESIGN_REVIEW_REQUIRED
|
89
|
+
end
|
41
90
|
end
|
42
91
|
end
|
43
92
|
end
|
44
|
-
end
|
93
|
+
end
|
@@ -54,7 +54,7 @@ module Lita
|
|
54
54
|
end
|
55
55
|
|
56
56
|
def comment_hook(request, response)
|
57
|
-
message = Lita::GithubPrList::CommentHook.new({ request: request, response: response, redis: redis }).message
|
57
|
+
message = Lita::GithubPrList::CommentHook.new({ request: request, response: response, redis: redis, github_organization: github_organization, github_token: github_access_token}).message
|
58
58
|
message_rooms(message, response)
|
59
59
|
end
|
60
60
|
|
@@ -130,7 +130,6 @@ module Lita
|
|
130
130
|
Lita.config.handlers.github_pr_list.pull_request_open_message_hook_event_type
|
131
131
|
end
|
132
132
|
end
|
133
|
-
|
134
133
|
Lita.register_handler(GithubPrList)
|
135
134
|
|
136
135
|
end
|
data/lita-github_pr_list.gemspec
CHANGED
@@ -6,8 +6,8 @@ require 'lita/github_pr_list/version'
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
7
|
spec.name = "lita-github_pr_list"
|
8
8
|
spec.version = Lita::GithubPrList::VERSION
|
9
|
-
spec.authors = ["Michael van den Beuken", "Ruben Estevez", "Jordan Babe", "Mathieu Gilbert", "Ryan Jones", "Darko Dosenovic"]
|
10
|
-
spec.email = ["michael.beuken@gmail.com", "ruben.a.estevez@gmail.com", "jorbabe@gmail.com", "mathieu.gilbert@ama.ab.ca", "ryan.michael.jones@gmail.com", "darko.dosenovic@ama.ab.ca"]
|
9
|
+
spec.authors = ["Michael van den Beuken", "Ruben Estevez", "Jordan Babe", "Mathieu Gilbert", "Ryan Jones", "Darko Dosenovic", "Jonathan Weyermann", "Adam Melnyk"]
|
10
|
+
spec.email = ["michael.beuken@gmail.com", "ruben.a.estevez@gmail.com", "jorbabe@gmail.com", "mathieu.gilbert@ama.ab.ca", "ryan.michael.jones@gmail.com", "darko.dosenovic@ama.ab.ca", "jonathan.weyermann@ama.ab.ca", "adam.melnyk@ama.ab.ca"]
|
11
11
|
spec.summary = %q{List open pull requests for an organization.}
|
12
12
|
spec.description = %q{List open pull requests for an organization.}
|
13
13
|
spec.homepage = "https://github.com/amaabca/lita-github_pr_list"
|
@@ -0,0 +1,180 @@
|
|
1
|
+
{
|
2
|
+
"action": "created",
|
3
|
+
"issue": {
|
4
|
+
"url": "https://api.github.com/repos/baxterthehacker/public-repo/issues/47",
|
5
|
+
"labels_url": "https://api.github.com/repos/baxterthehacker/public-repo/issues/47/labels{/name}",
|
6
|
+
"comments_url": "https://api.github.com/repos/baxterthehacker/public-repo/issues/47/comments",
|
7
|
+
"events_url": "https://api.github.com/repos/baxterthehacker/public-repo/issues/47/events",
|
8
|
+
"html_url": "https://github.com/baxterthehacker/public-repo/issues/47",
|
9
|
+
"id": 36913817,
|
10
|
+
"number": 47,
|
11
|
+
"title": "Spelling error in the README file",
|
12
|
+
"user": {
|
13
|
+
"login": "mcwaffle1234",
|
14
|
+
"id": 6752317,
|
15
|
+
"avatar_url": "https://avatars.githubusercontent.com/u/6752317?",
|
16
|
+
"gravatar_id": "258ae60b5512c8402b93673b7478d9c6",
|
17
|
+
"url": "https://api.github.com/users/baxterthehacker",
|
18
|
+
"html_url": "https://github.com/baxterthehacker",
|
19
|
+
"followers_url": "https://api.github.com/users/baxterthehacker/followers",
|
20
|
+
"following_url": "https://api.github.com/users/baxterthehacker/following{/other_user}",
|
21
|
+
"gists_url": "https://api.github.com/users/baxterthehacker/gists{/gist_id}",
|
22
|
+
"starred_url": "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}",
|
23
|
+
"subscriptions_url": "https://api.github.com/users/baxterthehacker/subscriptions",
|
24
|
+
"organizations_url": "https://api.github.com/users/baxterthehacker/orgs",
|
25
|
+
"repos_url": "https://api.github.com/users/baxterthehacker/repos",
|
26
|
+
"events_url": "https://api.github.com/users/baxterthehacker/events{/privacy}",
|
27
|
+
"received_events_url": "https://api.github.com/users/baxterthehacker/received_events",
|
28
|
+
"type": "User",
|
29
|
+
"site_admin": false
|
30
|
+
},
|
31
|
+
"labels": [
|
32
|
+
{
|
33
|
+
"url": "https://api.github.com/repos/baxterthehacker/public-repo/labels/bug",
|
34
|
+
"name": "bug",
|
35
|
+
"color": "fc2929"
|
36
|
+
}
|
37
|
+
],
|
38
|
+
"state": "open",
|
39
|
+
"assignee": null,
|
40
|
+
"milestone": null,
|
41
|
+
"comments": 1,
|
42
|
+
"created_at": "2014-07-01T17:21:15Z",
|
43
|
+
"updated_at": "2014-07-01T17:21:15Z",
|
44
|
+
"closed_at": null,
|
45
|
+
"body": "It looks like you accidently spelled 'commit' with two 't's."
|
46
|
+
},
|
47
|
+
"comment": {
|
48
|
+
"url": "https://api.github.com/repos/baxterthehacker/public-repo/issues/comments/47684681",
|
49
|
+
"html_url": "https://github.com/baxterthehacker/public-repo/issues/47#issuecomment-47684681",
|
50
|
+
"issue_url": "https://api.github.com/repos/baxterthehacker/public-repo/issues/47",
|
51
|
+
"id": 47684681,
|
52
|
+
"user": {
|
53
|
+
"login": "baxterthehacker",
|
54
|
+
"id": 6752317,
|
55
|
+
"avatar_url": "https://avatars.githubusercontent.com/u/6752317?",
|
56
|
+
"gravatar_id": "258ae60b5512c8402b93673b7478d9c6",
|
57
|
+
"url": "https://api.github.com/users/baxterthehacker",
|
58
|
+
"html_url": "https://github.com/baxterthehacker",
|
59
|
+
"followers_url": "https://api.github.com/users/baxterthehacker/followers",
|
60
|
+
"following_url": "https://api.github.com/users/baxterthehacker/following{/other_user}",
|
61
|
+
"gists_url": "https://api.github.com/users/baxterthehacker/gists{/gist_id}",
|
62
|
+
"starred_url": "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}",
|
63
|
+
"subscriptions_url": "https://api.github.com/users/baxterthehacker/subscriptions",
|
64
|
+
"organizations_url": "https://api.github.com/users/baxterthehacker/orgs",
|
65
|
+
"repos_url": "https://api.github.com/users/baxterthehacker/repos",
|
66
|
+
"events_url": "https://api.github.com/users/baxterthehacker/events{/privacy}",
|
67
|
+
"received_events_url": "https://api.github.com/users/baxterthehacker/received_events",
|
68
|
+
"type": "User",
|
69
|
+
"site_admin": false
|
70
|
+
},
|
71
|
+
"created_at": "2014-07-01T17:21:15Z",
|
72
|
+
"updated_at": "2014-07-01T17:21:15Z",
|
73
|
+
"body": "Passed DESIGN :art: :art: :art:"
|
74
|
+
},
|
75
|
+
"repository": {
|
76
|
+
"id": 20000106,
|
77
|
+
"name": "public-repo",
|
78
|
+
"full_name": "baxterthehacker/public-repo",
|
79
|
+
"owner": {
|
80
|
+
"login": "baxterthehacker",
|
81
|
+
"id": 6752317,
|
82
|
+
"avatar_url": "https://avatars.githubusercontent.com/u/6752317?",
|
83
|
+
"gravatar_id": "258ae60b5512c8402b93673b7478d9c6",
|
84
|
+
"url": "https://api.github.com/users/baxterthehacker",
|
85
|
+
"html_url": "https://github.com/baxterthehacker",
|
86
|
+
"followers_url": "https://api.github.com/users/baxterthehacker/followers",
|
87
|
+
"following_url": "https://api.github.com/users/baxterthehacker/following{/other_user}",
|
88
|
+
"gists_url": "https://api.github.com/users/baxterthehacker/gists{/gist_id}",
|
89
|
+
"starred_url": "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}",
|
90
|
+
"subscriptions_url": "https://api.github.com/users/baxterthehacker/subscriptions",
|
91
|
+
"organizations_url": "https://api.github.com/users/baxterthehacker/orgs",
|
92
|
+
"repos_url": "https://api.github.com/users/baxterthehacker/repos",
|
93
|
+
"events_url": "https://api.github.com/users/baxterthehacker/events{/privacy}",
|
94
|
+
"received_events_url": "https://api.github.com/users/baxterthehacker/received_events",
|
95
|
+
"type": "User",
|
96
|
+
"site_admin": false
|
97
|
+
},
|
98
|
+
"private": false,
|
99
|
+
"html_url": "https://github.com/baxterthehacker/public-repo",
|
100
|
+
"description": "",
|
101
|
+
"fork": false,
|
102
|
+
"url": "https://api.github.com/repos/baxterthehacker/public-repo",
|
103
|
+
"forks_url": "https://api.github.com/repos/baxterthehacker/public-repo/forks",
|
104
|
+
"keys_url": "https://api.github.com/repos/baxterthehacker/public-repo/keys{/key_id}",
|
105
|
+
"collaborators_url": "https://api.github.com/repos/baxterthehacker/public-repo/collaborators{/collaborator}",
|
106
|
+
"teams_url": "https://api.github.com/repos/baxterthehacker/public-repo/teams",
|
107
|
+
"hooks_url": "https://api.github.com/repos/baxterthehacker/public-repo/hooks",
|
108
|
+
"issue_events_url": "https://api.github.com/repos/baxterthehacker/public-repo/issues/events{/number}",
|
109
|
+
"events_url": "https://api.github.com/repos/baxterthehacker/public-repo/events",
|
110
|
+
"assignees_url": "https://api.github.com/repos/baxterthehacker/public-repo/assignees{/user}",
|
111
|
+
"branches_url": "https://api.github.com/repos/baxterthehacker/public-repo/branches{/branch}",
|
112
|
+
"tags_url": "https://api.github.com/repos/baxterthehacker/public-repo/tags",
|
113
|
+
"blobs_url": "https://api.github.com/repos/baxterthehacker/public-repo/git/blobs{/sha}",
|
114
|
+
"git_tags_url": "https://api.github.com/repos/baxterthehacker/public-repo/git/tags{/sha}",
|
115
|
+
"git_refs_url": "https://api.github.com/repos/baxterthehacker/public-repo/git/refs{/sha}",
|
116
|
+
"trees_url": "https://api.github.com/repos/baxterthehacker/public-repo/git/trees{/sha}",
|
117
|
+
"statuses_url": "https://api.github.com/repos/baxterthehacker/public-repo/statuses/{sha}",
|
118
|
+
"languages_url": "https://api.github.com/repos/baxterthehacker/public-repo/languages",
|
119
|
+
"stargazers_url": "https://api.github.com/repos/baxterthehacker/public-repo/stargazers",
|
120
|
+
"contributors_url": "https://api.github.com/repos/baxterthehacker/public-repo/contributors",
|
121
|
+
"subscribers_url": "https://api.github.com/repos/baxterthehacker/public-repo/subscribers",
|
122
|
+
"subscription_url": "https://api.github.com/repos/baxterthehacker/public-repo/subscription",
|
123
|
+
"commits_url": "https://api.github.com/repos/baxterthehacker/public-repo/commits{/sha}",
|
124
|
+
"git_commits_url": "https://api.github.com/repos/baxterthehacker/public-repo/git/commits{/sha}",
|
125
|
+
"comments_url": "https://api.github.com/repos/baxterthehacker/public-repo/comments{/number}",
|
126
|
+
"issue_comment_url": "https://api.github.com/repos/baxterthehacker/public-repo/issues/comments/{number}",
|
127
|
+
"contents_url": "https://api.github.com/repos/baxterthehacker/public-repo/contents/{+path}",
|
128
|
+
"compare_url": "https://api.github.com/repos/baxterthehacker/public-repo/compare/{base}...{head}",
|
129
|
+
"merges_url": "https://api.github.com/repos/baxterthehacker/public-repo/merges",
|
130
|
+
"archive_url": "https://api.github.com/repos/baxterthehacker/public-repo/{archive_format}{/ref}",
|
131
|
+
"downloads_url": "https://api.github.com/repos/baxterthehacker/public-repo/downloads",
|
132
|
+
"issues_url": "https://api.github.com/repos/baxterthehacker/public-repo/issues{/number}",
|
133
|
+
"pulls_url": "https://api.github.com/repos/baxterthehacker/public-repo/pulls{/number}",
|
134
|
+
"milestones_url": "https://api.github.com/repos/baxterthehacker/public-repo/milestones{/number}",
|
135
|
+
"notifications_url": "https://api.github.com/repos/baxterthehacker/public-repo/notifications{?since,all,participating}",
|
136
|
+
"labels_url": "https://api.github.com/repos/baxterthehacker/public-repo/labels{/name}",
|
137
|
+
"releases_url": "https://api.github.com/repos/baxterthehacker/public-repo/releases{/id}",
|
138
|
+
"created_at": "2014-05-20T22:39:43Z",
|
139
|
+
"updated_at": "2014-07-01T17:17:43Z",
|
140
|
+
"pushed_at": "2014-07-01T17:21:15Z",
|
141
|
+
"git_url": "git://github.com/baxterthehacker/public-repo.git",
|
142
|
+
"ssh_url": "git@github.com:baxterthehacker/public-repo.git",
|
143
|
+
"clone_url": "https://github.com/baxterthehacker/public-repo.git",
|
144
|
+
"svn_url": "https://github.com/baxterthehacker/public-repo",
|
145
|
+
"homepage": null,
|
146
|
+
"size": 569,
|
147
|
+
"stargazers_count": 0,
|
148
|
+
"watchers_count": 0,
|
149
|
+
"language": null,
|
150
|
+
"has_issues": true,
|
151
|
+
"has_downloads": true,
|
152
|
+
"has_wiki": true,
|
153
|
+
"forks_count": 0,
|
154
|
+
"mirror_url": null,
|
155
|
+
"open_issues_count": 24,
|
156
|
+
"forks": 0,
|
157
|
+
"open_issues": 24,
|
158
|
+
"watchers": 0,
|
159
|
+
"default_branch": "master"
|
160
|
+
},
|
161
|
+
"sender": {
|
162
|
+
"login": "baxterthehacker",
|
163
|
+
"id": 6752317,
|
164
|
+
"avatar_url": "https://avatars.githubusercontent.com/u/6752317?",
|
165
|
+
"gravatar_id": "258ae60b5512c8402b93673b7478d9c6",
|
166
|
+
"url": "https://api.github.com/users/baxterthehacker",
|
167
|
+
"html_url": "https://github.com/baxterthehacker",
|
168
|
+
"followers_url": "https://api.github.com/users/baxterthehacker/followers",
|
169
|
+
"following_url": "https://api.github.com/users/baxterthehacker/following{/other_user}",
|
170
|
+
"gists_url": "https://api.github.com/users/baxterthehacker/gists{/gist_id}",
|
171
|
+
"starred_url": "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}",
|
172
|
+
"subscriptions_url": "https://api.github.com/users/baxterthehacker/subscriptions",
|
173
|
+
"organizations_url": "https://api.github.com/users/baxterthehacker/orgs",
|
174
|
+
"repos_url": "https://api.github.com/users/baxterthehacker/repos",
|
175
|
+
"events_url": "https://api.github.com/users/baxterthehacker/events{/privacy}",
|
176
|
+
"received_events_url": "https://api.github.com/users/baxterthehacker/received_events",
|
177
|
+
"type": "User",
|
178
|
+
"site_admin": false
|
179
|
+
}
|
180
|
+
}
|