dependabot-terraform 0.148.9 → 0.149.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: d7ec549a6b6283f3ab90166318138d130e95ee433a8b17ec48157c376b322bfe
4
- data.tar.gz: fe1e3b9b7e348e614c5da531da53ef226b4be07db71a0744e382a5d863cbbad5
3
+ metadata.gz: c3d1b1f161ca1de8f1f6f728cc4d28f700ea12f4407870609729fd235ad029d5
4
+ data.tar.gz: 2ca0a7c87535de7b22604571e9e48a1e2e51e2027a4becab2ae65a73e29603a0
5
5
  SHA512:
6
- metadata.gz: 11878a5dff8b23bf22568e1dc44734578175012b41eff9b5d0d7e8e774e1040d1720150d135e570f0814234d3c663bd04ed79c0339a5188ab8cc19729167e8f9
7
- data.tar.gz: ac36440f83d0e54ee77e7aab101790bd58cce625dd8bbe4bbad4a2a90f599cc9356a452b63ecc6784c938619afc87f7c97ec33a3e07a3d136ea6c0dd59703634
6
+ metadata.gz: c26e03c55858649e5ae2f9f7d881b7ce5ff6ee23e8bf9f66892641273cad9558af0493c45f37a9f63d74d92d50036ab6345e3bc6e5b8474d8d3257b175f73e15
7
+ data.tar.gz: 359f7ac0b27e267b395352b390379713db6caa45067a452c674318e678884fab25227693dc22153a2a867747f4b7d5e00fa94d32237f6e11b2dd90e8c3088a59
@@ -4,6 +4,7 @@ require "excon"
4
4
  require "json"
5
5
  require "dependabot/metadata_finders"
6
6
  require "dependabot/metadata_finders/base"
7
+ require "dependabot/terraform/registry_client"
7
8
  require "dependabot/shared_helpers"
8
9
 
9
10
  module Dependabot
@@ -40,7 +41,9 @@ module Dependabot
40
41
  info = dependency.requirements.map { |r| r[:source] }.compact.first
41
42
  hostname = info[:registry_hostname] || info["registry_hostname"]
42
43
 
43
- RegistryClient.new(hostname: hostname).source(dependency: dependency)
44
+ RegistryClient.
45
+ new(hostname: hostname, credentials: credentials).
46
+ source(dependency: dependency)
44
47
  end
45
48
  end
46
49
  end
@@ -11,8 +11,11 @@ module Dependabot
11
11
  class RegistryClient
12
12
  PUBLIC_HOSTNAME = "registry.terraform.io"
13
13
 
14
- def initialize(hostname:)
14
+ def initialize(hostname: PUBLIC_HOSTNAME, credentials: [])
15
15
  @hostname = hostname
16
+ @tokens = credentials.each_with_object({}) do |item, memo|
17
+ memo[item["host"]] = item["token"] if item["type"] == "terraform_registry"
18
+ end
16
19
  end
17
20
 
18
21
  # Fetch all the versions of a provider, and return a Version
@@ -23,9 +26,6 @@ module Dependabot
23
26
  # @return [Array<Dependabot::Terraform::Version>]
24
27
  # @raise [RuntimeError] when the versions cannot be retrieved
25
28
  def all_provider_versions(identifier:)
26
- # TODO: Implement service discovery for custom registries
27
- return [] unless hostname == PUBLIC_HOSTNAME
28
-
29
29
  response = get(endpoint: "providers/#{identifier}/versions")
30
30
 
31
31
  JSON.parse(response).
@@ -41,9 +41,6 @@ module Dependabot
41
41
  # @return [Array<Dependabot::Terraform::Version>]
42
42
  # @raise [RuntimeError] when the versions cannot be retrieved
43
43
  def all_module_versions(identifier:)
44
- # TODO: Implement service discovery for custom registries
45
- return [] unless hostname == PUBLIC_HOSTNAME
46
-
47
44
  response = get(endpoint: "modules/#{identifier}/versions")
48
45
 
49
46
  JSON.parse(response).
@@ -61,9 +58,6 @@ module Dependabot
61
58
  # @return Dependabot::Source
62
59
  # @raise [RuntimeError] when the source cannot be retrieved
63
60
  def source(dependency:)
64
- # TODO: Implement service discovery for custom registries
65
- return unless hostname == PUBLIC_HOSTNAME
66
-
67
61
  type = dependency.requirements.first[:source][:type]
68
62
  endpoint = if type == "registry"
69
63
  "modules/#{dependency.name}/#{dependency.version}"
@@ -80,7 +74,7 @@ module Dependabot
80
74
 
81
75
  private
82
76
 
83
- attr_reader :hostname
77
+ attr_reader :hostname, :tokens
84
78
 
85
79
  def get(endpoint:)
86
80
  url = "https://#{hostname}/v1/#{endpoint}"
@@ -88,7 +82,7 @@ module Dependabot
88
82
  response = Excon.get(
89
83
  url,
90
84
  idempotent: true,
91
- **SharedHelpers.excon_defaults
85
+ **SharedHelpers.excon_defaults(headers: headers_for(hostname))
92
86
  )
93
87
 
94
88
  raise "Response from registry was #{response.status}" unless response.status == 200
@@ -99,6 +93,11 @@ module Dependabot
99
93
  def version_class
100
94
  Version
101
95
  end
96
+
97
+ def headers_for(hostname)
98
+ token = tokens[hostname]
99
+ token ? { "Authorization" => "Bearer #{token}" } : {}
100
+ end
102
101
  end
103
102
  end
104
103
  end
@@ -87,7 +87,7 @@ module Dependabot
87
87
  def registry_client
88
88
  @registry_client ||= begin
89
89
  hostname = dependency_source_details.fetch(:registry_hostname)
90
- RegistryClient.new(hostname: hostname)
90
+ RegistryClient.new(hostname: hostname, credentials: credentials)
91
91
  end
92
92
  end
93
93
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dependabot-terraform
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.148.9
4
+ version: 0.149.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-05-26 00:00:00.000000000 Z
11
+ date: 2021-05-28 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.148.9
19
+ version: 0.149.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.148.9
26
+ version: 0.149.3
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: byebug
29
29
  requirement: !ruby/object:Gem::Requirement