fog-aws 3.8.0 → 3.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b7361a3fa82cc86bf32908aa54819a2efb8485e6639cbe9cd62a0e3bedb8e422
4
- data.tar.gz: d0b4dea28aecb3a18b887ce40437baa868f38ebd83fa69e13ecf912d0aba3df8
3
+ metadata.gz: 8adda78ff8e95ea706342dc8aabe0c529e1fd26bdbf5ed63e0d63f1a4ab50a8c
4
+ data.tar.gz: 5afbb4be420bd1cc45e6bfd54cc3c8711f63854a9a8906677f08bfdf007b637d
5
5
  SHA512:
6
- metadata.gz: 9d7602d22a1abab86581a0b4500c00b545af1264e46fac5648d70d0a2fc9dd157ffa37bf289b87aaa08836aa12d7f2cd67ea4437e2732796c7e089811ca2b029
7
- data.tar.gz: 9e90b2ae4aeeb8170630825f49fa2500f56b45bcaa38dade2b72b7019a1db5d93d9634645301aa0706f1df25e118d03fe5b9e6a11e2a9f47e78e82dd9790cb7d
6
+ metadata.gz: c92f603e887e44f354d851a309401b87cb01e83cb4c83833c8fb33edeb15357e8a4b0b0c8ae9c6dfc96ff24f85664287b8cfa8fe5fde7fb90b344a47d9f90bae
7
+ data.tar.gz: 4e4bdee040f173c7cbd19f89938e4cb93ce849feda86bb87bee20339ffee211434195fa1512b2426d70ca4e13152c4497db422d03881a2dfef7276b91d37c5bb
data/.travis.yml CHANGED
@@ -27,6 +27,8 @@ matrix:
27
27
  gemfile: Gemfile
28
28
  - rvm: 2.7.2
29
29
  gemfile: gemfiles/Gemfile-edge
30
+ - rvm: 3.0.0
31
+ gemfile: gemfiles/Gemfile-edge
30
32
  - rvm: jruby-head
31
33
  gemfile: Gemfile
32
34
  # ppc64le specific changes
data/CHANGELOG.md CHANGED
@@ -1,7 +1,16 @@
1
1
  # Change Log
2
2
 
3
- ## [v3.8.0](https://github.com/fog/fog-aws/tree/v3.8.0)
3
+ ## [v3.9.0](https://github.com/fog/fog-aws/tree/v3.9.0) (2021-03-02)
4
4
 
