aws-sdk-core 2.2.18 → 2.2.19
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 +4 -4
- data/apis/devicefarm/2015-06-23/paginators-1.json +0 -5
- data/apis/route53/2013-04-01/api-2.json +29 -12
- data/apis/s3/2006-03-01/resources-1.json +18 -0
- data/apis/sqs/2012-11-05/examples-1.json +1 -3
- data/lib/aws-sdk-core.rb +1 -0
- data/lib/aws-sdk-core/api/customizations.rb +1 -0
- data/lib/aws-sdk-core/plugins/sqs_md5s.rb +148 -0
- data/lib/aws-sdk-core/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7ed86d122f252ba7da7637fcc705ce69b264b9ca
|
4
|
+
data.tar.gz: d992e963082a5dfc245176ce8712bf95895eb4fb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6ff75a635b0eb5e789f04129b80a9ea31ecdd6da8c58ed95aae0ae6cecffe6506fbe0fd15637c549c66d4d2512ca3083f4bbc8ff9f9721bc358c9a5c94b4be70
|
7
|
+
data.tar.gz: 4d87af55beaceb71ab7adb7b0157a6df44e845a2863c261ad0fdcdf13d732f17bea66c9b4410b082dc8fd178707315665eeb909f39eda9ad59ac1968621ff8f8
|
@@ -15,11 +15,6 @@
|
|
15
15
|
"output_token": "nextToken",
|
16
16
|
"result_key": "devices"
|
17
17
|
},
|
18
|
-
"ListDevices": {
|
19
|
-
"input_token": "nextToken",
|
20
|
-
"output_token": "nextToken",
|
21
|
-
"result_key": "devices"
|
22
|
-
},
|
23
18
|
"ListJobs": {
|
24
19
|
"input_token": "nextToken",
|
25
20
|
"output_token": "nextToken",
|
@@ -316,7 +316,8 @@
|
|
316
316
|
"errors":[
|
317
317
|
{"shape":"NoSuchChange"},
|
318
318
|
{"shape":"InvalidInput"}
|
319
|
-
]
|
319
|
+
],
|
320
|
+
"deprecated":true
|
320
321
|
},
|
321
322
|
"GetCheckerIpRanges":{
|
322
323
|
"name":"GetCheckerIpRanges",
|
@@ -474,7 +475,8 @@
|
|
474
475
|
"errors":[
|
475
476
|
{"shape":"NoSuchHostedZone"},
|
476
477
|
{"shape":"InvalidInput"}
|
477
|
-
]
|
478
|
+
],
|
479
|
+
"deprecated":true
|
478
480
|
},
|
479
481
|
"ListChangeBatchesByRRSet":{
|
480
482
|
"name":"ListChangeBatchesByRRSet",
|
@@ -487,7 +489,8 @@
|
|
487
489
|
"errors":[
|
488
490
|
{"shape":"NoSuchHostedZone"},
|
489
491
|
{"shape":"InvalidInput"}
|
490
|
-
]
|
492
|
+
],
|
493
|
+
"deprecated":true
|
491
494
|
},
|
492
495
|
"ListGeoLocations":{
|
493
496
|
"name":"ListGeoLocations",
|
@@ -822,7 +825,8 @@
|
|
822
825
|
"Comment":{"shape":"ResourceDescription"},
|
823
826
|
"Submitter":{"shape":"AWSAccountID"},
|
824
827
|
"Changes":{"shape":"Changes"}
|
825
|
-
}
|
828
|
+
},
|
829
|
+
"deprecated":true
|
826
830
|
},
|
827
831
|
"ChangeBatchRecords":{
|
828
832
|
"type":"list",
|
@@ -830,6 +834,7 @@
|
|
830
834
|
"shape":"ChangeBatchRecord",
|
831
835
|
"locationName":"ChangeBatchRecord"
|
832
836
|
},
|
837
|
+
"deprecated":true,
|
833
838
|
"min":1
|
834
839
|
},
|
835
840
|
"ChangeInfo":{
|
@@ -1123,6 +1128,7 @@
|
|
1123
1128
|
},
|
1124
1129
|
"Date":{
|
1125
1130
|
"type":"string",
|
1131
|
+
"deprecated":true,
|
1126
1132
|
"max":256
|
1127
1133
|
},
|
1128
1134
|
"DelegationSet":{
|
@@ -1298,6 +1304,7 @@
|
|
1298
1304
|
"ChangeInfo":{"shape":"ChangeInfo"}
|
1299
1305
|
}
|
1300
1306
|
},
|
1307
|
+
"EnableSNI":{"type":"boolean"},
|
1301
1308
|
"ErrorMessage":{"type":"string"},
|
1302
1309
|
"ErrorMessages":{
|
1303
1310
|
"type":"list",
|
@@ -1380,14 +1387,16 @@
|
|
1380
1387
|
"location":"uri",
|
1381
1388
|
"locationName":"Id"
|
1382
1389
|
}
|
1383
|
-
}
|
1390
|
+
},
|
1391
|
+
"deprecated":true
|
1384
1392
|
},
|
1385
1393
|
"GetChangeDetailsResponse":{
|
1386
1394
|
"type":"structure",
|
1387
1395
|
"required":["ChangeBatchRecord"],
|
1388
1396
|
"members":{
|
1389
1397
|
"ChangeBatchRecord":{"shape":"ChangeBatchRecord"}
|
1390
|
-
}
|
1398
|
+
},
|
1399
|
+
"deprecated":true
|
1391
1400
|
},
|
1392
1401
|
"GetChangeRequest":{
|
1393
1402
|
"type":"structure",
|
@@ -1656,7 +1665,8 @@
|
|
1656
1665
|
"MeasureLatency":{"shape":"MeasureLatency"},
|
1657
1666
|
"Inverted":{"shape":"Inverted"},
|
1658
1667
|
"HealthThreshold":{"shape":"HealthThreshold"},
|
1659
|
-
"ChildHealthChecks":{"shape":"ChildHealthCheckList"}
|
1668
|
+
"ChildHealthChecks":{"shape":"ChildHealthCheckList"},
|
1669
|
+
"EnableSNI":{"shape":"EnableSNI"}
|
1660
1670
|
}
|
1661
1671
|
},
|
1662
1672
|
"HealthCheckCount":{"type":"long"},
|
@@ -1890,7 +1900,8 @@
|
|
1890
1900
|
"location":"querystring",
|
1891
1901
|
"locationName":"marker"
|
1892
1902
|
}
|
1893
|
-
}
|
1903
|
+
},
|
1904
|
+
"deprecated":true
|
1894
1905
|
},
|
1895
1906
|
"ListChangeBatchesByHostedZoneResponse":{
|
1896
1907
|
"type":"structure",
|
@@ -1905,7 +1916,8 @@
|
|
1905
1916
|
"IsTruncated":{"shape":"PageTruncated"},
|
1906
1917
|
"ChangeBatchRecords":{"shape":"ChangeBatchRecords"},
|
1907
1918
|
"NextMarker":{"shape":"PageMarker"}
|
1908
|
-
}
|
1919
|
+
},
|
1920
|
+
"deprecated":true
|
1909
1921
|
},
|
1910
1922
|
"ListChangeBatchesByRRSetRequest":{
|
1911
1923
|
"type":"structure",
|
@@ -1957,7 +1969,8 @@
|
|
1957
1969
|
"location":"querystring",
|
1958
1970
|
"locationName":"marker"
|
1959
1971
|
}
|
1960
|
-
}
|
1972
|
+
},
|
1973
|
+
"deprecated":true
|
1961
1974
|
},
|
1962
1975
|
"ListChangeBatchesByRRSetResponse":{
|
1963
1976
|
"type":"structure",
|
@@ -1972,7 +1985,8 @@
|
|
1972
1985
|
"IsTruncated":{"shape":"PageTruncated"},
|
1973
1986
|
"ChangeBatchRecords":{"shape":"ChangeBatchRecords"},
|
1974
1987
|
"NextMarker":{"shape":"PageMarker"}
|
1975
|
-
}
|
1988
|
+
},
|
1989
|
+
"deprecated":true
|
1976
1990
|
},
|
1977
1991
|
"ListGeoLocationsRequest":{
|
1978
1992
|
"type":"structure",
|
@@ -2627,6 +2641,7 @@
|
|
2627
2641
|
"ap-southeast-1",
|
2628
2642
|
"ap-southeast-2",
|
2629
2643
|
"ap-northeast-1",
|
2644
|
+
"ap-northeast-2",
|
2630
2645
|
"sa-east-1",
|
2631
2646
|
"cn-north-1"
|
2632
2647
|
],
|
@@ -2936,7 +2951,8 @@
|
|
2936
2951
|
"FailureThreshold":{"shape":"FailureThreshold"},
|
2937
2952
|
"Inverted":{"shape":"Inverted"},
|
2938
2953
|
"HealthThreshold":{"shape":"HealthThreshold"},
|
2939
|
-
"ChildHealthChecks":{"shape":"ChildHealthCheckList"}
|
2954
|
+
"ChildHealthChecks":{"shape":"ChildHealthCheckList"},
|
2955
|
+
"EnableSNI":{"shape":"EnableSNI"}
|
2940
2956
|
}
|
2941
2957
|
},
|
2942
2958
|
"UpdateHealthCheckResponse":{
|
@@ -3049,6 +3065,7 @@
|
|
3049
3065
|
"ap-southeast-1",
|
3050
3066
|
"ap-southeast-2",
|
3051
3067
|
"ap-northeast-1",
|
3068
|
+
"ap-northeast-2",
|
3052
3069
|
"sa-east-1",
|
3053
3070
|
"cn-north-1"
|
3054
3071
|
],
|
@@ -846,6 +846,15 @@
|
|
846
846
|
{ "target": "Key", "source": "identifier", "name": "Key" }
|
847
847
|
]
|
848
848
|
}
|
849
|
+
},
|
850
|
+
"RestoreObject": {
|
851
|
+
"request": {
|
852
|
+
"operation": "RestoreObject",
|
853
|
+
"params": [
|
854
|
+
{ "target": "Bucket", "source": "identifier", "name": "BucketName" },
|
855
|
+
{ "target": "Key", "source": "identifier", "name": "Key" }
|
856
|
+
]
|
857
|
+
}
|
849
858
|
}
|
850
859
|
},
|
851
860
|
"batchActions": {
|
@@ -1013,6 +1022,15 @@
|
|
1013
1022
|
{ "target": "Key", "source": "identifier", "name": "Key" }
|
1014
1023
|
]
|
1015
1024
|
}
|
1025
|
+
},
|
1026
|
+
"RestoreObject": {
|
1027
|
+
"request": {
|
1028
|
+
"operation": "RestoreObject",
|
1029
|
+
"params": [
|
1030
|
+
{ "target": "Bucket", "source": "identifier", "name": "BucketName" },
|
1031
|
+
{ "target": "Key", "source": "identifier", "name": "Key" }
|
1032
|
+
]
|
1033
|
+
}
|
1016
1034
|
}
|
1017
1035
|
},
|
1018
1036
|
"batchActions": {
|
data/lib/aws-sdk-core.rb
CHANGED
@@ -177,6 +177,7 @@ module Aws
|
|
177
177
|
autoload :S3SseCpk, 'aws-sdk-core/plugins/s3_sse_cpk'
|
178
178
|
autoload :S3UrlEncodedKeys, 'aws-sdk-core/plugins/s3_url_encoded_keys'
|
179
179
|
autoload :SQSQueueUrls, 'aws-sdk-core/plugins/sqs_queue_urls'
|
180
|
+
autoload :SQSMd5s, 'aws-sdk-core/plugins/sqs_md5s'
|
180
181
|
autoload :StubResponses, 'aws-sdk-core/plugins/stub_responses'
|
181
182
|
autoload :SWFReadTimeouts, 'aws-sdk-core/plugins/swf_read_timeouts'
|
182
183
|
autoload :UserAgent, 'aws-sdk-core/plugins/user_agent'
|
@@ -0,0 +1,148 @@
|
|
1
|
+
require 'openssl'
|
2
|
+
|
3
|
+
module Aws
|
4
|
+
module Plugins
|
5
|
+
|
6
|
+
# @seahorse.client.option [Boolean] :verify_checksums (true)
|
7
|
+
# When `true` MD5 checksums will be computed for messages sent to
|
8
|
+
# an SQS queue and matched against MD5 checksums returned by Amazon SQS.
|
9
|
+
# `Aws::Errors::Checksum` errors are raised for cases where checksums do
|
10
|
+
# not match.
|
11
|
+
class SQSMd5s < Seahorse::Client::Plugin
|
12
|
+
OPERATIONS_TO_VERIFY = [:send_message, :send_message_batch]
|
13
|
+
|
14
|
+
# @api private
|
15
|
+
class Handler < Seahorse::Client::Handler
|
16
|
+
def call(context)
|
17
|
+
@handler.call(context).on_success do |response|
|
18
|
+
case context.operation_name
|
19
|
+
when :send_message
|
20
|
+
validate_send_message(context, response)
|
21
|
+
when :send_message_batch
|
22
|
+
validate_send_message_batch(context, response)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
TRANSPORT_TYPE_ENCODINGS = {
|
30
|
+
'String' => 1,
|
31
|
+
'Binary' => 2,
|
32
|
+
'Number' => 1
|
33
|
+
}
|
34
|
+
|
35
|
+
NORMALIZED_ENCODING = Encoding::UTF_8
|
36
|
+
|
37
|
+
def validate_send_message(context, response)
|
38
|
+
body = context.params[:message_body]
|
39
|
+
attributes = context.params[:message_attributes]
|
40
|
+
validate_single_message(body, attributes, response)
|
41
|
+
end
|
42
|
+
|
43
|
+
def validate_send_message_batch(context, response)
|
44
|
+
context.params[:entries].each do |entry|
|
45
|
+
id = entry[:id]
|
46
|
+
body = entry[:message_body]
|
47
|
+
attributes = entry[:message_attributes]
|
48
|
+
message_response = response.successful.select { |r| r.id == id }[0]
|
49
|
+
unless message_response.nil?
|
50
|
+
validate_single_message(body, attributes, message_response)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
def validate_single_message(body, attributes, response)
|
56
|
+
validate_body(body, response)
|
57
|
+
validate_attributes(attributes, response) unless attributes.nil?
|
58
|
+
end
|
59
|
+
|
60
|
+
def validate_body(body, response)
|
61
|
+
calculated_md5 = md5_of_message_body(body)
|
62
|
+
returned_md5 = response.md5_of_message_body
|
63
|
+
if calculated_md5 != returned_md5
|
64
|
+
error_message = mismatch_error_message(
|
65
|
+
'message body',
|
66
|
+
calculated_md5,
|
67
|
+
returned_md5,
|
68
|
+
response)
|
69
|
+
raise Aws::Errors::ChecksumError, error_message
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
def validate_attributes(attributes, response)
|
74
|
+
calculated_md5 = md5_of_message_attributes(attributes)
|
75
|
+
returned_md5 = response.md5_of_message_attributes
|
76
|
+
if returned_md5 != calculated_md5
|
77
|
+
error_message = mismatch_error_message(
|
78
|
+
'message atributes',
|
79
|
+
calculated_md5,
|
80
|
+
returned_md5,
|
81
|
+
response)
|
82
|
+
raise Aws::Errors::ChecksumError, error_message
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
def md5_of_message_body(message_body)
|
87
|
+
OpenSSL::Digest::MD5.hexdigest(message_body)
|
88
|
+
end
|
89
|
+
|
90
|
+
def md5_of_message_attributes(message_attributes)
|
91
|
+
encoded = { }
|
92
|
+
message_attributes.each do |name, attribute|
|
93
|
+
name = name.to_s
|
94
|
+
encoded[name] = String.new
|
95
|
+
encoded[name] << encode_length_and_bytes(name) <<
|
96
|
+
encode_length_and_bytes(attribute[:data_type]) <<
|
97
|
+
[TRANSPORT_TYPE_ENCODINGS[attribute[:data_type]]].pack('C'.freeze)
|
98
|
+
|
99
|
+
if attribute[:string_value] != nil
|
100
|
+
encoded[name] << encode_length_and_string(attribute[:string_value])
|
101
|
+
elsif attribute[:binary_value] != nil
|
102
|
+
encoded[name] << encode_length_and_bytes(attribute[:binary_value])
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
buffer = encoded.keys.sort.reduce(String.new) do |string, name|
|
107
|
+
string << encoded[name]
|
108
|
+
end
|
109
|
+
OpenSSL::Digest::MD5.hexdigest(buffer)
|
110
|
+
end
|
111
|
+
|
112
|
+
def encode_length_and_string(string)
|
113
|
+
string = String.new(string)
|
114
|
+
string.encode!(NORMALIZED_ENCODING)
|
115
|
+
encode_length_and_bytes(string)
|
116
|
+
end
|
117
|
+
|
118
|
+
def encode_length_and_bytes(bytes)
|
119
|
+
[bytes.bytesize, bytes].pack('L>a*'.freeze)
|
120
|
+
end
|
121
|
+
|
122
|
+
def mismatch_error_message(section, local_md5, returned_md5, response)
|
123
|
+
m = "MD5 returned by SQS does not match " <<
|
124
|
+
"the calculation on the original request. ("
|
125
|
+
|
126
|
+
if response.respond_to?(:id) && !response.id.nil?
|
127
|
+
m << "Message ID: #{response.id}, "
|
128
|
+
end
|
129
|
+
|
130
|
+
m << "MD5 calculated by the #{section}: " <<
|
131
|
+
"'#{local_md5}', MD5 checksum returned: '#{returned_md5}')"
|
132
|
+
end
|
133
|
+
end
|
134
|
+
|
135
|
+
option(:verify_checksums, true)
|
136
|
+
|
137
|
+
def add_handlers(handlers, config)
|
138
|
+
if config.verify_checksums
|
139
|
+
handlers.add(Handler, {
|
140
|
+
priority: 10 ,
|
141
|
+
step: :validate,
|
142
|
+
operations: SQSMd5s::OPERATIONS_TO_VERIFY
|
143
|
+
})
|
144
|
+
end
|
145
|
+
end
|
146
|
+
end
|
147
|
+
end
|
148
|
+
end
|
data/lib/aws-sdk-core/version.rb
CHANGED
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.2.
|
4
|
+
version: 2.2.19
|
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-02-
|
11
|
+
date: 2016-02-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: jmespath
|
@@ -335,6 +335,7 @@ files:
|
|
335
335
|
- lib/aws-sdk-core/plugins/s3_request_signer.rb
|
336
336
|
- lib/aws-sdk-core/plugins/s3_sse_cpk.rb
|
337
337
|
- lib/aws-sdk-core/plugins/s3_url_encoded_keys.rb
|
338
|
+
- lib/aws-sdk-core/plugins/sqs_md5s.rb
|
338
339
|
- lib/aws-sdk-core/plugins/sqs_queue_urls.rb
|
339
340
|
- lib/aws-sdk-core/plugins/stub_responses.rb
|
340
341
|
- lib/aws-sdk-core/plugins/swf_read_timeouts.rb
|