aws-sdk-core 2.3.12 → 2.3.13

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
  SHA1:
3
- metadata.gz: 4805e173533b14e5f4239b29770c645b0ae096a3
4
- data.tar.gz: 2e74b0ebed2c6887b2ca22f764e98461a8aa06f3
3
+ metadata.gz: 824789d9b05e226344a7369f43a1a0c31052c0fc
4
+ data.tar.gz: 932e136986cb354d8da7f6fd565aa111d93ccc5d
5
5
  SHA512:
6
- metadata.gz: b5a1ae6c878d24fbceb69be8ca6e920153ed95d139859b04737fb913cf0c30559490282d68f941de3d1372d7f9f8301351aa8e72e5c29364297a34765c18592c
7
- data.tar.gz: 8761e64cae17f2f0e45a5c24e9b30d1303c5a9a24cc153204ea161c5d75d298e2fb061e472b467744b49ccbf57132371f59b0d7d3fb47b15a2185b446337ea7b
6
+ metadata.gz: 8482776c328cfdff143cc1919a91e6b1025bb0bffe9f541e38b9b01f3b9a6756e4f830fa0844cf764fcda2e498a90b5daf7a8da477c740ad3ba1dfacdf473585
7
+ data.tar.gz: b4bb03463ff83bf2e46b7a87f07511c769076c601a8854edfd924ccd57710af03f709c749978b49be538679136b57fdfe2ae53a98198bf99c68b654bba9cc722
@@ -963,7 +963,7 @@
963
963
  "ContentDisposition":{"type":"string"},
964
964
  "ContentEncoding":{"type":"string"},
965
965
  "ContentLanguage":{"type":"string"},
966
- "ContentLength":{"type":"integer"},
966
+ "ContentLength":{"type":"long"},
967
967
  "ContentMD5":{"type":"string"},
968
968
  "ContentRange":{"type":"string"},
969
969
  "ContentType":{"type":"string"},
@@ -2913,7 +2913,7 @@
2913
2913
  "StartAfter":{
2914
2914
  "shape":"StartAfter",
2915
2915
  "location":"querystring",
2916
- "locationName":"start-key"
2916
+ "locationName":"start-after"
2917
2917
  }
2918
2918
  }
2919
2919
  },
@@ -46,6 +46,15 @@
46
46
  "CommonPrefixes"
47
47
  ]
48
48
  },