5
+ [Full Changelog](https://github.com/fog/fog-aws/compare/v3.8.0...v3.9.0)
6
+
7
+ **Merged pull requests:**
8
+
9
+ - Fix handling of lowercased HTTP headers [\#597](https://github.com/fog/fog-aws/pull/597) ([stanhu](https://github.com/stanhu))
10
+ - Generate a default session name if one is not provided [\#595](https://github.com/fog/fog-aws/pull/595) ([stanhu](https://github.com/stanhu))
11
+ - Enable test on Ruby 3.0 [\#591](https://github.com/fog/fog-aws/pull/591) ([voxik](https://github.com/voxik))
12
+
13
+ ## [v3.8.0](https://github.com/fog/fog-aws/tree/v3.8.0) (2021-01-13)
5
14
  [Full Changelog](https://github.com/fog/fog-aws/compare/v3.7.0...v3.8.0)
6
15
 
7
16
  **Closed issues:**
@@ -10,7 +19,7 @@
10
19
 
11
20
  **Merged pull requests:**
12
21
 
13
- - Filter unknown UploadPartCopy paramaters [\#589](https://github.com/fog/fog-aws/pull/589) ([stanhu](https://github.com/stanhu))
22
+ - Filter unknown UploadPartCopy parameters [\#589](https://github.com/fog/fog-aws/pull/589) ([stanhu](https://github.com/stanhu))
14
23
  - Fix NameError in multipart copy [\#588](https://github.com/fog/fog-aws/pull/588) ([stanhu](https://github.com/stanhu))
15
24
  - Rewind pointer if file is eof on put\_object mock [\#587](https://github.com/fog/fog-aws/pull/587) ([ekulz](https://github.com/ekulz))
16
25
  - Update .travis.yml [\#584](https://github.com/fog/fog-aws/pull/584) ([nageshlop](https://github.com/nageshlop))
@@ -49,6 +58,7 @@
49
58
  **Merged pull requests:**
50
59
 
51
60
  - added missing region EU South \(Milan\) [\#570](https://github.com/fog/fog-aws/pull/570) ([saldan](https://github.com/saldan))
61
+ - hibernation option to compute [\#569](https://github.com/fog/fog-aws/pull/569) ([taniahagan](https://github.com/taniahagan))
52
62
  - Fix VPC model is\_default requires [\#567](https://github.com/fog/fog-aws/pull/567) ([biinari](https://github.com/biinari))
53
63
 
54
64
  ## [v3.6.5](https://github.com/fog/fog-aws/tree/v3.6.5) (2020-05-22)
@@ -97,7 +107,6 @@
97
107
 
98
108
  **Merged pull requests:**
99
109
 
100
- - hibernation option to compute [\#569](https://github.com/fog/fog-aws/pull/569) ([taniahagan](https://github.com/taniahagan))
101
110
  - Adding two missing regions to Fog::AWS.regions [\#552](https://github.com/fog/fog-aws/pull/552) ([lvangool](https://github.com/lvangool))
102
111
  - Adds missing param WebIdentityToken for the request to the AWS api [\#550](https://github.com/fog/fog-aws/pull/550) ([dgoradia](https://github.com/dgoradia))
103
112
  - Fixes type in class name for STS assume\_role\_with\_web\_identity parser [\#549](https://github.com/fog/fog-aws/pull/549) ([dgoradia](https://github.com/dgoradia))
@@ -378,7 +387,6 @@
378
387
  - Fog mock accuracy, fixes \#341 [\#344](https://github.com/fog/fog-aws/pull/344) ([easkay](https://github.com/easkay))
379
388
  - Subnet [\#343](https://github.com/fog/fog-aws/pull/343) ([ehowe](https://github.com/ehowe))
380
389
  - Fix multipart upload [\#340](https://github.com/fog/fog-aws/pull/340) ([nobmurakita](https://github.com/nobmurakita))
381
- - credential\_fetcher: Mark AWS metadata calls as idempotent [\#329](https://github.com/fog/fog-aws/pull/329) ([mtekel](https://github.com/mtekel))
382
390
 
383
391
  ## [v1.2.0](https://github.com/fog/fog-aws/tree/v1.2.0) (2017-01-20)
384
392
  [Full Changelog](https://github.com/fog/fog-aws/compare/v1.1.0...v1.2.0)
@@ -406,13 +414,14 @@
406
414
  - Canada and London regions [\#333](https://github.com/fog/fog-aws/pull/333) ([mattheworiordan](https://github.com/mattheworiordan))
407
415
  - Updated ELB Dual Stack hosted zone DNS records [\#332](https://github.com/fog/fog-aws/pull/332) ([mattheworiordan](https://github.com/mattheworiordan))
408
416
  - Added support for attaching auto scaling groups to target groups [\#330](https://github.com/fog/fog-aws/pull/330) ([maf23](https://github.com/maf23))
409
- - fix host header with another port on s3 [\#327](https://github.com/fog/fog-aws/pull/327) ([rodrigoapereira](https://github.com/rodrigoapereira))
417
+ - credential\_fetcher: Mark AWS metadata calls as idempotent [\#329](https://github.com/fog/fog-aws/pull/329) ([mtekel](https://github.com/mtekel))
410
418
 
411
419
  ## [v1.0.0](https://github.com/fog/fog-aws/tree/v1.0.0) (2016-12-12)
412
420
  [Full Changelog](https://github.com/fog/fog-aws/compare/v0.13.0...v1.0.0)
413
421
 
414
422
  **Merged pull requests:**
415
423
 
424
+ - fix host header with another port on s3 [\#327](https://github.com/fog/fog-aws/pull/327) ([rodrigoapereira](https://github.com/rodrigoapereira))
416
425
  - Add new t2.xlarge, t2.2xlarge and r4 class instances. [\#326](https://github.com/fog/fog-aws/pull/326) ([rogersd](https://github.com/rogersd))
417
426
  - Fix the bug that can't create fifo queue in SQS. [\#323](https://github.com/fog/fog-aws/pull/323) ([ebihara99999](https://github.com/ebihara99999))
418
427
  - data pipeline mocks [\#318](https://github.com/fog/fog-aws/pull/318) ([ehowe](https://github.com/ehowe))
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'securerandom'
4
+
3
5
  module Fog
4
6
  module AWS
5
7
  module CredentialFetcher
@@ -38,7 +40,7 @@ module Fog
38
40
  params = {
39
41
  :Action => "AssumeRoleWithWebIdentity",
40
42
  :RoleArn => options[:role_arn] || ENV.fetch("AWS_ROLE_ARN"),
41
- :RoleSessionName => options[:role_session_name] || ENV.fetch("AWS_ROLE_SESSION_NAME"),
43
+ :RoleSessionName => options[:role_session_name] || ENV["AWS_ROLE_SESSION_NAME"] || "fog-aws-#{SecureRandom.hex}",
42
44
  :WebIdentityToken => File.read(options[:aws_web_identity_token_file] || ENV.fetch("AWS_WEB_IDENTITY_TOKEN_FILE")),
43
45
  :Version => "2011-06-15",
44
46
  }
@@ -17,6 +17,15 @@ module Fog
17
17
 
18
18
  model Fog::AWS::Storage::File
19
19
 
20
+ DASHED_HEADERS = %w(
21
+ Cache-Control
22
+ Content-Disposition
23
+ Content-Encoding
24
+ Content-Length
25
+ Content-MD5
26
+ Content-Type
27
+ ).freeze
28
+
20
29
  def all(options = {})
21
30
  requires :directory
22
31
  options = {
@@ -114,8 +123,29 @@ module Fog
114
123
  end
115
124
 
116
125
  def normalize_headers(data)
117
- data.headers['Last-Modified'] = Time.parse(data.get_header('Last-Modified'))
118
- data.headers['ETag'] = data.get_header('ETag').gsub('"','')
126
+ data.headers['Last-Modified'] = Time.parse(fetch_and_delete_header(data, 'Last-Modified'))
127
+
128
+ etag = fetch_and_delete_header(data, 'ETag').gsub('"','')
129
+ data.headers['ETag'] = etag
130
+
131
+ DASHED_HEADERS.each do |header|
132
+ value = fetch_and_delete_header(data, header)
133
+ data.headers[header] = value if value
134
+ end
135
+ end
136
+
137
+ private
138
+
139
+ def fetch_and_delete_header(response, header)
140
+ value = response.get_header(header)
141
+
142
+ return unless value
143
+
144
+ response.headers.keys.each do |key|
145
+ response.headers.delete(key) if key.downcase == header.downcase
146
+ end
147
+
148
+ value
119
149
  end
120
150
  end
121
151
  end
@@ -1,5 +1,5 @@
1
1
  module Fog
2
2
  module AWS
3
- VERSION = "3.8.0"
3
+ VERSION = "3.9.0"
4
4
  end
5
5
  end
@@ -87,6 +87,18 @@ Shindo.tests('AWS | credentials', ['aws']) do
87
87
  ) { Fog::AWS::Compute.fetch_credentials(use_iam_profile: true) }
88
88
  end
89
89
 
90
+ ENV['AWS_ROLE_SESSION_NAME'] = nil
91
+
92
+ tests('#fetch_credentials token based without session name') do
93
+ returns(
94
+ aws_access_key_id: 'dummykey',
95
+ aws_secret_access_key: 'dummysecret',
96
+ aws_session_token: 'dummytoken',
97
+ region: 'us-west-1',
98
+ aws_credentials_expire_at: expires_at
99
+ ) { Fog::AWS::Compute.fetch_credentials(use_iam_profile: true) }
100
+ end
101
+
90
102
  ENV['AWS_WEB_IDENTITY_TOKEN_FILE'] = nil
91
103
 
92
104
  compute = Fog::AWS::Compute.new(use_iam_profile: true)
@@ -1,8 +1,8 @@
1
1
  module Shindo
2
2
  class Tests
3
- def succeeds
3
+ def succeeds(&block)
4
4
  test('succeeds') do
5
- !instance_eval(&Proc.new).nil?
5
+ !instance_eval(&Proc.new(&block)).nil?
6
6
  end
7
7
  end
8
8
  end
@@ -50,6 +50,38 @@ Shindo.tests("Storage[:aws] | files", ["aws"]) do
50
50
  end
51
51
  end
52
52
 
53
+ tests('#normalize_headers') do
54
+ files = @directory.files
55
+ response = Excon::Response.new
56
+ current_time = Time.new(2021, 02, 21)
57
+
58
+ response.headers['last-modified'] = current_time.to_s
59
+ response.headers['etag'] = '12345'
60
+ response.headers['ETAG'] = '12345'
61
+ response.headers['Cache-Control'] = 'no-cache'
62
+ response.headers['Content-disposition'] = 'attachment'
63
+ response.headers['content-length'] = 100
64
+ response.headers['content-Encoding'] = 'gzip'
65
+ response.headers['content-md5'] = 'ABCDEAB'
66
+ response.headers['content-Md5'] = 'ABCDEAB'
67
+ response.headers['ConTent-Type'] = 'application/json'
68
+
69
+ expected = {
70
+ 'Last-Modified' => current_time,
71
+ 'ETag' => '12345',
72
+ 'Cache-Control' => 'no-cache',
73
+ 'Content-Disposition' => 'attachment',
74
+ 'Content-Length' => 100,
75
+ 'Content-Encoding' => 'gzip',
76
+ 'Content-MD5' => 'ABCDEAB',
77
+ 'Content-Type' => 'application/json'
78
+ }
79
+
80
+ tests('header keys are normalized').returns(expected) do
81
+ files.normalize_headers(response)
82
+ response.headers
83
+ end
84
+ end
53
85
  end
54
86
 
55
87
  @directory.versions.each(&:destroy)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fog-aws
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.8.0
4
+ version: 3.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Josh Lane
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2021-01-13 00:00:00.000000000 Z
12
+ date: 2021-03-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler