dependabot-nuget 0.145.0 → 0.146.0

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: 412f424bef4ab86f23adf3d733500bc7277ff55b6874c6ee616fc234fe1a24b1
4
- data.tar.gz: fdb5f85ca816523d02fe0818af0bcef2220ef6ac1051f945f2052f971c258cca
3
+ metadata.gz: 0733c5a197731c47f754e1487b34e13d7ed1ee12ab19a7a8c9b03b0d7449bc9d
4
+ data.tar.gz: 8ecb6ca70de1a6565f2c5d4f06d89a0368da3bef8edd79a240baea9714036168
5
5
  SHA512:
6
- metadata.gz: 233bfad156f96b898830edfff409da3a03aad7059fbfa4e665fc306180cdaa04aca0803758bcb120778e96217dfcd4654fb2fcb975e282710b5d7edb8580582e
7
- data.tar.gz: 3885c8187f35b67f89fa8c12328f189d7fcd72c834a955de227c518b036b346a5ed7adaea2e817aa1024343e730bdabae230506c1d7221b0853c150f0c1a75a6
6
+ metadata.gz: 638ddfd2d2194563a061df94d0cca052531286b9f906a8c733c4f25bddb064b9bec7f251998701b0044d5d53635fca6468279c8c58aec5d1898978bebd48ee7e
7
+ data.tar.gz: 20dbfe4eb823489f03a34121078ecd74810f0d3a45a9cf8cc9d1d8fa7a6af06926562ffa193a15d8516bd27d6c3ae310890a61b887fc977cf63f00c55953d6d7
@@ -75,7 +75,10 @@ module Dependabot
75
75
  reject { |v| ignore_req.satisfied_by?(v.fetch(:version)) }
76
76
  end
77
77
 
78
- raise AllVersionsIgnored if @raise_on_ignored && filtered.empty? && possible_versions.any?
78
+ if @raise_on_ignored && filter_lower_versions(filtered).empty? &&
79
+ filter_lower_versions(possible_versions).any?
80
+ raise AllVersionsIgnored
81
+ end
79
82
 
80
83
  filtered
81
84
  end
@@ -210,14 +213,8 @@ module Dependabot
210
213
  @v2_nuget_listings ||=
211
214
  dependency_urls.
212
215
  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
- )
216
+ flat_map { |url_details| fetch_paginated_v2_nuget_listings(url_details) }.
217
+ map do |url_details, response|
221
218
  next unless response.status == 200
222
219
 
223
220
  {
@@ -227,6 +224,39 @@ module Dependabot
227
224
  end.compact
228
225
  end
229
226
 
227
+ def fetch_paginated_v2_nuget_listings(url_details, results = {})
228
+ response = Excon.get(
229
+ url_details[:versions_url],
230
+ idempotent: true,
231
+ **SharedHelpers.excon_defaults(excon_options.merge(headers: url_details[:auth_header]))
232
+ )
233
+
234
+ # NOTE: Short circuit if we get a circular next link
235
+ return results.to_a if results.key?(url_details)
236
+
237
+ results[url_details] = response
238
+
239
+ if (link_href = fetch_v2_next_link_href(response.body))
240
+ url_details = url_details.dup
241
+ url_details[:versions_url] = link_href
242
+ fetch_paginated_v2_nuget_listings(url_details, results)
243
+ end
244
+
245
+ results.to_a
246
+ end
247
+
248
+ def fetch_v2_next_link_href(xml_body)
249
+ doc = Nokogiri::XML(xml_body)
250
+ doc.remove_namespaces!
251
+ link_node = doc.xpath("/feed/link").find do |node|
252
+ rel = node.attribute("rel").value.strip
253
+ rel == "next"
254
+ end
255
+ link_node.attribute("href").value.strip if link_node
256
+ rescue Nokogiri::XML::XPath::SyntaxError
257
+ nil
258
+ end
259
+
230
260
  def versions_for_v3_repository(repository_details)
231
261
  # If we have a search URL that returns results we use it
232
262
  # (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.0
4
+ version: 0.146.0
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-11 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.0
19
+ version: 0.146.0
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.0
26
+ version: 0.146.0
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