49
+ "ListObjectsV2": {
50
+ "limit_key": "MaxKeys",
51
+ "output_token": "NextContinuationToken",
52
+ "input_token": "ContinuationToken",
53
+ "result_key": [
54
+ "Contents",
55
+ "CommonPrefixes"
56
+ ]
57
+ },
49
58
  "ListParts": {
50
59
  "more_results": "IsTruncated",
51
60
  "limit_key": "MaxParts",
@@ -5,3 +5,11 @@ Aws.add_service(:CloudFront, {
5
5
  paginators: "#{Aws::API_DIR}/cloudfront/2016-01-28/paginators-1.json",
6
6
  waiters: "#{Aws::API_DIR}/cloudfront/2016-01-28/waiters-2.json",
7
7
  })
8
+
9
+ module Aws
10
+ module CloudFront
11
+
12
+ autoload :UrlSigner, 'aws-sdk-core/cloudfront/url_signer.rb'
13
+
14
+ end
15
+ end
@@ -0,0 +1,167 @@
1
+ require 'base64'
2
+ require 'uri'
3
+ require 'time'
4
+ require 'json'
5
+ require 'openssl'
6
+
7
+ module Aws
8
+ module CloudFront
9
+
10
+ # Allows you to create signed URLs for Amazon CloudFront resources
11
+ #
12
+ # signer = Aws::CloudFront::UrlSigner.new
13
+ # url = signer.signed_url(url,
14
+ # key_pair_id: "cf-keypair-id",
15
+ # private_key_path: "./cf_private_key.pem"
16
+ # )
17
+ #
18
+ class UrlSigner
19
+
20
+ # @option options [String] :key_pair_id
21
+ # @option options [String] :private_key
22
+ # @option options [String] :private_key_path
23
+ def initialize(options = {})
24
+ @key_pair_id = key_pair_id(options)
25
+ @private_key = private_key(options)
26
+ end
27
+
28
+ # create a signed Amazon CloudFront URL
29
+ # @param [String] url
30
+ # @option params [Time, DateTime, Date, String, Integer<timestamp>] :expires
31
+ # @option params [String<JSON>] :policy
32
+ def signed_url(url, params = {})
33
+ url_sections = url.split('://')
34
+ if url_sections.length < 2
35
+ raise ArgumentError, "Invaild URL:#{url}"
36
+ end
37
+ # removing wildcard character to get real scheme
38
+ scheme = url_sections[0].gsub('*', '')
39
+ uri = "#{scheme}://#{url_sections[1]}"
40
+ signed_content = signature(
41
+ :resource => resource(scheme, uri),
42
+ :expires => time(params[:expires]),
43
+ :policy => params[:policy]
44
+ )
45
+
46
+ start_flag = URI.parse(uri).query ? '&' : '?'
47
+ uri = "#{uri}#{start_flag}#{signed_content}"
48
+
49
+ if scheme == 'rtmp'
50
+ rtmp_url(URI(uri))
51
+ else
52
+ uri
53
+ end
54
+ end
55
+
56
+ private
57
+
58
+ def time(expires)
59
+ case expires
60
+ when Time then expires.to_i
61
+ when DateTime, Date then expires.to_time.to_i
62
+ when String then Time.parse(expires).to_i
63
+ when Integer, NIL then expires
64
+ else
65
+ msg = "expected a time value for :expires, got `#{expires.class}'"
66
+ raise ArgumentError, msg
67
+ end
68
+ end
69
+
70
+ # create a relative signed URL for RTMP distribution
71
+ def rtmp_url(uri)
72
+ result = uri.path.gsub(' ', '/')
73
+ result[0] = ''
74
+ if uri.query
75
+ "#{result}?#{uri.query}"
76
+ else
77
+ result
78
+ end
79
+ end
80
+
81
+ # prepare resource for signing
82
+ def resource(scheme, url)
83
+ case scheme
84
+ when 'http', 'http*', 'https' then url
85
+ when 'rtmp'
86
+ url_info = URI.parse(url)
87
+ path = url_info.path
88
+ path[0] = ''
89
+ resource_content = "#{File.dirname(path)}/#{File.basename(path)}".gsub(' ', '/')
90
+ if url_info.query
91
+ "#{resource_content}?#{uri.query}"
92
+ else
93
+ resource_content
94
+ end
95
+ else
96
+ msg = "Invaild URI scheme:#{scheme}.Scheme must be one of: http, https or rtmp."
97
+ raise ArgumentError, msg
98
+ end
99
+ end
100
+
101
+ # create signed values that used to construct signed URLs
102
+ # @option param [String] :resource
103
+ # @option param [Integer<timestamp>] :expires
104
+ # @option param [String<JSON>] :policy
105
+ def signature(params = {})
106
+ signature_content = []
107
+ if params[:policy]
108
+ policy = params[:policy].gsub('/\s/s', '')
109
+ signature_content << "Policy=#{encode(policy)}"
110
+ elsif params[:resource] && params[:expires]
111
+ policy = canned_policy(params[:resource], params[:expires])
112
+ signature_content << "Expires=#{params[:expires]}"
113
+ else
114
+ msg = "Either a policy or a resource with an expiration time must be provided."
115
+ raise ArgumentError, msg
116
+ end
117
+
118
+ signature_content << "Signature=#{encode(sign_policy(policy))}"
119
+ signature_content << "Key-Pair-Id=#{@key_pair_id}"
120
+ signature_content.join('&').gsub("\n", '')
121
+ end
122
+
123
+ # create the signature string with policy signed
124
+ def sign_policy(policy)
125
+ key = OpenSSL::PKey::RSA.new(@private_key)
126
+ key.sign(OpenSSL::Digest::SHA1.new, policy)
127
+ end
128
+
129
+ # create canned policy that used for signing
130
+ def canned_policy(resource, expires)
131
+ json_hash = {
132
+ 'Statement' => [
133
+ 'Resource' => resource,
134
+ 'Condition' => {
135
+ 'DateLessThan' => {'AWS:EpochTime' => expires}
136
+ }
137
+ ]
138
+ }
139
+ json_hash.to_json
140
+ end
141
+
142
+ def encode(policy)
143
+ Base64.encode64(policy).gsub(/[+=\/]/, '+' => '-', '=' => '_', '/' => '~')
144
+ end
145
+
146
+ def key_pair_id(options)
147
+ if options[:key_pair_id].nil? or options[:key_pair_id] == ''
148
+ raise ArgumentError, ":key_pair_id must not be blank"
149
+ else
150
+ options[:key_pair_id]
151
+ end
152
+ end
153
+
154
+ def private_key(options)
155
+ if options[:private_key]
156
+ options[:private_key]
157
+ elsif options[:private_key_path]
158
+ File.open(options[:private_key_path], 'rb') { |f| f.read }
159
+ else
160
+ msg = ":private_key or :private_key_path should be provided"
161
+ raise ArgumentError, msg
162
+ end
163
+ end
164
+
165
+ end
166
+ end
167
+ end
@@ -1,3 +1,3 @@
1
1
  module Aws
2
- VERSION = '2.3.12'
2
+ VERSION = '2.3.13'
3
3
  end
@@ -59,9 +59,15 @@ module Seahorse
59
59
  end
60
60
 
61
61
  # @api private
62
- DynamicDefault = Struct.new(:block) do
63
- def call(*args)
64
- block.call(*args)
62
+ class DynamicDefault
63
+ attr_accessor :block
64
+
65
+ def initialize(block = nil)
66
+ @block = block
67
+ end
68
+
69
+ def call(*args)
70
+ @block.call(*args)
65
71
  end
66
72
  end
67
73
 
@@ -10,17 +10,6 @@ module Seahorse
10
10
  module Client
11
11
  module NetHttp
12
12
 
13
- # @attr_reader [URI::HTTP,nil] http_proxy Returns the configured proxy.
14
- # @attr_reader [Integer,Float] http_open_timeout
15
- # @attr_reader [Integer,Float] http_read_timeout
16
- # @attr_reader [Integer,Float] http_idle_timeout
17
- # @attr_reader [Float,nil] http_continue_timeout
18
- # @attr_reader [Boolean] http_wire_trace
19
- # @attr_reader [Logger,nil] logger
20
- # @attr_reader [Boolean] ssl_verify_peer
21
- # @attr_reader [String,nil] ssl_ca_bundle
22
- # @attr_reader [String,nil] ssl_ca_directory
23
- # @attr_reader [String,nil] ssl_ca_store
24
13
  class ConnectionPool
25
14
 
26
15
  @pools_mutex = Mutex.new
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aws-sdk-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.3.12
4
+ version: 2.3.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Amazon Web Services
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-06-07 00:00:00.000000000 Z
11
+ date: 2016-06-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jmespath
@@ -261,6 +261,7 @@ files:
261
261
  - lib/aws-sdk-core/client_waiters.rb
262
262
  - lib/aws-sdk-core/cloudformation.rb
263
263
  - lib/aws-sdk-core/cloudfront.rb
264
+ - lib/aws-sdk-core/cloudfront/url_signer.rb
264
265
  - lib/aws-sdk-core/cloudhsm.rb
265
266
  - lib/aws-sdk-core/cloudsearch.rb
266
267
  - lib/aws-sdk-core/cloudsearchdomain.rb