aws 2.4.5 → 2.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. data/README.markdown +9 -75
  2. data/lib/acf/acf_interface.rb +6 -4
  3. data/lib/aws.rb +2 -1
  4. data/lib/awsbase/awsbase.rb +98 -65
  5. data/lib/awsbase/errors.rb +9 -5
  6. data/lib/awsbase/parsers.rb +226 -226
  7. data/lib/awsbase/utils.rb +255 -207
  8. data/lib/ec2/ec2.rb +243 -105
  9. data/lib/ec2/mon_interface.rb +2 -1
  10. data/lib/iam/iam.rb +31 -25
  11. data/lib/right_aws.rb +1 -1
  12. data/lib/s3/bucket.rb +7 -8
  13. data/lib/s3/grantee.rb +238 -238
  14. data/lib/s3/key.rb +281 -281
  15. data/lib/s3/s3.rb +2 -1
  16. data/lib/s3/s3_interface.rb +45 -35
  17. data/lib/sdb/active_sdb.rb +19 -22
  18. data/lib/sdb/sdb_interface.rb +4 -5
  19. data/lib/ses/ses.rb +123 -0
  20. data/lib/sqs/sqs.rb +5 -0
  21. data/lib/sqs/sqs_interface.rb +3 -3
  22. metadata +53 -104
  23. data/lib/awsbase/support.rb +0 -142
  24. data/test/acf/test_acf.rb +0 -148
  25. data/test/acf/test_helper.rb +0 -2
  26. data/test/ec2/test_ec2.rb +0 -205
  27. data/test/ec2/test_helper.rb +0 -2
  28. data/test/ec2/test_mon.rb +0 -17
  29. data/test/elb/test_elb.rb +0 -51
  30. data/test/http_connection.rb +0 -87
  31. data/test/iam/test_iam.rb +0 -36
  32. data/test/rds/test_rds.rb +0 -181
  33. data/test/s3/s3_test_base.rb +0 -23
  34. data/test/s3/test_helper.rb +0 -3
  35. data/test/s3/test_s3.rb +0 -162
  36. data/test/s3/test_s3_class.rb +0 -179
  37. data/test/s3/test_s3_rights.rb +0 -139
  38. data/test/s3/test_s3_stubbed.rb +0 -97
  39. data/test/sdb/test_active_sdb.rb +0 -338
  40. data/test/sdb/test_helper.rb +0 -3
  41. data/test/sdb/test_sdb.rb +0 -220
  42. data/test/sqs/test_helper.rb +0 -2
  43. data/test/sqs/test_sqs.rb +0 -232
  44. data/test/test_credentials.rb +0 -54
  45. data/test/ts_right_aws.rb +0 -13
@@ -31,7 +31,7 @@ module Aws
31
31
  @http_code = http_code
32
32
  @request_data = request_data
33
33
  @response = response
34
- msg = @errors.is_a?(Array) ? @errors.map { |code, msg| "#{code}: #{msg}" }.join("; ") : @errors.to_s
34
+ msg = @errors.is_a?(Array) ? @errors.map { |code, m| "#{code}: #{m}" }.join("; ") : @errors.to_s
35
35
  msg += "\nREQUEST=#{@request_data} " unless @request_data.nil?
36
36
  msg += "\nREQUEST ID=#{@request_id} " unless @request_id.nil?
37
37
  super(msg)
@@ -39,11 +39,15 @@ module Aws
39
39
 
40
40
  # Does any of the error messages include the regexp +pattern+?
41
41
  # Used to determine whether to retry request.
42
- def include?(pattern)
42
+ def include?(pattern_or_string)
43
+ if pattern_or_string.is_a?(String)
44
+ puts 'convert to pattern'
45
+ pattern_or_string = /#{pattern_or_string}/
46
+ end
43
47
  if @errors.is_a?(Array)
44
- @errors.each { |code, msg| return true if code =~ pattern }
48
+ @errors.each { |code, msg| return true if code =~ pattern_or_string }
45
49
  else
