dependabot-common 0.129.1 → 0.129.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7eea4634c39d341b056956d51d57a9fea64190c1a172a96fb3317c356ca2532b
4
- data.tar.gz: 3f0ba3352b108078c8acc41231198906d6c57f6365988fd487c05fe0a0d83540
3
+ metadata.gz: c7174415aef0e15737217d314a45c2630aacae829ef4e513534ad6f4a4a20e0e
4
+ data.tar.gz: 0f995c8ec75f07917de8829386a070a2d1ac3dab21162299b2b0cb3fa83190b7
5
5
  SHA512:
6
- metadata.gz: 75e7fc049f1bea358690dbd12cc820e25b63d6c96ed8ee1e41fabbed50da001de4149f9a91aa1b952e8b87b23ceb2952b98ef36b7413be2ae09380705257996a
7
- data.tar.gz: 707447c34d57d896a73029b2b3b7d8a96914863eb4f6e611fd92b2f196ed602e42bd9784a1217487b9b1e89a23d6a832bdf4ea8e67a5d9d6621d89af0b627569
6
+ metadata.gz: 41418972531aedf8379e330be0fc3439ecf7ec7f9d247740be77f9dd2d4a7d6da7c63769fd615bcd378f4e13075a41fab52069557e7cd6f6227ed05058f33f2e
7
+ data.tar.gz: 81b2df6efb3465fd42563ea28fa728a170d0bac9b68f7bd0cf13cfe4783d04dbab2bed462e59f7c3cd0fbc4114fc085b57f43bf2fcaf32e66669d1f0a599708b
@@ -8,6 +8,14 @@ module Dependabot
8
8
  class Azure
9
9
  class NotFound < StandardError; end
10
10
 
11
+ class InternalServerError < StandardError; end
12
+
13
+ class ServiceNotAvailable < StandardError; end
14
+
15
+ class BadGateway < StandardError; end
16
+
17
+ RETRYABLE_ERRORS = [InternalServerError, BadGateway, ServiceNotAvailable].freeze
18
+
11
19
  MAX_PR_DESCRIPTION_LENGTH = 3999
12
20
 
13
21
  #######################
@@ -27,10 +35,11 @@ module Dependabot
27
35
  # Client #
28
36
  ##########
29
37
 
30
- def initialize(source, credentials)
38
+ def initialize(source, credentials, max_retries: 3)
31
39
  @source = source
32
40
  @credentials = credentials
33
41
  @auth_header = auth_header_for(credentials&.fetch("token", nil))
42
+ @max_retries = max_retries || 3
34
43
  end
35
44
 
36
45
  def fetch_commit(_repo, branch)
@@ -175,15 +184,24 @@ module Dependabot
175
184
  # rubocop:enable Metrics/ParameterLists
176
185
 
177
186
  def get(url)
178
- response = Excon.get(
179
- url,
180
- user: credentials&.fetch("username", nil),
181
- password: credentials&.fetch("password", nil),
182
- idempotent: true,
183
- **SharedHelpers.excon_defaults(
184
- headers: auth_header
187
+ response = nil
188
+
189
+ retry_connection_failures do
190
+ response = Excon.get(
191
+ url,
192
+ user: credentials&.fetch("username", nil),
193
+ password: credentials&.fetch("password", nil),
194
+ idempotent: true,
195
+ **SharedHelpers.excon_defaults(
196
+ headers: auth_header
197
+ )
185
198
  )
186
- )
199
+
200
+ raise InternalServerError if response.status == 500
201
+ raise BadGateway if response.status == 502
202
+ raise ServiceNotAvailable if response.status == 503
203
+ end
204
+
187
205
  raise NotFound if response.status == 404
188
206
 
189
207
  response
@@ -211,6 +229,17 @@ module Dependabot
211
229
 
212
230
  private
213
231
 
232
+ def retry_connection_failures
233
+ retry_attempt = 0
234
+
235
+ begin
236
+ yield
237
+ rescue *RETRYABLE_ERRORS
238
+ retry_attempt += 1
239
+ retry_attempt <= @max_retries ? retry : raise
240
+ end
241
+ end
242
+
214
243
  def auth_header_for(token)
215
244
  return {} unless token
216
245
 
@@ -18,6 +18,7 @@ module Dependabot
18
18
 
19
19
  def initialize(credentials:)
20
20
  @credentials = credentials
21
+ @auth_header = auth_header_for(credentials&.fetch("token", nil))
21
22
  end
22
23
 
23
24
  def fetch_commit(repo, branch)
@@ -72,7 +73,9 @@ module Dependabot
72
73
  user: credentials&.fetch("username", nil),
73
74
  password: credentials&.fetch("password", nil),
74
75
  idempotent: true,
75
- **Dependabot::SharedHelpers.excon_defaults
76
+ **Dependabot::SharedHelpers.excon_defaults(
77
+ headers: auth_header
78
+ )
76
79
  )
77
80
  raise Unauthorized if response.status == 401
78
81
  raise Forbidden if response.status == 403
@@ -89,6 +92,13 @@ module Dependabot
89
92
 
90
93
  private
91
94
 
95
+ def auth_header_for(token)
96
+ return {} unless token
97
+
98
+ { "Authorization" => "Bearer #{token}" }
99
+ end
100
+
101
+ attr_reader :auth_header
92
102
  attr_reader :credentials
93
103
 
94
104
  def base_url
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Dependabot
4
- VERSION = "0.129.1"
4
+ VERSION = "0.129.2"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dependabot-common
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.129.1
4
+ version: 0.129.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dependabot
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-12-21 00:00:00.000000000 Z
11
+ date: 2021-01-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk-codecommit
@@ -292,28 +292,28 @@ dependencies:
292
292
  requirements:
293
293
  - - "~>"
294
294
  - !ruby/object:Gem::Version
295
- version: 1.6.0
295
+ version: 1.7.0
296
296
  type: :development
297
297
  prerelease: false
298
298
  version_requirements: !ruby/object:Gem::Requirement
299
299
  requirements:
300
300
  - - "~>"
301
301
  - !ruby/object:Gem::Version
302
- version: 1.6.0
302
+ version: 1.7.0
303
303
  - !ruby/object:Gem::Dependency
304
304
  name: simplecov
305
305
  requirement: !ruby/object:Gem::Requirement
306
306
  requirements:
307
307
  - - "~>"
308
308
  - !ruby/object:Gem::Version
309
- version: 0.20.0
309
+ version: 0.21.0
310
310
  type: :development
311
311
  prerelease: false
312
312
  version_requirements: !ruby/object:Gem::Requirement
313
313
  requirements:
314
314
  - - "~>"
315
315
  - !ruby/object:Gem::Version
316
- version: 0.20.0
316
+ version: 0.21.0
317
317
  - !ruby/object:Gem::Dependency
318
318
  name: simplecov-console
319
319
  requirement: !ruby/object:Gem::Requirement