txgh-server 3.1.0 → 4.0.0.beta

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. checksums.yaml +5 -5
  2. data/lib/txgh-server.rb +1 -0
  3. data/lib/txgh-server/application.rb +7 -1
  4. data/lib/txgh-server/download_handler.rb +1 -1
  5. data/lib/txgh-server/gitlab_request_auth.rb +13 -0
  6. data/lib/txgh-server/triggers/handler.rb +18 -1
  7. data/lib/txgh-server/triggers/pull_handler.rb +1 -10
  8. data/lib/txgh-server/triggers/push_handler.rb +1 -10
  9. data/lib/txgh-server/version.rb +1 -1
  10. data/lib/txgh-server/webhooks.rb +2 -0
  11. data/lib/txgh-server/webhooks/git.rb +15 -0
  12. data/lib/txgh-server/webhooks/git/blank_attributes.rb +20 -0
  13. data/lib/txgh-server/webhooks/git/delete_attributes.rb +54 -0
  14. data/lib/txgh-server/webhooks/git/delete_handler.rb +45 -0
  15. data/lib/txgh-server/webhooks/git/ping_handler.rb +21 -0
  16. data/lib/txgh-server/webhooks/git/push_attributes.rb +79 -0
  17. data/lib/txgh-server/webhooks/git/push_handler.rb +98 -0
  18. data/lib/txgh-server/webhooks/git/request_handler.rb +76 -0
  19. data/lib/txgh-server/webhooks/git/status_updater.rb +15 -0
  20. data/lib/txgh-server/webhooks/github/blank_attributes.rb +1 -13
  21. data/lib/txgh-server/webhooks/github/delete_attributes.rb +1 -38
  22. data/lib/txgh-server/webhooks/github/delete_handler.rb +1 -38
  23. data/lib/txgh-server/webhooks/github/ping_handler.rb +1 -12
  24. data/lib/txgh-server/webhooks/github/push_attributes.rb +1 -51
  25. data/lib/txgh-server/webhooks/github/push_handler.rb +2 -88
  26. data/lib/txgh-server/webhooks/github/request_handler.rb +2 -47
  27. data/lib/txgh-server/webhooks/github/status_updater.rb +1 -9
  28. data/lib/txgh-server/webhooks/gitlab.rb +14 -0
  29. data/lib/txgh-server/webhooks/gitlab/blank_attributes.rb +8 -0
  30. data/lib/txgh-server/webhooks/gitlab/delete_attributes.rb +17 -0
  31. data/lib/txgh-server/webhooks/gitlab/delete_handler.rb +8 -0
  32. data/lib/txgh-server/webhooks/gitlab/push_attributes.rb +29 -0
  33. data/lib/txgh-server/webhooks/gitlab/push_handler.rb +13 -0
  34. data/lib/txgh-server/webhooks/gitlab/request_handler.rb +59 -0
  35. data/lib/txgh-server/webhooks/gitlab/status_updater.rb +37 -0
  36. data/lib/txgh-server/webhooks/transifex/request_handler.rb +1 -1
  37. data/spec/application_spec.rb +11 -11
  38. data/spec/download_handler_spec.rb +6 -8
  39. data/spec/github_request_auth_spec.rb +6 -8
  40. data/spec/gitlab_request_auth_spec.rb +26 -0
  41. data/spec/helpers/gitlab_payload_builder.rb +132 -0
  42. data/spec/integration/hooks_spec.rb +1 -1
  43. data/spec/tgz_stream_response_spec.rb +2 -4
  44. data/spec/transifex_request_auth_spec.rb +6 -8
  45. data/spec/webhooks/github/delete_attributes_spec.rb +2 -5
  46. data/spec/webhooks/github/delete_handler_spec.rb +4 -7
  47. data/spec/webhooks/github/ping_handler_spec.rb +2 -5
  48. data/spec/webhooks/github/push_attributes_spec.rb +3 -6
  49. data/spec/webhooks/github/push_handler_spec.rb +5 -8
  50. data/spec/webhooks/github/request_handler_spec.rb +8 -10
  51. data/spec/webhooks/github/status_updater_spec.rb +2 -4
  52. data/spec/webhooks/gitlab/delete_attributes_spec.rb +27 -0
  53. data/spec/webhooks/gitlab/delete_handler_spec.rb +34 -0
  54. data/spec/webhooks/gitlab/push_attributes_spec.rb +64 -0
  55. data/spec/webhooks/gitlab/push_handler_spec.rb +99 -0
  56. data/spec/webhooks/gitlab/request_handler_spec.rb +73 -0
  57. data/spec/webhooks/gitlab/status_updater_spec.rb +66 -0
  58. data/spec/webhooks/transifex/hook_handler_spec.rb +2 -5
  59. data/spec/webhooks/transifex/request_handler_spec.rb +3 -5
  60. data/spec/zip_stream_response_spec.rb +2 -4
  61. data/txgh-server.gemspec +1 -2
  62. metadata +35 -10
  63. data/spec/integration/payloads/github_postbody_l10n.json +0 -136