46
- return true if @errors_str =~ pattern
50
+ return true if @errors_str =~ pattern_or_string
47
51
  end
48
52
  false
49
53
  end
@@ -289,4 +293,4 @@ module Aws
289
293
 
290
294
  end
291
295
 
292
- end
296
+ end
@@ -1,227 +1,227 @@
1
- module Aws
2
-
3
- #-----------------------------------------------------------------
4
-
5
- class RightSaxParserCallback #:nodoc:
6
- def self.include_callback
7
- include XML::SaxParser::Callbacks
8
- end
9
-
10
- def initialize(right_aws_parser)
11
- @right_aws_parser = right_aws_parser
12
- end
13
-
14
- def on_start_element(name, attr_hash)
15
- @right_aws_parser.tag_start(name, attr_hash)
16
- end
17
-
18
- def on_characters(chars)
19
- @right_aws_parser.text(chars)
20
- end
21
-
22
- def on_end_element(name)
23
- @right_aws_parser.tag_end(name)
24
- end
25
-
26
- def on_start_document;
27
- end
28
-
29
- def on_comment(msg)
30
- ;
31
- end
32
-
33
- def on_processing_instruction(target, data)
34
- ;
35
- end
36
-
37
- def on_cdata_block(cdata)
38
- ;
39
- end
40
-
41
- def on_end_document;
42
- end
43
- end
44
-
45
- class AwsParser #:nodoc:
46
- # default parsing library
47
- DEFAULT_XML_LIBRARY = 'rexml'
48
- # a list of supported parsers
49
- @@supported_xml_libs = [DEFAULT_XML_LIBRARY, 'libxml']
50
-
51
- @@xml_lib = DEFAULT_XML_LIBRARY # xml library name: 'rexml' | 'libxml'
52
- def self.xml_lib
53
- @@xml_lib
54
- end
55
-
56
- def self.xml_lib=(new_lib_name)
57
- @@xml_lib = new_lib_name
58
- end
59
-
60
- attr_accessor :result
61
- attr_reader :xmlpath
62
- attr_accessor :xml_lib
63
-
64
- def initialize(params={})
65
- @xmlpath = ''
66
- @result = false
67
- @text = ''
68
- @xml_lib = params[:xml_lib] || @@xml_lib
69
- @logger = params[:logger]
70
- reset
71
- end
72
-
73
- def tag_start(name, attributes)
74
- @text = ''
75
- tagstart(name, attributes)
76
- @xmlpath += @xmlpath.empty? ? name : "/#{name}"
77
- end
78
-
79
- def tag_end(name)
80
- if @xmlpath =~ /^(.*?)\/?#{name}$/
81
- @xmlpath = $1
82
- end
83
- tagend(name)
84
- end
85
-
86
- def text(text)
87
- @text += text
88
- tagtext(text)
89
- end
90
-
91
- # Parser method.
92
- # Params:
93
- # xml_text - xml message text(String) or Net:HTTPxxx instance (response)
94
- # params[:xml_lib] - library name: 'rexml' | 'libxml'
95
- def parse(xml_text, params={})
96
- # Get response body
97
- unless xml_text.is_a?(String)
98
- xml_text = xml_text.body.respond_to?(:force_encoding) ? xml_text.body.force_encoding("UTF-8") : xml_text.body
99
- end
100
-
101
- @xml_lib = params[:xml_lib] || @xml_lib
102
- # check that we had no problems with this library otherwise use default
103
- @xml_lib = DEFAULT_XML_LIBRARY unless @@supported_xml_libs.include?(@xml_lib)
104
- # load xml library
105
- if @xml_lib=='libxml' && !defined?(XML::SaxParser)
106
- begin
107
- require 'xml/libxml'
108
- # is it new ? - Setup SaxParserCallback
109
- if XML::Parser::VERSION >= '0.5.1.0'
110
- RightSaxParserCallback.include_callback
111
- end
112
- rescue LoadError => e
113
- @@supported_xml_libs.delete(@xml_lib)
114
- @xml_lib = DEFAULT_XML_LIBRARY
115
- if @logger
116
- @logger.error e.inspect
117
- @logger.error e.backtrace
118
- @logger.info "Can not load 'libxml' library. '#{DEFAULT_XML_LIBRARY}' is used for parsing."
119
- end
120
- end
121
- end
122
- # Parse the xml text
123
- case @xml_lib
124
- when 'libxml'
125
- xml = XML::SaxParser.string(xml_text)
126
- # check libxml-ruby version
127
- if XML::Parser::VERSION >= '0.5.1.0'
128
- xml.callbacks = RightSaxParserCallback.new(self)
129
- else
130
- xml.on_start_element { |name, attr_hash| self.tag_start(name, attr_hash) }
131
- xml.on_characters { |text| self.text(text) }
132
- xml.on_end_element { |name| self.tag_end(name) }
133
- end
134
- xml.parse
135
- else
136
- REXML::Document.parse_stream(xml_text, self)
137
- end
138
- end
139
-
140
- # Parser must have a lots of methods
141
- # (see /usr/lib/ruby/1.8/rexml/parsers/streamparser.rb)
142
- # We dont need most of them in AwsParser and method_missing helps us
143
- # to skip their definition
144
- def method_missing(method, *params)
145
- # if the method is one of known - just skip it ...
146
- return if [:comment, :attlistdecl, :notationdecl, :elementdecl,
147
- :entitydecl, :cdata, :xmldecl, :attlistdecl, :instruction,
148
- :doctype].include?(method)
149
- # ... else - call super to raise an exception
150
- super(method, params)
151
- end
152
-
153
- # the functions to be overriden by children (if nessesery)
154
- def reset;
155
- end
156
-
157
- def tagstart(name, attributes)
158
- ;
159
- end
160
-
161
- def tagend(name)
162
- ;
163
- end
164
-
165
- def tagtext(text)
166
- ;
167
- end
168
- end
169
-
170
- #-----------------------------------------------------------------
171
- # PARSERS: Errors
172
- #-----------------------------------------------------------------
173
-
174
- #<Error>
175
- # <Code>TemporaryRedirect</Code>
176
- # <Message>Please re-send this request to the specified temporary endpoint. Continue to use the original request endpoint for future requests.</Message>
177
- # <RequestId>FD8D5026D1C5ABA3</RequestId>
178
- # <Endpoint>bucket-for-k.s3-external-3.amazonaws.com</Endpoint>
179
- # <HostId>ItJy8xPFPli1fq/JR3DzQd3iDvFCRqi1LTRmunEdM1Uf6ZtW2r2kfGPWhRE1vtaU</HostId>
180
- # <Bucket>bucket-for-k</Bucket>
181
- #</Error>
182
-
183
- class RightErrorResponseParser < AwsParser #:nodoc:
184
- attr_accessor :errors # array of hashes: error/message
185
- attr_accessor :requestID
186
- # attr_accessor :endpoint, :host_id, :bucket
187
- def parse(response)
188
- super
189
- end
190
-
191
- def tagend(name)
192
- case name
193
- when 'RequestID';
194
- @requestID = @text
195
- when 'Code';
196
- @code = @text
197
- when 'Message';
198
- @message = @text
199
- # when 'Endpoint' ; @endpoint = @text
200
- # when 'HostId' ; @host_id = @text
201
- # when 'Bucket' ; @bucket = @text
202
- when 'Error';
203
- @errors << [@code, @message]
204
- end
205
- end
206
-
207
- def reset
208
- @errors = []
209
- end
210
- end
211
-
212
- # Dummy parser - does nothing
213
- # Returns the original params back
214
- class RightDummyParser # :nodoc:
215
- attr_accessor :result
216
-
217
- def parse(response, params={})
218
- @result = [response, params]
219
- end
220
- end
221
-
222
- class RightHttp2xxParser < AwsParser # :nodoc:
223
- def parse(response)
224
- @result = response.is_a?(Net::HTTPSuccess)
225
- end
226
- end
1
+ module Aws
2
+
3
+ #-----------------------------------------------------------------
4
+
5
+ class RightSaxParserCallback #:nodoc:
6
+ def self.include_callback
7
+ include XML::SaxParser::Callbacks
8
+ end
9
+
10
+ def initialize(right_aws_parser)
11
+ @right_aws_parser = right_aws_parser
12
+ end
13
+
14
+ def on_start_element(name, attr_hash)
15
+ @right_aws_parser.tag_start(name, attr_hash)
16
+ end
17
+
18
+ def on_characters(chars)
19
+ @right_aws_parser.text(chars)
20
+ end
21
+
22
+ def on_end_element(name)
23
+ @right_aws_parser.tag_end(name)
24
+ end
25
+
26
+ def on_start_document;
27
+ end
28
+
29
+ def on_comment(msg)
30
+ ;
31
+ end
32
+
33
+ def on_processing_instruction(target, data)
34
+ ;
35
+ end
36
+
37
+ def on_cdata_block(cdata)
38
+ ;
39
+ end
40
+
41
+ def on_end_document;
42
+ end
43
+ end
44
+
45
+ class AwsParser #:nodoc:
46
+ # default parsing library
47
+ DEFAULT_XML_LIBRARY = 'rexml'
48
+ # a list of supported parsers
49
+ @@supported_xml_libs = [DEFAULT_XML_LIBRARY, 'libxml']
50
+
51
+ @@xml_lib = DEFAULT_XML_LIBRARY # xml library name: 'rexml' | 'libxml'
52
+ def self.xml_lib
53
+ @@xml_lib
54
+ end
55
+
56
+ def self.xml_lib=(new_lib_name)
57
+ @@xml_lib = new_lib_name
58
+ end
59
+
60
+ attr_accessor :result
61
+ attr_reader :xmlpath
62
+ attr_accessor :xml_lib
63
+
64
+ def initialize(params={})
65
+ @xmlpath = ''
66
+ @result = false
67
+ @text = ''
68
+ @xml_lib = params[:xml_lib] || @@xml_lib
69
+ @logger = params[:logger]
70
+ reset
71
+ end
72
+
73
+ def tag_start(name, attributes)
74
+ @text = ''
75
+ tagstart(name, attributes)
76
+ @xmlpath += @xmlpath.empty? ? name : "/#{name}"
77
+ end
78
+
79
+ def tag_end(name)
80
+ if @xmlpath =~ /^(.*?)\/?#{name}$/
81
+ @xmlpath = $1
82
+ end
83
+ tagend(name)
84
+ end
85
+
86
+ def text(text)
87
+ @text += text
88
+ tagtext(text)
89
+ end
90
+
91
+ # Parser method.
92
+ # Params:
93
+ # xml_text - xml message text(String) or Net:HTTPxxx instance (response)
94
+ # params[:xml_lib] - library name: 'rexml' | 'libxml'
95
+ def parse(xml_text, params={})
96
+ # Get response body
97
+ unless xml_text.is_a?(String)
98
+ xml_text = xml_text.body.respond_to?(:force_encoding) ? xml_text.body.force_encoding("UTF-8") : xml_text.body
99
+ end
100
+
101
+ @xml_lib = params[:xml_lib] || @xml_lib
102
+ # check that we had no problems with this library otherwise use default
103
+ @xml_lib = DEFAULT_XML_LIBRARY unless @@supported_xml_libs.include?(@xml_lib)
104
+ # load xml library
105
+ if @xml_lib=='libxml' && !defined?(XML::SaxParser)
106
+ begin
107
+ require 'xml/libxml'
108
+ # is it new ? - Setup SaxParserCallback
109
+ if XML::Parser::VERSION >= '0.5.1.0'
110
+ RightSaxParserCallback.include_callback
111
+ end
112
+ rescue LoadError => e
113
+ @@supported_xml_libs.delete(@xml_lib)
114
+ @xml_lib = DEFAULT_XML_LIBRARY
115
+ if @logger
116
+ @logger.error e.inspect
117
+ @logger.error e.backtrace
118
+ @logger.info "Can not load 'libxml' library. '#{DEFAULT_XML_LIBRARY}' is used for parsing."
119
+ end
120
+ end
121
+ end
122
+ # Parse the xml text
123
+ case @xml_lib
124
+ when 'libxml'
125
+ xml = XML::SaxParser.string(xml_text)
126
+ # check libxml-ruby version
127
+ if XML::Parser::VERSION >= '0.5.1.0'
128
+ xml.callbacks = RightSaxParserCallback.new(self)
129
+ else
130
+ xml.on_start_element { |name, attr_hash| self.tag_start(name, attr_hash) }
131
+ xml.on_characters { |text| self.text(text) }
132
+ xml.on_end_element { |name| self.tag_end(name) }
133
+ end
134
+ xml.parse
135
+ else
136
+ REXML::Document.parse_stream(xml_text, self)
137
+ end
138
+ end
139
+
140
+ # Parser must have a lots of methods
141
+ # (see /usr/lib/ruby/1.8/rexml/parsers/streamparser.rb)
142
+ # We dont need most of them in AwsParser and method_missing helps us
143
+ # to skip their definition
144
+ def method_missing(method, *params)
145
+ # if the method is one of known - just skip it ...
146
+ return if [:comment, :attlistdecl, :notationdecl, :elementdecl,
147
+ :entitydecl, :cdata, :xmldecl, :attlistdecl, :instruction,
148
+ :doctype].include?(method)
149
+ # ... else - call super to raise an exception
150
+ super(method, params)
151
+ end
152
+
153
+ # the functions to be overriden by children (if nessesery)
154
+ def reset;
155
+ end
156
+
157
+ def tagstart(name, attributes)
158
+ ;
159
+ end
160
+
161
+ def tagend(name)
162
+ ;
163
+ end
164
+
165
+ def tagtext(text)
166
+ ;
167
+ end
168
+ end
169
+
170
+ #-----------------------------------------------------------------
171
+ # PARSERS: Errors
172
+ #-----------------------------------------------------------------
173
+
174
+ #<Error>
175
+ # <Code>TemporaryRedirect</Code>
176
+ # <Message>Please re-send this request to the specified temporary endpoint. Continue to use the original request endpoint for future requests.</Message>
177
+ # <RequestId>FD8D5026D1C5ABA3</RequestId>
178
+ # <Endpoint>bucket-for-k.s3-external-3.amazonaws.com</Endpoint>
179
+ # <HostId>ItJy8xPFPli1fq/JR3DzQd3iDvFCRqi1LTRmunEdM1Uf6ZtW2r2kfGPWhRE1vtaU</HostId>
180
+ # <Bucket>bucket-for-k</Bucket>
181
+ #</Error>
182
+
183
+ class RightErrorResponseParser < AwsParser #:nodoc:
184
+ attr_accessor :errors # array of hashes: error/message
185
+ attr_accessor :requestID
186
+ # attr_accessor :endpoint, :host_id, :bucket
187
+ def parse(response)
188
+ super
189
+ end
190
+
191
+ def tagend(name)
192
+ case name
193
+ when 'RequestID';
194
+ @requestID = @text
195
+ when 'Code';
196
+ @code = @text
197
+ when 'Message';
198
+ @message = @text
199
+ # when 'Endpoint' ; @endpoint = @text
200
+ # when 'HostId' ; @host_id = @text
201
+ # when 'Bucket' ; @bucket = @text
202
+ when 'Error';
203
+ @errors << [@code, @message]
204
+ end
205
+ end
206
+
207
+ def reset
208
+ @errors = []
209
+ end
210
+ end
211
+
212
+ # Dummy parser - does nothing
213
+ # Returns the original params back
214
+ class RightDummyParser # :nodoc:
215
+ attr_accessor :result
216
+
217
+ def parse(response, params={})
218
+ @result = [response, params]
219
+ end
220
+ end
221
+
222
+ class RightHttp2xxParser < AwsParser # :nodoc:
223
+ def parse(response)
224
+ @result = response.is_a?(Net::HTTPSuccess)
225
+ end
226
+ end
227
227
  end