dependabot-nuget 0.145.1 → 0.145.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: 37fe2a45777b3c8e967624e5c260f3a56fd83de7085eb8bf737f48acafa48b5c
4
- data.tar.gz: 47e4ba5df6e3d26129742a0dbccda1c8f80d0ab4043a7422da4848fa7861858a
3
+ metadata.gz: 52d629fb65085fe2ba42f1146a516978f751a10c4e8e3751696f3e61a0a707a3
4
+ data.tar.gz: b6fab20229edb3be27a8f9f3e099516d5e99f45f9c59a5648302e7ba1283ed94
5
5
  SHA512:
6
- metadata.gz: dbc78cc4eb83e32158816358d06974e96974ad8937fc9068dbc775cc0c69dcbec582a001d4a31c47b3d580e21d9d3fb29994ab7c5351b16ce837bde7151d3560
7
- data.tar.gz: 66740c29dcdc262291e405faaeaa79eb95607f59801a509fcc7354e23d453629c8c13040d0f0de0c87ee3c8cb96faea511c4b288d218b82f35e86c7a4bc3cde2
6
+ metadata.gz: 389596d77cf162e0af83ed032013372008c53127a17bd31823b2c738fc7867f86aa07f8b4f3213ef8f3c35f51077c4314c2e4b9d652fb22ddeda33b72916d7aa
7
+ data.tar.gz: 9fe1376597dd60fd78fd0ea496ef173296240d5382a9e3cef6d65671a7afecb30acf960b881fdeadc6749673cb42c1230d20326d149ef754267ba487585dc2a0
@@ -210,14 +210,8 @@ module Dependabot
210
210
  @v2_nuget_listings ||=
211
211
  dependency_urls.
212
212
  select { |details| details.fetch(:repository_type) == "v2" }.
213
- map do |url_details|
214
- response = Excon.get(
215
- url_details[:versions_url],
216
- idempotent: true,
217
- **SharedHelpers.excon_defaults(
218
- excon_options.merge(headers: url_details[:auth_header])
219
- )
220
- )
213
+ flat_map { |url_details| fetch_paginated_v2_nuget_listings(url_details) }.
214
+ map do |url_details, response|
221
215
  next unless response.status == 200
222
216
 
223
217
  {
@@ -227,6 +221,39 @@ module Dependabot
227
221
  end.compact
228
222
  end
229
223
 
224
+ def fetch_paginated_v2_nuget_listings(url_details, results = {})
225
+ response = Excon.get(
226
+ url_details[:versions_url],
227
+ idempotent: true,
228
+ **SharedHelpers.excon_defaults(excon_options.merge(headers: url_details[:auth_header]))
229
+ )
230
+
231
+ # NOTE: Short circuit if we get a circular next link
232
+ return results.to_a if results.key?(url_details)
233
+
234
+ results[url_details] = response
235
+
236
+ if (link_href = fetch_v2_next_link_href(response.body))
237
+ url_details = url_details.dup
238
+ url_details[:versions_url] = link_href
239
+ fetch_paginated_v2_nuget_listings(url_details, results)
240
+ end
241
+
242
+ results.to_a
243
+ end
244
+
245
+ def fetch_v2_next_link_href(xml_body)
246
+ doc = Nokogiri::XML(xml_body)
247
+ doc.remove_namespaces!
248
+ link_node = doc.xpath("/feed/link").find do |node|
249
+ rel = node.attribute("rel").value.strip
250
+ rel == "next"
251
+ end
252
+ link_node.attribute("href").value.strip if link_node
253
+ rescue Nokogiri::XML::XPath::SyntaxError
254
+ nil
255
+ end
256
+
230
257
  def versions_for_v3_repository(repository_details)
231
258
  # If we have a search URL that returns results we use it
232
259
  # (since it will exclude unlisted versions)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dependabot-nuget
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.145.1
4
+ version: 0.145.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dependabot
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-05-06 00:00:00.000000000 Z
11
+ date: 2021-05-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dependabot-common
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 0.145.1
19
+ version: 0.145.2
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 0.145.1
26
+ version: 0.145.2
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: byebug
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -100,14 +100,14 @@ dependencies:
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: 1.13.0
103
+ version: 1.14.0
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: 1.13.0
110
+ version: 1.14.0
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: simplecov
113
113
  requirement: !ruby/object:Gem::Requirement