txgh-server 4.0.0.beta → 4.0.0.beta2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 624a1efbe56943dcd522f2f2c9bc580cc5669e3098a14df6f9d55df17fe878d9
4
- data.tar.gz: e017f94f32be4224734a781c1b292c4bbde84543ed52ff12f3eda220071cff7f
3
+ metadata.gz: b75bee8da3b944c3ac42c25e6222b834f1d3045d421259322ec96f2983ac1202
4
+ data.tar.gz: 746b67747dbda0cee30ea11702b9d39c8d74de63d58618a6e5fa5f774e8658c4
5
5
  SHA512:
6
- metadata.gz: 4f577c8c66c7492acd7754cc4f320559fa4397d5bcc190ae822c36042d4c16f37e7a696e7e1ab1e72af52dfeb159e50efbac4857aa220097fff33b1d7fdcb8a2
7
- data.tar.gz: 4e4123765f6c42a35b57e8de274c106c571bf9255ec5e254db32c0c349afcde73024d31009cf6ab8a307abc14af0cae27027d931f3be62bbad4702d96ec44776
6
+ metadata.gz: 3b3bbf21430a0440970e081104dd25c1ce8dc5da12fe2c2b635117de6fdac16d3188905d51f4c2e9bce6282b079230ec79b6fe7094e6b426f8eed92cac1b7df1
7
+ data.tar.gz: 9debdbd596ef53db7b9af7a8cf2df9746518fde6bfdeef78f53a41c9d1ed29159cfac04a3f446c683c1dbcf8452e7de9318beb7815f0bab0ba5680b832043dfc
@@ -1,3 +1,3 @@
1
1
  module TxghServer
2
- VERSION = '4.0.0.beta'
2
+ VERSION = '4.0.0.beta2'
3
3
  end
@@ -30,7 +30,7 @@ describe TxghServer::DownloadHandler do
30
30
  it 'responds with a streaming zip and has the project name as the attachment' do
31
31
  response = described_class.handle_request(request)
32
32
  expect(response).to be_streaming
33
- expect(response).to be_a(ZipStreamResponse)
33
+ expect(response).to be_a(TxghServer::ZipStreamResponse)
34
34
  expect(response.attachment).to eq(project_name)
35
35
  end
36
36
 
@@ -40,7 +40,7 @@ describe TxghServer::DownloadHandler do
40
40
  it 'responds with a streaming tgz download' do
41
41
  response = described_class.handle_request(request)
42
42
  expect(response).to be_streaming
43
- expect(response).to be_a(TgzStreamResponse)
43
+ expect(response).to be_a(TxghServer::TgzStreamResponse)
44
44
  end
45
45
  end
46
46
 
@@ -60,7 +60,7 @@ describe TxghServer::DownloadHandler do
60
60
  end
61
61
 
62
62
  it 'responds with a streaming zip download' do
63
- expect(handler.execute).to be_a(ZipStreamResponse)
63
+ expect(handler.execute).to be_a(TxghServer::ZipStreamResponse)
64
64
  end
65
65
 
66
66
  it 'responds with the project name as the attachment' do
@@ -72,7 +72,7 @@ describe TxghServer::DownloadHandler do
72
72
  let(:format) { '.tgz' }
73
73
 
74
74
  it 'responds with a streaming tgz download' do
75
- expect(handler.execute).to be_a(TgzStreamResponse)
75
+ expect(handler.execute).to be_a(TxghServer::TgzStreamResponse)
76
76
  end
77
77
  end
78
78
 
@@ -1,40 +1,75 @@
1
1
  module IntegrationSetup
2
2
  extend RSpec::SharedContext
3
3
 
4
+ let(:git_source) { 'github' }
5
+ let(:project_name) { 'test-project-88' }
6
+ let(:repo_name) { 'txgh-bot/txgh-test-resources' }
7
+
4
8
  let(:base_config) do
