dependabot-nuget 0.143.6 → 0.145.3

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: c0e5ec4cec1379429e7a6db7c0364e52fd33640595e47d1eb42e6557f43e04ac
4
- data.tar.gz: 79f68529b74f78cdb1e8b93d8a6c5ac2a5f477597330f0c2eb6891286a9c444e
3
+ metadata.gz: d297cc796e1b02a94defd551f6c35505b7b6041e221ea517f9d9d3764bdd54f5
4
+ data.tar.gz: 15f046f5501cb286e3fc1c757752f17b40f845f0a11f15a618638cf50a6e1a40
5
5
  SHA512:
6
- metadata.gz: 74aa7abb42652871a25c1f8b37e6dbb0c1397dad31860f6f100542e3f154aae9f14c8ffe70c2575a30a3c16e0f1783b2f89ecaba38a5ae0ad4c8f3ad9cf0174e
7
- data.tar.gz: 912a2bc9b192096826eca109e605987d5c24a4fca728406e28e91b402465ddb53070885efb2282a0fdcf967668163ff111de1a9121469c3d97b428dc56aa236b
6
+ metadata.gz: 6b2b5a8fe28a8db21c4aee70faa3287c1d17f686c91a5ff3d5f4018177d9a1de1c7f016bad3d88abf46c633e9699a66fdbc01772089eb93a3709ff90a5b8a225
7
+ data.tar.gz: d6748cea5c22d00a7bf2eb4215c8b0b5be6e5aee357c01d138f2ed337ca4b0881e9c8bd3ab069fbc4714fd340b0e1c94b6578d0b558acc57dfcfda3346437f4a
@@ -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.143.6
4
+ version: 0.145.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dependabot
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-04-30 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.143.6
19
+ version: 0.145.3
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.143.6
26
+ version: 0.145.3
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