dependabot-nuget 0.144.0 → 0.145.4

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: 5a731ee180bd0babe744617aa48644496bcfc970079816896a62488bac0f2faa
4
- data.tar.gz: 382b5dd9ff837756128801e483e1d0b52b56835fc14c6ad0a77a1f83de428b14
3
+ metadata.gz: 509b4e32324a90de3f53a92b18a10ba69ee289832b2c5e055a64509e7ba44692
4
+ data.tar.gz: caaeb4becac7f1704441184b30103d4715b5cc33e3f3be44c9d2b21c5a4c0592
5
5
  SHA512:
6
- metadata.gz: 48d2dee3f5259e8e30cb1260c1aa36062317be5a0e6618782263bb7ef651c59a203b05cc2b6c6656eac7ff021270fc6b928496e03ae87c4d19f31e2824b7df40
7
- data.tar.gz: '078102f4f979baecbff1005e423711c8e0bdd8a69ea19470f70115e6b71ea1bf0c3d97ec68630836228f866b0dc9ba4afcb258175499062ae35b7e3c7d7cd173'
6
+ metadata.gz: f8f6b6914a5ecd15bdddbcb1f1912e63b96a9bcb87a094e25243e5ab53090d87a37200f3675c3d91d83a86c56f7270352eeb64f998d041b0618bbedbdecdad2e
7
+ data.tar.gz: 7ff33ae737369fdb3d282e0e902ff468ef2e63980d7d696aac231cbc4245db4a8cd77647593b2c5d7e92139f959a3c51d3c54d4ce69252abbec881f9df204744
@@ -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.144.0
4
+ version: 0.145.4
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-05 00:00:00.000000000 Z
11
+ date: 2021-05-10 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.144.0
19
+ version: 0.145.4
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.144.0
26
+ version: 0.145.4
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