@@ -0,0 +1,73 @@
1
+ require 'spec_helper'
2
+ require 'helpers/gitlab_payload_builder'
3
+ require 'helpers/nil_logger'
4
+ require 'helpers/standard_txgh_setup'
5
+ require 'helpers/test_request'
6
+
7
+ describe TxghServer::Webhooks::Gitlab::RequestHandler do
8
+ include StandardTxghSetup
9
+
10
+ let(:logger) { NilLogger.new }
11
+ let(:ref) { 'heads/my_ref' }
12
+ let(:headers) { { 'HTTP_X_GITLAB_EVENT' => event } }
13
+ let(:body) { payload.to_json }
14
+ let(:request) { TestRequest.new(body: body, headers: headers) }
15
+ let(:handler) { described_class.new(request, logger) }
16
+
17
+ describe '#handle_request' do
18
+ context 'push event' do
19
+ let(:event) { 'Push Hook' }
20
+ let(:payload) { GitlabPayloadBuilder.push_payload(gitlab_repo_name, ref).tap { |p| p.add_commit } }
21
+
22
+ it 'does not execute if unauthorized' do
23
+ expect_any_instance_of(TxghServer::Webhooks::Gitlab::PushHandler).to_not receive(:execute)
24
+ response = handler.handle_request
25
+ expect(response.status).to eq(401)
26
+ end
27
+
28
+ context 'with an authentic request' do
29
+ before(:each) do
30
+ allow(handler).to receive(:authentic_request?).and_return(true)
31
+ end
32
+
33
+ it 'handles the request with the push handler' do
34
+ expect_any_instance_of(TxghServer::Webhooks::Gitlab::PushHandler).to receive(:execute).and_return(:response)
35
+ expect(handler.handle_request).to eq(:response)
36
+ end
37
+ end
38
+ end
39
+
40
+ context 'delete event' do
41
+ let(:event) { 'Push Hook' }
42
+ let(:payload) { GitlabPayloadBuilder.delete_payload(gitlab_repo_name, ref) }
43
+
44
+ it 'does not execute if unauthorized' do
45
+ expect_any_instance_of(TxghServer::Webhooks::Gitlab::DeleteHandler).to_not receive(:execute)
46
+ response = handler.handle_request
47
+ expect(response.status).to eq(401)
48
+ end
49
+
50
+ context 'with an authentic request' do
51
+ before(:each) do
52
+ allow(handler).to receive(:authentic_request?).and_return(true)
53
+ end
54
+
55
+ it 'handles the request with the delete handler' do
56
+ expect_any_instance_of(TxghServer::Webhooks::Gitlab::DeleteHandler).to receive(:execute).and_return(:response)
57
+ expect(handler.handle_request).to eq(:response)
58
+ end
59
+ end
60
+ end
61
+
62
+ context 'unrecognized event' do
63
+ let(:event) { 'foo' }
64
+ let(:payload) { { repository: { full_name: gitlab_repo_name } } }
65
+
66
+ it 'responds with a 400' do
67
+ allow(handler).to receive(:authentic_request?).and_return(true)
68
+ response = handler.handle_request
69
+ expect(response.status).to eq(400)
70
+ end
71
+ end
72
+ end
73
+ end
@@ -0,0 +1,66 @@
1
+ require 'spec_helper'
2
+ require 'helpers/standard_txgh_setup'
3
+
4
+ describe TxghServer::Webhooks::Gitlab::StatusUpdater do
5
+ include StandardTxghSetup
6
+
7
+ let(:updater) { TxghServer::Webhooks::Gitlab::StatusUpdater.new(transifex_project, gitlab_repo, ref) }
8
+ let(:gitlab_error_response) do
9
+ OpenStruct.new({
10
+ code: 404,
11
+ request: double(base_uri: 'https://gitlab.com/api/v3', path: '/foo'),
12
+ parsed_response: ::Gitlab::ObjectifiedHash.new(
13
+ error_description: 'Displayed error_description',
14
+ error: 'also will not be displayed'
15
+ )
16
+ })
17
+ end
18
+
19
+ describe '#report_error_and_update_status' do
20
+ let(:description) { 'An error done occurred, fool' }
21
+ let(:target_url) { 'http://you-goofed.com' }
22
+
23
+ let(:status_params) do
24
+ { description: description, target_url: target_url }
25
+ end
26
+
27
+ let(:error_params) { { foo: 'bar' } }
28
+
29
+ before(:each) do
30
+ Txgh.events.subscribe(Txgh::Events::ERROR_CHANNEL) { error_params }
31
+ Txgh.events.subscribe('gitlab.status.error') { status_params }
32
+ end
33
+
34
+ it 'reports the error and updates the status' do
35
+ expect(Txgh::GitlabStatus).to(
36
+ receive(:error).with(transifex_project, gitlab_repo, ref, status_params)
37
+ )
38
+
39
+ expect(Txgh.events).to receive(:publish_error!)
40
+ updater.report_error_and_update_status(StandardError.new)
41
+ end
42
+
43
+ it 'avoids blowing up on gitlab error' do
44
+ expect(Txgh::GitlabStatus).to(
45
+ receive(:error).and_raise(::Gitlab::Error::BadRequest.new(gitlab_error_response))
46
+ )
47
+
48
+ expect { updater.report_error_and_update_status(StandardError.new) }.to_not raise_error
49
+ end
50
+ end
51
+
52
+ describe '#update_status' do
53
+ it 'updates the gitlab status' do
54
+ expect(Txgh::GitlabStatus).to receive(:update)
55
+ updater.update_status
56
+ end
57
+
58
+ it 'avoids blowing up on gitlab error' do
59
+ expect(Txgh::GitlabStatus).to(
60
+ receive(:update).and_raise(::Gitlab::Error::BadRequest.new(gitlab_error_response))
61
+ )
62
+
63
+ expect { updater.update_status }.to_not raise_error
64
+ end
65
+ end
66
+ end
@@ -2,10 +2,7 @@ require 'spec_helper'
2
2
  require 'helpers/nil_logger'
