aws-sdk 1.2.4 → 1.2.5
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/aws/core.rb +1 -1
- data/lib/aws/core/http/curb_handler.rb +29 -21
- data/lib/aws/ec2/instance.rb +2 -1
- data/lib/aws/ec2/security_group/ingress_ip_permission_collection.rb +0 -1
- data/lib/aws/s3/object_collection.rb +6 -1
- data/lib/aws/sns/topic.rb +7 -2
- data/lib/aws/sqs/queue.rb +1 -2
- data/lib/aws/sqs/received_sns_message.rb +7 -7
- metadata +4 -4
data/lib/aws/core.rb
CHANGED
@@ -19,26 +19,30 @@ module AWS
|
|
19
19
|
|
20
20
|
# @private
|
21
21
|
class CurbHandler
|
22
|
-
|
22
|
+
|
23
23
|
def initialize
|
24
24
|
@q = []
|
25
25
|
@sem = Mutex.new
|
26
26
|
@multi = Curl::Multi.new
|
27
|
-
|
27
|
+
|
28
28
|
start_processor
|
29
29
|
end
|
30
|
-
|
30
|
+
|
31
31
|
def handle request, response
|
32
32
|
raise "unsupport http reqest method: #{request.http_method}" unless
|
33
33
|
['GET', 'HEAD', 'PUT', 'POST', 'DELETE'].include? request.http_method
|
34
34
|
@sem.synchronize do
|
35
35
|
@q << [request, response, Thread.current]
|
36
|
-
|
36
|
+
begin
|
37
|
+
@processor.wakeup
|
38
|
+
rescue ThreadError
|
39
|
+
start_processor
|
40
|
+
end
|
37
41
|
end
|
38
42
|
Thread.stop
|
39
43
|
nil
|
40
44
|
end
|
41
|
-
|
45
|
+
|
42
46
|
# fills the Curl::Multi handle with the given array of queue
|
43
47
|
# items, calling make_easy_handle on each one first
|
44
48
|
private
|
@@ -48,7 +52,7 @@ module AWS
|
|
48
52
|
@multi.add(c)
|
49
53
|
end
|
50
54
|
end
|
51
|
-
|
55
|
+
|
52
56
|
# starts a background thread that waits for new items and
|
53
57
|
# sends them through the Curl::Multi handle
|
54
58
|
private
|
@@ -73,56 +77,60 @@ module AWS
|
|
73
77
|
end
|
74
78
|
end
|
75
79
|
end
|
76
|
-
|
80
|
+
|
77
81
|
# wait for a new item to show up before continuing
|
78
82
|
Thread.stop if @q.empty?
|
79
83
|
end
|
80
84
|
end
|
81
85
|
end
|
82
|
-
|
86
|
+
|
83
87
|
private
|
84
88
|
def make_easy_handle request, response, thread = nil
|
85
|
-
|
89
|
+
|
86
90
|
url = request.use_ssl? ?
|
87
91
|
"https://#{request.host}:443#{request.uri}" :
|
88
92
|
"http://#{request.host}#{request.uri}"
|
89
|
-
|
93
|
+
|
90
94
|
curl = Curl::Easy.new(url)
|
91
|
-
curl.
|
92
|
-
|
95
|
+
# curl.verbose = true
|
96
|
+
request.headers.each {|k, v| curl.headers[k] = v}
|
97
|
+
|
93
98
|
if proxy = request.proxy_uri
|
94
99
|
curl.proxy_url = proxy.to_s
|
95
100
|
curl.proxy_port = proxy.port
|
96
101
|
end
|
97
|
-
|
102
|
+
|
98
103
|
curl.on_header {|header_data|
|
99
|
-
|
100
|
-
|
104
|
+
if header_data =~ /:\s+/
|
105
|
+
name, value = header_data.strip.split(/:\s+/, 2)
|
106
|
+
response.headers[name] = value
|
107
|
+
end
|
101
108
|
header_data.length
|
102
109
|
}
|
103
|
-
|
110
|
+
|
104
111
|
case request.http_method
|
105
112
|
when 'GET'
|
106
113
|
# ....
|
107
114
|
when 'HEAD'
|
108
115
|
curl.head = true
|
109
116
|
when 'PUT'
|
110
|
-
curl.put_data = request.body
|
117
|
+
curl.put_data = request.body || ''
|
111
118
|
when 'POST'
|
112
|
-
curl.
|
119
|
+
curl.headers['Content-Type'] = curl.headers['Content-Type'] || ''
|
120
|
+
curl.post_body = request.body || ''
|
113
121
|
when 'DELETE'
|
114
122
|
curl.delete = true
|
115
123
|
end
|
116
|
-
|
124
|
+
|
117
125
|
curl.on_complete do
|
118
126
|
response.body = curl.body_str
|
119
127
|
response.status = curl.response_code
|
120
128
|
thread.run if thread
|
121
129
|
end
|
122
|
-
|
130
|
+
|
123
131
|
curl
|
124
132
|
end
|
125
|
-
|
133
|
+
|
126
134
|
end
|
127
135
|
end
|
128
136
|
end
|
data/lib/aws/ec2/instance.rb
CHANGED
@@ -467,7 +467,8 @@ module AWS
|
|
467
467
|
#
|
468
468
|
# @return [String] the console output.
|
469
469
|
def console_output
|
470
|
-
|
470
|
+
output = client.get_console_output(:instance_id => self.id).output
|
471
|
+
Base64.decode64(output) if output
|
471
472
|
end
|
472
473
|
|
473
474
|
# Associates the elastic IP address with this instance.
|
@@ -287,7 +287,12 @@ module AWS
|
|
287
287
|
# @private
|
288
288
|
protected
|
289
289
|
def next_markers page
|
290
|
-
|
290
|
+
marker = (last = page.contents.last and last.key)
|
291
|
+
if marker.nil?
|
292
|
+
raise 'Unable to find marker in S3 list objects response'
|
293
|
+
else
|
294
|
+
{ :marker => marker }
|
295
|
+
end
|
291
296
|
end
|
292
297
|
|
293
298
|
# processes items in batches of 1k items
|
data/lib/aws/sns/topic.rb
CHANGED
@@ -91,17 +91,20 @@ module AWS
|
|
91
91
|
# @param [mixed] endpoint The endpoint that should receive
|
92
92
|
# messages that are published to this topic. Valid values
|
93
93
|
# for +endpoint+ include:
|
94
|
+
#
|
94
95
|
# * URI object
|
95
96
|
# * http and https URI strings
|
96
|
-
# * email
|
97
|
+
# * email address
|
97
98
|
# * {SQS::Queue}
|
98
99
|
# * SQS queue ARN
|
100
|
+
# * phone number of an SMS-enabled device
|
101
|
+
#
|
99
102
|
# @param [Hash] options
|
100
103
|
# @option options [Boolean] :json (false)
|
101
104
|
# @return [Subscription,nil] Returns a subscription when possible.
|
102
105
|
# If the subscription requires confirmation first, then +nil+ is
|
103
106
|
# returned instead.
|
104
|
-
def subscribe
|
107
|
+
def subscribe endpoint, opts = {}
|
105
108
|
subscribe_opts = endpoint_opts(endpoint, opts).merge(:topic_arn => arn)
|
106
109
|
resp = client.subscribe(subscribe_opts)
|
107
110
|
if arn = resp.subscription_arn and arn =~ /^arn:/
|
@@ -369,6 +372,8 @@ module AWS
|
|
369
372
|
when endpoint.include?("@")
|
370
373
|
{ :protocol => opts[:json] ? "email-json" : "email",
|
371
374
|
:endpoint => endpoint }
|
375
|
+
when endpoint.gsub(/\D/,'') =~ /\d{11,15}/
|
376
|
+
{ :protocol => "sms", :endpoint => endpoint.gsub(/\D/,'') }
|
372
377
|
else
|
373
378
|
raise ArgumentError, "could not determine protocol for '#{endpoint}'"
|
374
379
|
end
|
data/lib/aws/sqs/queue.rb
CHANGED
@@ -94,8 +94,7 @@ module AWS
|
|
94
94
|
# @return [SentMessage] An object containing information about
|
95
95
|
# the message that was sent.
|
96
96
|
def send_message(body)
|
97
|
-
resp = client.send_message(:queue_url => url,
|
98
|
-
:message_body => body)
|
97
|
+
resp = client.send_message(:queue_url => url, :message_body => body)
|
99
98
|
msg = SentMessage.new
|
100
99
|
msg.message_id = resp.message_id
|
101
100
|
msg.md5 = resp.md5_of_message_body
|
@@ -22,19 +22,19 @@ module AWS
|
|
22
22
|
|
23
23
|
include Core::Model
|
24
24
|
|
25
|
-
# @param [String]
|
25
|
+
# @param [String] body The SQS message body
|
26
26
|
# from a message published by SNS.
|
27
27
|
# @param [Hash] options
|
28
|
-
def initialize
|
29
|
-
@
|
28
|
+
def initialize body, options = {}
|
29
|
+
@body = body
|
30
30
|
super
|
31
31
|
end
|
32
32
|
|
33
|
-
# @return [String] Returns the
|
33
|
+
# @return [String] Returns the JSON hash (as a string) as was
|
34
34
|
# published by SNS. See {#body} to get the decoded message
|
35
35
|
# or {#to_h} to get the decoded JSON hash as a ruby hash.
|
36
|
-
def
|
37
|
-
@
|
36
|
+
def raw_message
|
37
|
+
@body
|
38
38
|
end
|
39
39
|
|
40
40
|
# @return[String] Returns the decoded message as was published.
|
@@ -92,7 +92,7 @@ module AWS
|
|
92
92
|
|
93
93
|
# @return [Hash] Returns the decoded message as a hash.
|
94
94
|
def to_h
|
95
|
-
data = JSON.parse(
|
95
|
+
data = JSON.parse(@body)
|
96
96
|
{
|
97
97
|
:body => data['Message'],
|
98
98
|
:topic_arn => data['TopicArn'],
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aws-sdk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 21
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 2
|
9
|
-
-
|
10
|
-
version: 1.2.
|
9
|
+
- 5
|
10
|
+
version: 1.2.5
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Amazon Web Services
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-12-
|
18
|
+
date: 2011-12-15 00:00:00 -08:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|