dependabot-common 0.129.1 → 0.129.2

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: 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