3
3
  require 'helpers/standard_txgh_setup'
4
4
 
5
- include TxghServer
6
- include TxghServer::Webhooks::Transifex
7
-
8
- describe HookHandler do
5
+ describe TxghServer::Webhooks::Transifex::HookHandler do
9
6
  include StandardTxghSetup
10
7
 
11
8
  let(:requested_resource_slug) do
@@ -13,7 +10,7 @@ describe HookHandler do
13
10
  end
14
11
 
15
12
  let(:handler) do
16
- HookHandler.new(
13
+ TxghServer::Webhooks::Transifex::HookHandler.new(
17
14
  project: transifex_project,
18
15
  repo: github_repo,
19
16
  resource_slug: requested_resource_slug,
@@ -4,9 +4,7 @@ require 'helpers/standard_txgh_setup'
4
4
  require 'helpers/test_request'
5
5
  require 'uri'
6
6
 
7
- include TxghServer::Webhooks
8
-
9
- describe Transifex::RequestHandler do
7
+ describe TxghServer::Webhooks::Transifex::RequestHandler do
10
8
  include StandardTxghSetup
11
9
 
12
10
  let(:logger) { NilLogger.new }
@@ -44,7 +42,7 @@ describe Transifex::RequestHandler do
44
42
  end
45
43
 
46
44
  it 'does not execute if unauthorized' do
47
- expect_any_instance_of(Transifex::HookHandler).to_not receive(:execute)
45
+ expect_any_instance_of(TxghServer::Webhooks::Transifex::HookHandler).to_not receive(:execute)
48
46
  response = handler.handle_request
49
47
  expect(response.status).to eq(401)
50
48
  end
@@ -55,7 +53,7 @@ describe Transifex::RequestHandler do
55
53
  end
56
54
 
57
55
  it 'handles the request with the hook handler' do
58
- expect_any_instance_of(Transifex::HookHandler).to receive(:execute).and_return(:response)
56
+ expect_any_instance_of(TxghServer::Webhooks::Transifex::HookHandler).to receive(:execute).and_return(:response)
59
57
  expect(handler.handle_request).to eq(:response)
60
58
  end
61
59
 
@@ -1,9 +1,7 @@
1
1
  require 'spec_helper'
2
2
  require 'tempfile'
3
3
 
4
- include TxghServer
5
-
6
- describe ZipStreamResponse do
4
+ describe TxghServer::ZipStreamResponse do
7
5
  def read_zip_from(file)
8
6
  contents = {}
9
7
 
@@ -26,7 +24,7 @@ describe ZipStreamResponse do
26
24
  end
27
25
 
28
26
  let(:response) do
29
- ZipStreamResponse.new(attachment, enum)
27
+ described_class.new(attachment, enum)
30
28
  end
31
29
 
32
30
  describe '#write_to' do
@@ -11,13 +11,12 @@ Gem::Specification.new do |s|
11
11
  s.description = s.summary = 'An HTTP server for interacting with txgh.'
12
12
 
13
13
  s.platform = Gem::Platform::RUBY
14
- s.has_rdoc = true
15
14
 
16
15
  s.add_dependency 'mime-types', '~> 2.0'
17
16
  s.add_dependency 'sinatra', '~> 1.4'
18
17
  s.add_dependency 'sinatra-contrib', '~> 1.4'
19
18
  s.add_dependency 'rubyzip', '>= 1.0', '<= 1.1.2'
20
- s.add_dependency 'txgh', '~> 6.1'
19
+ s.add_dependency 'txgh', '7.0.0.beta'
21
20
 
22
21
  s.require_path = 'lib'
23
22
  s.files = Dir['{lib,spec}/**/*', 'README.md', 'txgh-server.gemspec', 'LICENSE']
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: txgh-server
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.0
4
+ version: 4.0.0.beta
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthew Jackowski
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2018-06-18 00:00:00.000000000 Z
12
+ date: 2020-03-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: mime-types
@@ -77,16 +77,16 @@ dependencies:
77
77
  name: txgh
78
78
  requirement: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - "~>"
80
+ - - '='
81
81
  - !ruby/object:Gem::Version
82
- version: '6.1'
82
+ version: 7.0.0.beta
83
83
  type: :runtime
84
84
  prerelease: false
85
85
  version_requirements: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - "~>"
87
+ - - '='
88
88
  - !ruby/object:Gem::Version
89
- version: '6.1'
89
+ version: 7.0.0.beta
90
90
  description: An HTTP server for interacting with txgh.
91
91
  email:
92
92
  - mattjjacko@gmail.com
@@ -100,6 +100,7 @@ files:
100
100
  - lib/txgh-server/application.rb
101
101
  - lib/txgh-server/download_handler.rb
102
102
  - lib/txgh-server/github_request_auth.rb
103
+ - lib/txgh-server/gitlab_request_auth.rb
103
104
  - lib/txgh-server/response.rb
104
105
  - lib/txgh-server/response_helpers.rb
105
106
  - lib/txgh-server/stream_response.rb
@@ -111,6 +112,15 @@ files:
111
112
  - lib/txgh-server/triggers/push_handler.rb
112
113
  - lib/txgh-server/version.rb
113
114
  - lib/txgh-server/webhooks.rb
115
+ - lib/txgh-server/webhooks/git.rb
116
+ - lib/txgh-server/webhooks/git/blank_attributes.rb
117
+ - lib/txgh-server/webhooks/git/delete_attributes.rb
118
+ - lib/txgh-server/webhooks/git/delete_handler.rb
119
+ - lib/txgh-server/webhooks/git/ping_handler.rb
120
+ - lib/txgh-server/webhooks/git/push_attributes.rb
121
+ - lib/txgh-server/webhooks/git/push_handler.rb
122
+ - lib/txgh-server/webhooks/git/request_handler.rb
123
+ - lib/txgh-server/webhooks/git/status_updater.rb
114
124
  - lib/txgh-server/webhooks/github.rb
115
125
  - lib/txgh-server/webhooks/github/blank_attributes.rb
116
126
  - lib/txgh-server/webhooks/github/delete_attributes.rb
@@ -120,6 +130,14 @@ files:
120
130
  - lib/txgh-server/webhooks/github/push_handler.rb
121
131
  - lib/txgh-server/webhooks/github/request_handler.rb
122
132
  - lib/txgh-server/webhooks/github/status_updater.rb
133
+ - lib/txgh-server/webhooks/gitlab.rb
134
+ - lib/txgh-server/webhooks/gitlab/blank_attributes.rb
135
+ - lib/txgh-server/webhooks/gitlab/delete_attributes.rb
136
+ - lib/txgh-server/webhooks/gitlab/delete_handler.rb
137
+ - lib/txgh-server/webhooks/gitlab/push_attributes.rb
138
+ - lib/txgh-server/webhooks/gitlab/push_handler.rb
139
+ - lib/txgh-server/webhooks/gitlab/request_handler.rb
140
+ - lib/txgh-server/webhooks/gitlab/status_updater.rb
123
141
  - lib/txgh-server/webhooks/transifex.rb
124
142
  - lib/txgh-server/webhooks/transifex/hook_handler.rb
125
143
  - lib/txgh-server/webhooks/transifex/request_handler.rb
@@ -127,7 +145,9 @@ files:
127
145
  - spec/application_spec.rb
128
146
  - spec/download_handler_spec.rb
129
147
  - spec/github_request_auth_spec.rb
148
+ - spec/gitlab_request_auth_spec.rb
130
149
  - spec/helpers/github_payload_builder.rb
150
+ - spec/helpers/gitlab_payload_builder.rb
131
151
  - spec/helpers/integration_setup.rb
132
152
  - spec/helpers/test_request.rb
133
153
  - spec/integration/cassettes/pull.yml
@@ -136,7 +156,6 @@ files:
136
156
  - spec/integration/config/tx.config
137
157
  - spec/integration/hooks_spec.rb
138
158
  - spec/integration/payloads/github_postbody.json
139
- - spec/integration/payloads/github_postbody_l10n.json
140
159
  - spec/integration/payloads/github_postbody_release.json
141
160
  - spec/integration/triggers_spec.rb
142
161
  - spec/spec_helper.rb
@@ -149,6 +168,12 @@ files:
149
168
  - spec/webhooks/github/push_handler_spec.rb
150
169
  - spec/webhooks/github/request_handler_spec.rb
151
170
  - spec/webhooks/github/status_updater_spec.rb
171
+ - spec/webhooks/gitlab/delete_attributes_spec.rb
172
+ - spec/webhooks/gitlab/delete_handler_spec.rb
173
+ - spec/webhooks/gitlab/push_attributes_spec.rb
174
+ - spec/webhooks/gitlab/push_handler_spec.rb
175
+ - spec/webhooks/gitlab/request_handler_spec.rb
176
+ - spec/webhooks/gitlab/status_updater_spec.rb
152
177
  - spec/webhooks/transifex/hook_handler_spec.rb
153
178
  - spec/webhooks/transifex/request_handler_spec.rb
154
179
  - spec/zip_stream_response_spec.rb
@@ -167,12 +192,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
167
192
  version: '0'
168
193
  required_rubygems_version: !ruby/object:Gem::Requirement
169
194
  requirements:
170
- - - ">="
195
+ - - ">"
171
196
  - !ruby/object:Gem::Version
172
- version: '0'
197
+ version: 1.3.1
173
198
  requirements: []
174
199
  rubyforge_project:
175
- rubygems_version: 2.4.5.5
200
+ rubygems_version: 2.7.6
176
201
  signing_key:
177
202
  specification_version: 4
178
203
  summary: An HTTP server for interacting with txgh.
@@ -1,136 +0,0 @@
1
- {
2
- "ref": "refs/tags/L10N",
3
- "before": "0000000000000000000000000000000000000000",
4
- "after": "6eebc3eee49e8d46f6dbec16fe3360961bfdd8ed",
5
- "created": true,
6
- "deleted": false,
7
- "forced": true,
8
- "base_ref": "refs/heads/master",
9
- "compare": "https://github.com/txgh-bot/txgh-test-resources/compare/L10N",
10
- "commits": [
11
-
12
- ],
13
- "head_commit": {
14
- "id": "6eebc3eee49e8d46f6dbec16fe3360961bfdd8ed",
15
- "distinct": true,
16
- "message": "10",
17
- "timestamp": "2015-11-19T12:56:33-08:00",
18
- "url": "https://github.com/txgh-bot/txgh-test-resources/commit/6eebc3eee49e8d46f6dbec16fe3360961bfdd8ed",
19
- "author": {
20
- "name": "Txgh Bot",
21
- "email": "txgh.bot@gmail.com",
22
- "username": "txgh-bot"
23
- },
24
- "committer": {
25
- "name": "Txgh Bot",
26
- "email": "txgh.bot@gmail.com",
27
- "username": "txgh-bot"
28
- },
29
- "added": [
30
-
31
- ],
32
- "removed": [
33
-
34
- ],
35
- "modified": [
36
- "sample.po"
37
- ]
38
- },
39
- "repository": {
40
- "id": 41740726,
41
- "name": "txgh-test-resources",
42
- "full_name": "txgh-bot/txgh-test-resources",
43
- "owner": {
44
- "name": "txgh-bot",
45
- "email": "txgh.bot@gmail.com"
46
- },
47
- "private": false,
48
- "html_url": "https://github.com/txgh-bot/txgh-test-resources",
49
- "description": "Translation test repo for txgh",
50
- "fork": false,
51
- "url": "https://github.com/txgh-bot/txgh-test-resources",
52
- "forks_url": "https://api.github.com/repos/txgh-bot/txgh-test-resources/forks",
53
- "keys_url": "https://api.github.com/repos/txgh-bot/txgh-test-resources/keys{/key_id}",
54
- "collaborators_url": "https://api.github.com/repos/txgh-bot/txgh-test-resources/collaborators{/collaborator}",
55
- "teams_url": "https://api.github.com/repos/txgh-bot/txgh-test-resources/teams",
56
- "hooks_url": "https://api.github.com/repos/txgh-bot/txgh-test-resources/hooks",
57
- "issue_events_url": "https://api.github.com/repos/txgh-bot/txgh-test-resources/issues/events{/number}",
58
- "events_url": "https://api.github.com/repos/txgh-bot/txgh-test-resources/events",
59
- "assignees_url": "https://api.github.com/repos/txgh-bot/txgh-test-resources/assignees{/user}",
60
- "branches_url": "https://api.github.com/repos/txgh-bot/txgh-test-resources/branches{/branch}",
61
- "tags_url": "https://api.github.com/repos/txgh-bot/txgh-test-resources/tags",
62
- "blobs_url": "https://api.github.com/repos/txgh-bot/txgh-test-resources/git/blobs{/sha}",
63
- "git_tags_url": "https://api.github.com/repos/txgh-bot/txgh-test-resources/git/tags{/sha}",
64
- "git_refs_url": "https://api.github.com/repos/txgh-bot/txgh-test-resources/git/refs{/sha}",
65
- "trees_url": "https://api.github.com/repos/txgh-bot/txgh-test-resources/git/trees{/sha}",
66
- "statuses_url": "https://api.github.com/repos/txgh-bot/txgh-test-resources/statuses/{sha}",
67
- "languages_url": "https://api.github.com/repos/txgh-bot/txgh-test-resources/languages",
68
- "stargazers_url": "https://api.github.com/repos/txgh-bot/txgh-test-resources/stargazers",
69
- "contributors_url": "https://api.github.com/repos/txgh-bot/txgh-test-resources/contributors",
70
- "subscribers_url": "https://api.github.com/repos/txgh-bot/txgh-test-resources/subscribers",
71
- "subscription_url": "https://api.github.com/repos/txgh-bot/txgh-test-resources/subscription",
72
- "commits_url": "https://api.github.com/repos/txgh-bot/txgh-test-resources/commits{/sha}",
73
- "git_commits_url": "https://api.github.com/repos/txgh-bot/txgh-test-resources/git/commits{/sha}",
74
- "comments_url": "https://api.github.com/repos/txgh-bot/txgh-test-resources/comments{/number}",
75
- "issue_comment_url": "https://api.github.com/repos/txgh-bot/txgh-test-resources/issues/comments{/number}",
76
- "contents_url": "https://api.github.com/repos/txgh-bot/txgh-test-resources/contents/{+path}",
77
- "compare_url": "https://api.github.com/repos/txgh-bot/txgh-test-resources/compare/{base}...{head}",
78
- "merges_url": "https://api.github.com/repos/txgh-bot/txgh-test-resources/merges",
79
- "archive_url": "https://api.github.com/repos/txgh-bot/txgh-test-resources/{archive_format}{/ref}",
80
- "downloads_url": "https://api.github.com/repos/txgh-bot/txgh-test-resources/downloads",
81
- "issues_url": "https://api.github.com/repos/txgh-bot/txgh-test-resources/issues{/number}",
82
- "pulls_url": "https://api.github.com/repos/txgh-bot/txgh-test-resources/pulls{/number}",
83
- "milestones_url": "https://api.github.com/repos/txgh-bot/txgh-test-resources/milestones{/number}",
84
- "notifications_url": "https://api.github.com/repos/txgh-bot/txgh-test-resources/notifications{?since,all,participating}",
85
- "labels_url": "https://api.github.com/repos/txgh-bot/txgh-test-resources/labels{/name}",
86
- "releases_url": "https://api.github.com/repos/txgh-bot/txgh-test-resources/releases{/id}",
87
- "created_at": 1441114620,
88
- "updated_at": "2015-09-01T13:37:00Z",
89
- "pushed_at": 1447966674,
90
- "git_url": "git://github.com/txgh-bot/txgh-test-resources.git",
91
- "ssh_url": "git@github.com:txgh-bot/txgh-test-resources.git",
92
- "clone_url": "https://github.com/txgh-bot/txgh-test-resources.git",
93
- "svn_url": "https://github.com/txgh-bot/txgh-test-resources",
94
- "homepage": null,
95
- "size": 12,
96
- "stargazers_count": 0,
97
- "watchers_count": 0,
98
- "language": null,
99
- "has_issues": true,
100
- "has_downloads": true,
101
- "has_wiki": true,
102
- "has_pages": false,
103
- "forks_count": 0,
104
- "mirror_url": null,
105
- "open_issues_count": 0,
106
- "forks": 0,
107
- "open_issues": 0,
108
- "watchers": 0,
109
- "default_branch": "master",
110
- "stargazers": 0,
111
- "master_branch": "master"
112
- },
113
- "pusher": {
114
- "name": "txgh-bot",
115
- "email": "txgh.bot@gmail.com"
116
- },
117
- "sender": {
118
- "login": "txgh-bot",
119
- "id": 974299,
120
- "avatar_url": "https://avatars.githubusercontent.com/u/974299?v=3",
121
- "gravatar_id": "",
122
- "url": "https://api.github.com/users/txgh-bot",
123
- "html_url": "https://github.com/txgh-bot",
124
- "followers_url": "https://api.github.com/users/txgh-bot/followers",
125
- "following_url": "https://api.github.com/users/txgh-bot/following{/other_user}",
126
- "gists_url": "https://api.github.com/users/txgh-bot/gists{/gist_id}",
127
- "starred_url": "https://api.github.com/users/txgh-bot/starred{/owner}{/repo}",
128
- "subscriptions_url": "https://api.github.com/users/txgh-bot/subscriptions",
129
- "organizations_url": "https://api.github.com/users/txgh-bot/orgs",
130
- "repos_url": "https://api.github.com/users/txgh-bot/repos",
131
- "events_url": "https://api.github.com/users/txgh-bot/events{/privacy}",
132
- "received_events_url": "https://api.github.com/users/txgh-bot/received_events",
133
- "type": "User",
134
- "site_admin": false
135
- }
136
- }