Skip to content

Commit 720ae32

Browse files
pjsk-stripehsbt
authored andcommitted
[rubygems/rubygems] make things a bit more testable
rubygems/rubygems@29c085f5f5
1 parent 8691a4a commit 720ae32

File tree

1 file changed

+13
-6
lines changed

1 file changed

+13
-6
lines changed

lib/rubygems/s3_uri_signer.rb

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -147,16 +147,16 @@ def ec2_metadata_credentials_json
147147
require_relative "request/connection_pools"
148148
require "json"
149149
token = ec2_metadata_token
150+
150151
iam_info = ec2_metadata_request(EC2_IAM_INFO, token)
151152
# Expected format: arn:aws:iam::<id>:instance-profile/<role_name>
152153
role_name = iam_info["InstanceProfileArn"].split("/").last
153154
ec2_metadata_request(EC2_IAM_SECURITY_CREDENTIALS + role_name, token)
154155
end
155156

156157
def ec2_metadata_request(url, token)
157-
uri = Gem::URI(url)
158-
@request_pool ||= create_request_pool(uri)
159-
request = Gem::Request.new(uri, Gem::Net::HTTP::Get, nil, @request_pool)
158+
request = ec2_iam_request(Gem::URI(url), Gem::Net::HTTP::Get)
159+
160160
response = request.fetch do |req|
161161
req.add_field "X-aws-ec2-metadata-token", token
162162
end
@@ -170,9 +170,8 @@ def ec2_metadata_request(url, token)
170170
end
171171

172172
def ec2_metadata_token
173-
uri = Gem::URI(EC2_IAM_TOKEN)
174-
@request_pool ||= create_request_pool(uri)
175-
request = Gem::Request.new(uri, Gem::Net::HTTP::Put, nil, @request_pool)
173+
request = ec2_iam_request(Gem::URI(EC2_IAM_TOKEN), Gem::Net::HTTP::Put)
174+
176175
response = request.fetch do |req|
177176
req.add_field "X-aws-ec2-metadata-token-ttl-seconds", 60
178177
end
@@ -185,6 +184,14 @@ def ec2_metadata_token
185184
end
186185
end
187186

187+
def ec2_iam_request(uri, verb)
188+
@request_pool ||= {}
189+
@request_pool[uri] ||= create_request_pool(uri)
190+
pool = @request_pool[uri]
191+
192+
Gem::Request.new(uri, verb, nil, pool)
193+
end
194+
188195
def create_request_pool(uri)
189196
proxy_uri = Gem::Request.proxy_uri(Gem::Request.get_proxy_from_env(uri.scheme))
190197
certs = Gem::Request.get_cert_files

0 commit comments

Comments
 (0)