txgh-server 3.1.0 → 4.0.0.beta
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/lib/txgh-server.rb +1 -0
- data/lib/txgh-server/application.rb +7 -1
- data/lib/txgh-server/download_handler.rb +1 -1
- data/lib/txgh-server/gitlab_request_auth.rb +13 -0
- data/lib/txgh-server/triggers/handler.rb +18 -1
- data/lib/txgh-server/triggers/pull_handler.rb +1 -10
- data/lib/txgh-server/triggers/push_handler.rb +1 -10
- data/lib/txgh-server/version.rb +1 -1
- data/lib/txgh-server/webhooks.rb +2 -0
- data/lib/txgh-server/webhooks/git.rb +15 -0
- data/lib/txgh-server/webhooks/git/blank_attributes.rb +20 -0
- data/lib/txgh-server/webhooks/git/delete_attributes.rb +54 -0
- data/lib/txgh-server/webhooks/git/delete_handler.rb +45 -0
- data/lib/txgh-server/webhooks/git/ping_handler.rb +21 -0
- data/lib/txgh-server/webhooks/git/push_attributes.rb +79 -0
- data/lib/txgh-server/webhooks/git/push_handler.rb +98 -0
- data/lib/txgh-server/webhooks/git/request_handler.rb +76 -0
- data/lib/txgh-server/webhooks/git/status_updater.rb +15 -0
- data/lib/txgh-server/webhooks/github/blank_attributes.rb +1 -13
- data/lib/txgh-server/webhooks/github/delete_attributes.rb +1 -38
- data/lib/txgh-server/webhooks/github/delete_handler.rb +1 -38
- data/lib/txgh-server/webhooks/github/ping_handler.rb +1 -12
- data/lib/txgh-server/webhooks/github/push_attributes.rb +1 -51
- data/lib/txgh-server/webhooks/github/push_handler.rb +2 -88
- data/lib/txgh-server/webhooks/github/request_handler.rb +2 -47
- data/lib/txgh-server/webhooks/github/status_updater.rb +1 -9
- data/lib/txgh-server/webhooks/gitlab.rb +14 -0
- data/lib/txgh-server/webhooks/gitlab/blank_attributes.rb +8 -0
- data/lib/txgh-server/webhooks/gitlab/delete_attributes.rb +17 -0
- data/lib/txgh-server/webhooks/gitlab/delete_handler.rb +8 -0
- data/lib/txgh-server/webhooks/gitlab/push_attributes.rb +29 -0
- data/lib/txgh-server/webhooks/gitlab/push_handler.rb +13 -0
- data/lib/txgh-server/webhooks/gitlab/request_handler.rb +59 -0
- data/lib/txgh-server/webhooks/gitlab/status_updater.rb +37 -0
- data/lib/txgh-server/webhooks/transifex/request_handler.rb +1 -1
- data/spec/application_spec.rb +11 -11
- data/spec/download_handler_spec.rb +6 -8
- data/spec/github_request_auth_spec.rb +6 -8
- data/spec/gitlab_request_auth_spec.rb +26 -0
- data/spec/helpers/gitlab_payload_builder.rb +132 -0
- data/spec/integration/hooks_spec.rb +1 -1
- data/spec/tgz_stream_response_spec.rb +2 -4
- data/spec/transifex_request_auth_spec.rb +6 -8
- data/spec/webhooks/github/delete_attributes_spec.rb +2 -5
- data/spec/webhooks/github/delete_handler_spec.rb +4 -7
- data/spec/webhooks/github/ping_handler_spec.rb +2 -5
- data/spec/webhooks/github/push_attributes_spec.rb +3 -6
- data/spec/webhooks/github/push_handler_spec.rb +5 -8
- data/spec/webhooks/github/request_handler_spec.rb +8 -10
- data/spec/webhooks/github/status_updater_spec.rb +2 -4
- data/spec/webhooks/gitlab/delete_attributes_spec.rb +27 -0
- data/spec/webhooks/gitlab/delete_handler_spec.rb +34 -0
- data/spec/webhooks/gitlab/push_attributes_spec.rb +64 -0
- data/spec/webhooks/gitlab/push_handler_spec.rb +99 -0
- data/spec/webhooks/gitlab/request_handler_spec.rb +73 -0
- data/spec/webhooks/gitlab/status_updater_spec.rb +66 -0
- data/spec/webhooks/transifex/hook_handler_spec.rb +2 -5
- data/spec/webhooks/transifex/request_handler_spec.rb +3 -5
- data/spec/zip_stream_response_spec.rb +2 -4
- data/txgh-server.gemspec +1 -2
- metadata +35 -10
- 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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
27
|
+
described_class.new(attachment, enum)
|
30
28
|
end
|
31
29
|
|
32
30
|
describe '#write_to' do
|
data/txgh-server.gemspec
CHANGED
@@ -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', '
|
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:
|
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:
|
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:
|
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:
|
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:
|
197
|
+
version: 1.3.1
|
173
198
|
requirements: []
|
174
199
|
rubyforge_project:
|
175
|
-
rubygems_version: 2.
|
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
|
-
}
|