5
- {
6
- 'github' => {
7
- 'repos' => {
8
- 'txgh-bot/txgh-test-resources' => {
9
- 'api_username' => 'txgh-bot',
10
- # github will auto-revoke a token if they notice it in one of your commits ;)
11
- 'api_token' => Base64.decode64('YjViYWY3Nzk5NTdkMzVlMmI0OGZmYjk4YThlY2M1ZDY0NzAwNWRhZA=='),
12
- 'push_source_to' => 'test-project-88',
13
- 'branch' => 'master'
9
+ if git_source == 'github'
10
+ {
11
+ git_source => {
12
+ 'repos' => {
13
+ repo_name => {
14
+ 'api_username' => 'txgh-bot',
15
+ # github will auto-revoke a token if they notice it in one of your commits ;)
16
+ 'api_token' => Base64.decode64('YjViYWY3Nzk5NTdkMzVlMmI0OGZmYjk4YThlY2M1ZDY0NzAwNWRhZA=='),
17
+ 'push_source_to' => project_name,
18
+ 'branch' => 'master',
19
+ 'webhook_secret' => '18d3998f576dfe933357104b87abfd61'
20
+ }
21
+ }
22
+ },
23
+ 'transifex' => {
24
+ 'projects' => {
25
+ project_name => {
26
+ 'tx_config' => 'file://./config/tx.config',
27
+ 'api_username' => 'txgh.bot',
28
+ 'api_password' => '2aqFGW99fPRKWvXBPjbrxkdiR',
29
+ 'push_translations_to' => 'txgh-bot/txgh-test-resources',
30
+ 'webhook_secret' => 'fce95b1748fd638c22174d34200f10cf',
31
+ 'languages' => ['el_GR']
32
+ }
14
33
  }
15
34
  }
16
- },
17
- 'transifex' => {
18
- 'projects' => {
19
- 'test-project-88' => {
20
- 'tx_config' => 'file://./config/tx.config',
21
- 'api_username' => 'txgh.bot',
22
- 'api_password' => '2aqFGW99fPRKWvXBPjbrxkdiR',
23
- 'push_translations_to' => 'txgh-bot/txgh-test-resources'
35
+ }
36
+ else
37
+ {
38
+ git_source => {
39
+ 'repos' => {
40
+ repo_name => {
41
+ 'api_token' => Base64.decode64('a3M1LV85TmFTaUwtOU5TUVJhcjE='),
42
+ 'push_source_to' => project_name,
43
+ 'branch' => 'all',
44
+ 'webhook_secret' => '123456789'
45
+ }
46
+ }
47
+ },
48
+ 'transifex' => {
49
+ 'projects' => {
50
+ project_name => {
51
+ 'organization' => 'lumos-labs',
52
+ 'tx_config' => 'file://./config/tx_gitlab.config',
53
+ 'api_username' => 'txgh.bot',
54
+ 'api_password' => '2aqFGW99fPRKWvXBPjbrxkdiR',
55
+ 'push_translations_to' => 'idanci/txgl-test',
56
+ 'webhook_secret' => '123456789',
57
+ 'languages' => ['de']
58
+ }
24
59
  }
25
60
  }
26
61
  }
27
- }
62
+ end
28
63
  end
29
64
 
30
65
  before(:all) do
31
66
  VCR.configure do |config|
32
67
  config.filter_sensitive_data('<GITHUB_TOKEN>') do
33
- base_config['github']['repos']['txgh-bot/txgh-test-resources']['api_token']
68
+ base_config[git_source]['repos'][repo_name]['api_token']
34
69
  end
35
70
 
36
71
  config.filter_sensitive_data('<TRANSIFEX_PASSWORD>') do
37
- base_config['transifex']['projects']['test-project-88']['api_password']
72
+ base_config['transifex']['projects'][project_name]['api_password']
38
73
  end
39
74
  end
40
75
  end
@@ -0,0 +1,446 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://gitlab.com/api/v4/projects/idanci%2Ftxgl-test/repository/files/config%2Flocales%2Fen.yml?ref=test_hook
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept:
11
+ - application/json
12
+ Content-Type:
13
+ - application/x-www-form-urlencoded
14
+ User-Agent:
15
+ - Gitlab Ruby Gem 4.14.1
16
+ Private-Token:
17
+ - GITLAB_TOKEN
18
+ response:
19
+ status:
20
+ code: 200
21
+ message: OK
22
+ headers:
23
+ Server:
24
+ - nginx
25
+ Date:
26
+ - Thu, 26 Mar 2020 17:18:41 GMT
27
+ Content-Type:
28
+ - application/json
29
+ Content-Length:
30
+ - '624'
31
+ Cache-Control:
32
+ - max-age=0, private, must-revalidate
33
+ Etag:
34
+ - W/"e1ac536e3864cf5aafd56c71c1b9b227"
35
+ Vary:
36
+ - Origin
37
+ X-Content-Type-Options:
38
+ - nosniff
39
+ X-Frame-Options:
40
+ - SAMEORIGIN
41
+ X-Gitlab-Blob-Id:
42
+ - 000fd9156a0f5c8518a34ab5117654d70ba01752
43
+ X-Gitlab-Commit-Id:
44
+ - 3cb2cae6db2f31fa91061a0e04cc2cbcc26502d6
45
+ X-Gitlab-Content-Sha256:
46
+ - f4c639c3d033e282387f0a2c2cdacad7c503ea74484735240fbd84198d48d6bc
47
+ X-Gitlab-Encoding:
48
+ - base64
49
+ X-Gitlab-File-Name:
50
+ - en.yml
51
+ X-Gitlab-File-Path:
52
+ - config/locales/en.yml
53
+ X-Gitlab-Last-Commit-Id:
54
+ - 3cb2cae6db2f31fa91061a0e04cc2cbcc26502d6
55
+ X-Gitlab-Ref:
56
+ - test_hook
57
+ X-Gitlab-Size:
58
+ - '188'
59
+ X-Request-Id:
60
+ - r1ybeUijJB4
61
+ X-Runtime:
62
+ - '0.049508'
63
+ Strict-Transport-Security:
64
+ - max-age=31536000
65
+ Referrer-Policy:
66
+ - strict-origin-when-cross-origin
67
+ Ratelimit-Limit:
68
+ - '600'
69
+ Ratelimit-Observed:
70
+ - '1'
71
+ Ratelimit-Remaining:
72
+ - '599'
73
+ Ratelimit-Reset:
74
+ - '1585243181'
75
+ Ratelimit-Resettime:
76
+ - Thu, 26 Mar 2020 17:19:41 GMT
77
+ Gitlab-Lb:
78
+ - fe-08-lb-gprd
79
+ Gitlab-Sv:
80
+ - localhost
81
+ body:
82
+ encoding: UTF-8
83
+ string: '{"file_name":"en.yml","file_path":"config/locales/en.yml","size":188,"encoding":"base64","content_sha256":"f4c639c3d033e282387f0a2c2cdacad7c503ea74484735240fbd84198d48d6bc","ref":"test_hook","blob_id":"000fd9156a0f5c8518a34ab5117654d70ba01752","commit_id":"3cb2cae6db2f31fa91061a0e04cc2cbcc26502d6","last_commit_id":"3cb2cae6db2f31fa91061a0e04cc2cbcc26502d6","content":"ZW46CiAgdGVzdDogdGVzdAogIHRlc3QyOiB0ZXN0MgogIHRlc3QzOiB0ZXN0MwogIHRlc3Q0OiB0ZXN0NAogIHRlc3Q1OiB0ZXN0NQogIHRlc3Q2OiB0ZXN0NgogIHRlc3Q3OiB0ZXN0NwogIHRlc3Q4OiB0ZXN0OAogIHRlc3Q5OiB0ZXN0OQogIHRlc3QxMDogdGVzdDEwCiAgdGVzdDExOiB0ZXN0MTEKICB0ZXN0MTI6IHRlc3QxMgo="}'
84
+ http_version:
85
+ recorded_at: Thu, 26 Mar 2020 17:18:42 GMT
86
+ - request:
87
+ method: get
88
+ uri: https://www.transifex.com/api/2/project/txgl-test/resource/enyml-heads_test_hook/
89
+ body:
90
+ encoding: US-ASCII
91
+ string: ''
92
+ headers:
93
+ User-Agent:
94
+ - Faraday v0.17.3
95
+ Authorization:
96
+ - Basic AUTH
97
+ Accept:
98
+ - application/json
99
+ Accept-Encoding:
100
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
101
+ response:
102
+ status:
103
+ code: 404
104
+ message: Not Found
105
+ headers:
106
+ Server:
107
+ - nginx
108
+ Vary:
109
+ - Authorization, Host, Accept-Language, Cookie
110
+ Cache-Control:
111
+ - no-cache, no-store, must-revalidate, max-age=0
112
+ Content-Type:
113
+ - text/plain
114
+ Date:
115
+ - Thu, 26 Mar 2020 17:18:42 GMT
116
+ Expires:
117
+ - Thu, 26 Mar 2020 17:18:42 GMT
118
+ Content-Language:
119
+ - en
120
+ Connection:
121
+ - keep-alive
122
+ Set-Cookie:
123
+ - X-Mapping-fjhppofk=371E5B112B2394FA3017E8BE0809059C; path=/
124
+ X-Frame-Options:
125
+ - SAMEORIGIN
126
+ Content-Length:
127
+ - '9'
128
+ body:
129
+ encoding: UTF-8
130
+ string: Not Found
131
+ http_version:
132
+ recorded_at: Thu, 26 Mar 2020 17:18:43 GMT
133
+ - request:
134
+ method: post
135
+ uri: https://www.transifex.com/api/2/project/txgl-test/resources/
136
+ body:
137
+ encoding: UTF-8
138
+ string: "-------------RubyMultipartPost-87145cb29ab8ab8b5cb748ea0ec95cdd\r\nContent-Disposition:
139
+ form-data; name=\"slug\"\r\n\r\nenyml-heads_test_hook\r\n-------------RubyMultipartPost-87145cb29ab8ab8b5cb748ea0ec95cdd\r\nContent-Disposition:
140
+ form-data; name=\"name\"\r\n\r\nconfig/locales/en.yml (heads/test_hook)\r\n-------------RubyMultipartPost-87145cb29ab8ab8b5cb748ea0ec95cdd\r\nContent-Disposition:
141
+ form-data; name=\"i18n_type\"\r\n\r\nYML\r\n-------------RubyMultipartPost-87145cb29ab8ab8b5cb748ea0ec95cdd\r\nContent-Disposition:
142
+ form-data; name=\"categories\"\r\n\r\nauthor:Ivan_Danci branch:heads/test_hook\r\n-------------RubyMultipartPost-87145cb29ab8ab8b5cb748ea0ec95cdd\r\nContent-Disposition:
143
+ form-data; name=\"content\"; filename=\"en.yml\"\r\nContent-Length: 188\r\nContent-Type:
144
+ application/octet-stream\r\nContent-Transfer-Encoding: binary\r\n\r\nen:\n
145
+ \ test: test\n test2: test2\n test3: test3\n test4: test4\n test5: test5\n
146
+ \ test6: test6\n test7: test7\n test8: test8\n test9: test9\n test10:
147
+ test10\n test11: test11\n test12: test12\n\r\n-------------RubyMultipartPost-87145cb29ab8ab8b5cb748ea0ec95cdd--\r\n"
148
+ headers:
149
+ User-Agent:
150
+ - Faraday v0.17.3
151
+ Authorization:
152
+ - Basic AUTH
153
+ Accept:
154
+ - application/json
155
+ Content-Type:
156
+ - multipart/form-data; boundary=-----------RubyMultipartPost-87145cb29ab8ab8b5cb748ea0ec95cdd
157
+ Content-Length:
158
+ - '1057'
159
+ Accept-Encoding:
160
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
161
+ response:
162
+ status:
163
+ code: 201
164
+ message: Created
165
+ headers:
166
+ Server:
167
+ - nginx
168
+ Vary:
169
+ - Authorization, Host, Accept-Language, Cookie
170
+ Cache-Control:
171
+ - no-cache, no-store, must-revalidate, max-age=0
172
+ Content-Type:
173
+ - application/json; charset=utf-8
174
+ Date:
175
+ - Thu, 26 Mar 2020 17:18:44 GMT
176
+ Expires:
177
+ - Thu, 26 Mar 2020 17:18:44 GMT
178
+ Content-Language:
179
+ - en
180
+ Connection:
181
+ - keep-alive
182
+ Set-Cookie:
183
+ - X-Mapping-fjhppofk=300CA58EE011BC6BC0E393EE4F2B31F6; path=/
184
+ X-Frame-Options:
185
+ - SAMEORIGIN
186
+ Content-Length:
187
+ - '10'
188
+ body:
189
+ encoding: UTF-8
190
+ string: "[12, 0, 0]"
191
+ http_version:
192
+ recorded_at: Thu, 26 Mar 2020 17:18:44 GMT
193
+ - request:
194
+ method: get
195
+ uri: https://www.transifex.com/api/2/project/txgl-test/resources/
196
+ body:
197
+ encoding: US-ASCII
198
+ string: ''
199
+ headers:
200
+ User-Agent:
201
+ - Faraday v0.17.3
202
+ Authorization:
203
+ - Basic AUTH
204
+ Accept:
205
+ - application/json
206
+ Accept-Encoding:
207
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
208
+ response:
209
+ status:
210
+ code: 200
211
+ message: OK
212
+ headers:
213
+ Server:
214
+ - nginx
215
+ Vary:
216
+ - Accept-Encoding
217
+ - Authorization, Host, Accept-Language, Cookie
218
+ Cache-Control:
219
+ - no-cache, no-store, must-revalidate, max-age=0
220
+ Content-Type:
221
+ - application/json; charset=utf-8
222
+ Date:
223
+ - Thu, 26 Mar 2020 17:18:45 GMT
224
+ Expires:
225
+ - Thu, 26 Mar 2020 17:18:45 GMT
226
+ Transfer-Encoding:
227
+ - chunked
228
+ Content-Language:
229
+ - en
230
+ X-Content-Type-Options:
231
+ - nosniff
232
+ Connection:
233
+ - keep-alive
234
+ Set-Cookie:
235
+ - X-Mapping-fjhppofk=371E5B112B2394FA3017E8BE0809059C; path=/
236
+ X-Frame-Options:
237
+ - SAMEORIGIN
238
+ body:
239
+ encoding: ASCII-8BIT
240
+ string: "[\n {\n \"source_language_code\": \"en\", \n \"name\":
241
+ \"config/locales/en.yml (heads/master)\", \n \"i18n_type\": \"YAML_GENERIC\",
242
+ \n \"priority\": \"0\", \n \"slug\": \"enyml-heads_master\",
243
+ \n \"categories\": [\n \"branch:heads/master\", \n \"author:Ivan_Danci\"\n
244
+ \ ], \n \"metadata\": []\n }, \n {\n \"source_language_code\":
245
+ \"en\", \n \"name\": \"config/locales/en.yml (heads/test_hook)\", \n
246
+ \ \"i18n_type\": \"YML\", \n \"priority\": \"1\", \n \"slug\":
247
+ \"enyml-heads_test_hook\", \n \"categories\": [\n \"author:Ivan_Danci
248
+ branch:heads/test_hook\"\n ], \n \"metadata\": []\n }\n]"
249
+ http_version:
250
+ recorded_at: Thu, 26 Mar 2020 17:18:45 GMT
251
+ - request:
252
+ method: get
253
+ uri: https://gitlab.com/api/v4/projects/idanci%2Ftxgl-test/repository/commits/test_hook
254
+ body:
255
+ encoding: US-ASCII
256
+ string: ''
257
+ headers:
258
+ Accept:
259
+ - application/json
260
+ Content-Type:
261
+ - application/x-www-form-urlencoded
262
+ User-Agent:
263
+ - Gitlab Ruby Gem 4.14.1
264
+ Private-Token:
265
+ - GITLAB_TOKEN
266
+ response:
267
+ status:
268
+ code: 200
269
+ message: OK
270
+ headers:
271
+ Server:
272
+ - nginx
273
+ Date:
274
+ - Thu, 26 Mar 2020 17:18:46 GMT
275
+ Content-Type:
276
+ - application/json
277
+ Content-Length:
278
+ - '636'
279
+ Cache-Control:
280
+ - max-age=0, private, must-revalidate
281
+ Etag:
282
+ - W/"e31b8cbd9e69b70652fc4d5ab91c71e9"
283
+ Vary:
284
+ - Origin
285
+ X-Content-Type-Options:
286
+ - nosniff
287
+ X-Frame-Options:
288
+ - SAMEORIGIN
289
+ X-Request-Id:
290
+ - kKqrmM19JN2
291
+ X-Runtime:
292
+ - '0.054249'
293
+ Strict-Transport-Security:
294
+ - max-age=31536000
295
+ Referrer-Policy:
296
+ - strict-origin-when-cross-origin
297
+ Ratelimit-Limit:
298
+ - '600'
299
+ Ratelimit-Observed:
300
+ - '2'
301
+ Ratelimit-Remaining:
302
+ - '598'
303
+ Ratelimit-Reset:
304
+ - '1585243186'
305
+ Ratelimit-Resettime:
306
+ - Thu, 26 Mar 2020 17:19:46 GMT
307
+ Gitlab-Lb:
308
+ - fe-03-lb-gprd
309
+ Gitlab-Sv:
310
+ - localhost
311
+ body:
312
+ encoding: UTF-8
313
+ string: '{"id":"3cb2cae6db2f31fa91061a0e04cc2cbcc26502d6","short_id":"3cb2cae6","created_at":"2020-03-26T18:39:57.000+02:00","parent_ids":["f5e0d6b6541e1fcded6b0a751b5a511523768109"],"title":"Test","message":"Test\n","author_name":"Ivan
314
+ Danci","author_email":"bah4uk@gmail.com","authored_date":"2020-03-26T18:39:57.000+02:00","committer_name":"Ivan
315
+ Danci","committer_email":"bah4uk@gmail.com","committed_date":"2020-03-26T18:39:57.000+02:00","web_url":"https://gitlab.com/idanci/txgl-test/-/commit/3cb2cae6db2f31fa91061a0e04cc2cbcc26502d6","stats":{"additions":1,"deletions":0,"total":1},"status":null,"project_id":17514841,"last_pipeline":null}'
316
+ http_version:
317
+ recorded_at: Thu, 26 Mar 2020 17:18:46 GMT
318
+ - request:
319
+ method: get
320
+ uri: https://www.transifex.com/api/2/project/txgl-test/resource/enyml-heads_test_hook/stats/
321
+ body:
322
+ encoding: US-ASCII
323
+ string: ''
324
+ headers:
325
+ User-Agent:
326
+ - Faraday v0.17.3
327
+ Authorization:
328
+ - Basic AUTH
329
+ Accept:
330
+ - application/json
331
+ Accept-Encoding:
332
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
333
+ response:
334
+ status:
335
+ code: 200
336
+ message: OK
337
+ headers:
338
+ Server:
339
+ - nginx
340
+ Vary:
341
+ - Accept-Encoding
342
+ - Authorization, Host, Accept-Language, Cookie
343
+ Cache-Control:
344
+ - no-cache, no-store, must-revalidate, max-age=0
345
+ Content-Type:
346
+ - application/json; charset=utf-8
347
+ Date:
348
+ - Thu, 26 Mar 2020 17:18:46 GMT
349
+ Expires:
350
+ - Thu, 26 Mar 2020 17:18:46 GMT
351
+ Transfer-Encoding:
352
+ - chunked
353
+ Content-Language:
354
+ - en
355
+ X-Content-Type-Options:
356
+ - nosniff
357
+ Connection:
358
+ - keep-alive
359
+ Set-Cookie:
360
+ - X-Mapping-fjhppofk=100E7CB61F7D5C274279F09EADF920A3; path=/
361
+ X-Frame-Options:
362
+ - SAMEORIGIN
363
+ body:
364
+ encoding: ASCII-8BIT
365
+ string: "{\n \"de\": {\n \"proofread\": 0, \n \"proofread_percentage\":
366
+ \"0%\", \n \"reviewed_percentage\": \"0%\", \n \"completed\":
367
+ \"0%\", \n \"untranslated_words\": 12, \n \"last_commiter\":
368
+ \"txgh.user\", \n \"reviewed\": 0, \n \"translated_entities\":
369
+ 0, \n \"translated_words\": 0, \n \"last_update\": \"2020-03-26
370
+ 17:18:43\", \n \"untranslated_entities\": 12\n }, \n \"en\":
371
+ {\n \"proofread\": 0, \n \"proofread_percentage\": \"0%\", \n
372
+ \ \"reviewed_percentage\": \"0%\", \n \"completed\": \"100%\",
373
+ \n \"untranslated_words\": 0, \n \"last_commiter\": \"txgh.user\",
374
+ \n \"reviewed\": 0, \n \"translated_entities\": 12, \n \"translated_words\":
375
+ 12, \n \"last_update\": \"2020-03-26 17:18:43\", \n \"untranslated_entities\":
376
+ 0\n }\n}"
377
+ http_version:
378
+ recorded_at: Thu, 26 Mar 2020 17:18:46 GMT
379
+ - request:
380
+ method: post
381
+ uri: https://gitlab.com/api/v4/projects/idanci%2Ftxgl-test/statuses/3cb2cae6?context=continuous-localization/txgh&description=12/24%20translations%20complete.&state=pending&target_url=https://www.transifex.com/lumos-labs/txgl-test/content
382
+ body:
383
+ encoding: UTF-8
384
+ string: ''
385
+ headers:
386
+ Accept:
387
+ - application/json
388
+ Content-Type:
389
+ - application/x-www-form-urlencoded
390
+ User-Agent:
391
+ - Gitlab Ruby Gem 4.14.1
392
+ Private-Token:
393
+ - GITLAB_TOKEN
394
+ response:
395
+ status:
396
+ code: 201
397
+ message: Created
398
+ headers:
399
+ Server:
400
+ - nginx
401
+ Date:
402
+ - Thu, 26 Mar 2020 17:18:48 GMT
403
+ Content-Type:
404
+ - application/json
405
+ Content-Length:
406
+ - '593'
407
+ Cache-Control:
408
+ - max-age=0, private, must-revalidate
409
+ Etag:
410
+ - W/"7afbf8aec65349a3c64cf3b78e44c03e"
411
+ Vary:
412
+ - Origin
413
+ X-Content-Type-Options:
414
+ - nosniff
415
+ X-Frame-Options:
416
+ - SAMEORIGIN
417
+ X-Request-Id:
418
+ - XxeNSIHmZ89
419
+ X-Runtime:
420
+ - '0.267418'
421
+ Strict-Transport-Security:
422
+ - max-age=31536000
423
+ Referrer-Policy:
424
+ - strict-origin-when-cross-origin
425
+ Ratelimit-Limit:
426
+ - '600'
427
+ Ratelimit-Observed:
428
+ - '2'
429
+ Ratelimit-Remaining:
430
+ - '598'
431
+ Ratelimit-Reset:
432
+ - '1585243188'
433
+ Ratelimit-Resettime:
434
+ - Thu, 26 Mar 2020 17:19:48 GMT
435
+ Gitlab-Lb:
436
+ - fe-21-lb-gprd
437
+ Gitlab-Sv:
438
+ - localhost
439
+ body:
440
+ encoding: UTF-8
441
+ string: '{"id":487202387,"sha":"3cb2cae6db2f31fa91061a0e04cc2cbcc26502d6","ref":"test_hook","status":"pending","name":"continuous-localization/txgh","target_url":"https://www.transifex.com/lumos-labs/txgl-test/content","description":"12/24
442
+ translations complete.","created_at":"2020-03-26T17:18:48.294Z","started_at":null,"finished_at":null,"allow_failure":false,"coverage":null,"author":{"id":745271,"name":"Ivan
443
+ Danci","username":"idanci","state":"active","avatar_url":"https://secure.gravatar.com/avatar/dbda838e9b7bca615829ac151e01f3c0?s=80\u0026d=identicon","web_url":"https://gitlab.com/idanci"}}'
444
+ http_version:
445
+ recorded_at: Thu, 26 Mar 2020 17:18:48 GMT
446
+ recorded_with: VCR 3.0.3