aws-sdk 1.1.3 → 1.1.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (233) hide show
  1. data/ca-bundle.crt +2 -348
  2. data/lib/aws.rb +24 -49
  3. data/lib/aws/{common.rb → core.rb} +120 -9
  4. data/lib/aws/{api_config.rb → core/api_config.rb} +19 -20
  5. data/lib/aws/core/api_config_transform.rb +36 -0
  6. data/lib/aws/core/async_handle.rb +91 -0
  7. data/lib/aws/core/authorize_v2.rb +39 -0
  8. data/lib/aws/{authorize_v3.rb → core/authorize_v3.rb} +16 -15
  9. data/lib/aws/{api_config_transform.rb → core/authorize_with_session_token.rb} +9 -12
  10. data/lib/aws/core/autoloader.rb +64 -0
  11. data/lib/aws/core/cacheable.rb +78 -0
  12. data/lib/aws/core/client.rb +471 -0
  13. data/lib/aws/core/client_logging.rb +125 -0
  14. data/lib/aws/core/collections.rb +229 -0
  15. data/lib/aws/core/configuration.rb +358 -0
  16. data/lib/aws/core/configured_client_methods.rb +76 -0
  17. data/lib/aws/core/configured_grammars.rb +63 -0
  18. data/lib/aws/{configured_option_grammars.rb → core/configured_option_grammars.rb} +18 -20
  19. data/lib/aws/{configured_xml_grammars.rb → core/configured_xml_grammars.rb} +19 -21
  20. data/lib/aws/core/default_signer.rb +67 -0
  21. data/lib/aws/core/http/curb_handler.rb +129 -0
  22. data/lib/aws/core/http/handler.rb +77 -0
  23. data/lib/aws/core/http/httparty_handler.rb +113 -0
  24. data/lib/aws/core/http/net_http_handler.rb +124 -0
  25. data/lib/aws/core/http/request.rb +207 -0
  26. data/lib/aws/core/http/response.rb +73 -0
  27. data/lib/aws/{ignore_result_element.rb → core/ignore_result_element.rb} +14 -18
  28. data/lib/aws/core/indifferent_hash.rb +88 -0
  29. data/lib/aws/core/inflection.rb +47 -0
  30. data/lib/aws/core/lazy_error_classes.rb +62 -0
  31. data/lib/aws/{uri_escape.rb → core/meta_utils.rb} +24 -23
  32. data/lib/aws/core/model.rb +57 -0
  33. data/lib/aws/{authorize_with_session_token.rb → core/naming.rb} +9 -8
  34. data/lib/aws/core/option_grammar.rb +562 -0
  35. data/lib/aws/core/policy.rb +914 -0
  36. data/lib/aws/core/resource.rb +380 -0
  37. data/lib/aws/core/resource_cache.rb +40 -0
  38. data/lib/aws/core/response.rb +125 -0
  39. data/lib/aws/core/response_cache.rb +50 -0
  40. data/lib/aws/core/service_interface.rb +60 -0
  41. data/lib/aws/core/uri_escape.rb +46 -0
  42. data/lib/aws/core/xml_grammar.rb +926 -0
  43. data/lib/aws/ec2.rb +47 -16
  44. data/lib/aws/ec2/attachment.rb +0 -2
  45. data/lib/aws/ec2/attachment_collection.rb +1 -6
  46. data/lib/aws/ec2/availability_zone.rb +0 -2
  47. data/lib/aws/ec2/availability_zone_collection.rb +0 -3
  48. data/lib/aws/ec2/client.rb +6 -9
  49. data/lib/aws/ec2/client/xml.rb +3 -6
  50. data/lib/aws/ec2/collection.rb +1 -4
  51. data/lib/aws/ec2/config.rb +18 -0
  52. data/lib/aws/ec2/elastic_ip.rb +0 -2
  53. data/lib/aws/ec2/elastic_ip_collection.rb +0 -4
  54. data/lib/aws/ec2/errors.rb +1 -4
  55. data/lib/aws/ec2/has_permissions.rb +0 -2
  56. data/lib/aws/ec2/image.rb +0 -5
  57. data/lib/aws/ec2/image_collection.rb +0 -6
  58. data/lib/aws/ec2/instance.rb +23 -9
  59. data/lib/aws/ec2/instance_collection.rb +85 -22
  60. data/lib/aws/ec2/key_pair.rb +0 -2
  61. data/lib/aws/ec2/key_pair_collection.rb +1 -4
  62. data/lib/aws/ec2/permission_collection.rb +2 -5
  63. data/lib/aws/ec2/region.rb +0 -2
  64. data/lib/aws/ec2/region_collection.rb +0 -4
  65. data/lib/aws/ec2/request.rb +4 -9
  66. data/lib/aws/ec2/reserved_instances.rb +0 -3
  67. data/lib/aws/ec2/reserved_instances_collection.rb +0 -4
  68. data/lib/aws/ec2/reserved_instances_offering.rb +0 -3
  69. data/lib/aws/ec2/reserved_instances_offering_collection.rb +0 -4
  70. data/lib/aws/ec2/resource.rb +3 -5
  71. data/lib/aws/ec2/resource_tag_collection.rb +1 -6
  72. data/lib/aws/ec2/security_group.rb +204 -72
  73. data/lib/aws/ec2/security_group/egress_ip_permission_collection.rb +53 -0
  74. data/lib/aws/ec2/security_group/ip_permission.rb +92 -10
  75. data/lib/aws/ec2/security_group/ip_permission_collection.rb +14 -15
  76. data/lib/aws/ec2/security_group_collection.rb +11 -8
  77. data/lib/aws/ec2/snapshot.rb +0 -4
  78. data/lib/aws/ec2/snapshot_collection.rb +0 -4
  79. data/lib/aws/ec2/tag.rb +0 -3
  80. data/lib/aws/ec2/tag_collection.rb +1 -8
  81. data/lib/aws/ec2/tagged_item.rb +1 -3
  82. data/lib/aws/ec2/volume.rb +0 -6
  83. data/lib/aws/ec2/volume_collection.rb +0 -4
  84. data/lib/aws/errors.rb +0 -3
  85. data/lib/aws/iam.rb +33 -12
  86. data/lib/aws/iam/access_key.rb +0 -3
  87. data/lib/aws/iam/access_key_collection.rb +0 -3
  88. data/lib/aws/iam/account_alias_collection.rb +0 -2
  89. data/lib/aws/iam/client.rb +6 -8
  90. data/lib/aws/iam/client/xml.rb +4 -8
  91. data/lib/aws/iam/collection.rb +2 -5
  92. data/lib/aws/iam/config.rb +18 -0
  93. data/lib/aws/iam/errors.rb +2 -4
  94. data/lib/aws/iam/group.rb +0 -5
  95. data/lib/aws/iam/group_collection.rb +0 -3
  96. data/lib/aws/iam/group_policy_collection.rb +0 -2
  97. data/lib/aws/iam/group_user_collection.rb +1 -4
  98. data/lib/aws/iam/login_profile.rb +0 -2
  99. data/lib/aws/iam/mfa_device.rb +1 -3
  100. data/lib/aws/iam/mfa_device_collection.rb +0 -3
  101. data/lib/aws/iam/policy.rb +2 -4
  102. data/lib/aws/iam/policy_collection.rb +0 -3
  103. data/lib/aws/iam/request.rb +3 -7
  104. data/lib/aws/iam/resource.rb +1 -4
  105. data/lib/aws/iam/server_certificate.rb +0 -2
  106. data/lib/aws/iam/server_certificate_collection.rb +0 -3
  107. data/lib/aws/iam/signing_certificate.rb +0 -2
  108. data/lib/aws/iam/signing_certificate_collection.rb +0 -3
  109. data/lib/aws/iam/user.rb +0 -7
  110. data/lib/aws/iam/user_collection.rb +0 -3
  111. data/lib/aws/iam/user_group_collection.rb +0 -3
  112. data/lib/aws/iam/user_policy.rb +0 -2
  113. data/lib/aws/iam/user_policy_collection.rb +0 -3
  114. data/lib/aws/rails.rb +5 -4
  115. data/lib/aws/record.rb +4 -1
  116. data/lib/aws/record/base.rb +3 -2
  117. data/lib/aws/record/errors.rb +1 -3
  118. data/lib/aws/s3.rb +31 -6
  119. data/lib/aws/s3/access_control_list.rb +0 -2
  120. data/lib/aws/s3/acl_object.rb +10 -12
  121. data/lib/aws/s3/bucket.rb +1 -9
  122. data/lib/aws/s3/bucket_collection.rb +2 -5
  123. data/lib/aws/s3/bucket_version_collection.rb +1 -5
  124. data/lib/aws/s3/client.rb +34 -37
  125. data/lib/aws/s3/client/xml.rb +11 -14
  126. data/lib/aws/{resource_cache.rb → s3/config.rb} +6 -20
  127. data/lib/aws/s3/errors.rb +6 -7
  128. data/lib/aws/s3/multipart_upload.rb +1 -4
  129. data/lib/aws/s3/multipart_upload_collection.rb +1 -6
  130. data/lib/aws/s3/object_collection.rb +1 -5
  131. data/lib/aws/s3/object_metadata.rb +1 -3
  132. data/lib/aws/s3/object_upload_collection.rb +1 -7
  133. data/lib/aws/s3/object_version.rb +1 -4
  134. data/lib/aws/s3/object_version_collection.rb +1 -4
  135. data/lib/aws/s3/policy.rb +3 -5
  136. data/lib/aws/s3/prefix_and_delimiter_collection.rb +0 -2
  137. data/lib/aws/s3/prefixed_collection.rb +0 -2
  138. data/lib/aws/s3/presigned_post.rb +1 -3
  139. data/lib/aws/s3/request.rb +2 -5
  140. data/lib/aws/s3/s3_object.rb +1 -8
  141. data/lib/aws/s3/tree.rb +8 -6
  142. data/lib/aws/s3/tree/branch_node.rb +0 -3
  143. data/lib/aws/s3/tree/child_collection.rb +1 -5
  144. data/lib/aws/s3/tree/leaf_node.rb +0 -5
  145. data/lib/aws/s3/tree/parent.rb +1 -4
  146. data/lib/aws/s3/uploaded_part.rb +1 -3
  147. data/lib/aws/s3/uploaded_part_collection.rb +1 -5
  148. data/lib/aws/simple_db.rb +21 -6
  149. data/lib/aws/simple_db/attribute.rb +1 -6
  150. data/lib/aws/simple_db/attribute_collection.rb +1 -7
  151. data/lib/aws/simple_db/client.rb +7 -9
  152. data/lib/aws/simple_db/client/options.rb +2 -4
  153. data/lib/aws/simple_db/client/xml.rb +5 -10
  154. data/lib/aws/{naming.rb → simple_db/config.rb} +3 -14
  155. data/lib/aws/simple_db/delete_attributes.rb +0 -2
  156. data/lib/aws/simple_db/domain.rb +1 -6
  157. data/lib/aws/simple_db/domain_collection.rb +1 -4
  158. data/lib/aws/simple_db/domain_metadata.rb +1 -3
  159. data/lib/aws/simple_db/errors.rb +1 -4
  160. data/lib/aws/simple_db/item.rb +1 -7
  161. data/lib/aws/simple_db/item_collection.rb +22 -23
  162. data/lib/aws/simple_db/put_attributes.rb +0 -2
  163. data/lib/aws/simple_db/request.rb +3 -7
  164. data/lib/aws/simple_email_service.rb +11 -6
  165. data/lib/aws/simple_email_service/client.rb +7 -9
  166. data/lib/aws/simple_email_service/client/options.rb +3 -6
  167. data/lib/aws/simple_email_service/client/xml.rb +4 -8
  168. data/lib/aws/simple_email_service/config.rb +19 -0
  169. data/lib/aws/simple_email_service/email_address_collection.rb +1 -3
  170. data/lib/aws/simple_email_service/errors.rb +1 -4
  171. data/lib/aws/simple_email_service/quotas.rb +1 -3
  172. data/lib/aws/simple_email_service/request.rb +3 -7
  173. data/lib/aws/sns.rb +15 -8
  174. data/lib/aws/sns/client.rb +7 -8
  175. data/lib/aws/sns/client/options.rb +3 -6
  176. data/lib/aws/sns/client/xml.rb +4 -8
  177. data/lib/aws/sns/config.rb +18 -0
  178. data/lib/aws/sns/errors.rb +1 -4
  179. data/lib/aws/sns/policy.rb +3 -5
  180. data/lib/aws/sns/request.rb +4 -9
  181. data/lib/aws/sns/subscription.rb +1 -5
  182. data/lib/aws/sns/subscription_collection.rb +1 -5
  183. data/lib/aws/sns/topic.rb +1 -6
  184. data/lib/aws/sns/topic_collection.rb +1 -4
  185. data/lib/aws/sns/topic_subscription_collection.rb +1 -4
  186. data/lib/aws/sqs.rb +14 -5
  187. data/lib/aws/sqs/client.rb +6 -9
  188. data/lib/aws/sqs/client/xml.rb +4 -7
  189. data/lib/aws/sqs/config.rb +18 -0
  190. data/lib/aws/sqs/errors.rb +1 -4
  191. data/lib/aws/sqs/policy.rb +3 -5
  192. data/lib/aws/sqs/queue.rb +2 -7
  193. data/lib/aws/sqs/queue_collection.rb +4 -5
  194. data/lib/aws/sqs/received_message.rb +1 -3
  195. data/lib/aws/sqs/received_sns_message.rb +2 -2
  196. data/lib/aws/sqs/request.rb +4 -7
  197. data/lib/aws/sts.rb +12 -6
  198. data/lib/aws/sts/client.rb +6 -8
  199. data/lib/aws/sts/client/xml.rb +4 -8
  200. data/lib/aws/sts/config.rb +18 -0
  201. data/lib/aws/sts/errors.rb +1 -4
  202. data/lib/aws/sts/federated_session.rb +0 -2
  203. data/lib/aws/sts/policy.rb +3 -5
  204. data/lib/aws/sts/request.rb +3 -7
  205. metadata +60 -50
  206. data/lib/aws/async_handle.rb +0 -90
  207. data/lib/aws/authorize_v2.rb +0 -37
  208. data/lib/aws/base_client.rb +0 -488
  209. data/lib/aws/cacheable.rb +0 -79
  210. data/lib/aws/client_logging.rb +0 -122
  211. data/lib/aws/collections.rb +0 -230
  212. data/lib/aws/configuration.rb +0 -357
  213. data/lib/aws/configured_client_methods.rb +0 -81
  214. data/lib/aws/configured_grammars.rb +0 -65
  215. data/lib/aws/default_signer.rb +0 -65
  216. data/lib/aws/http/curb_handler.rb +0 -127
  217. data/lib/aws/http/handler.rb +0 -77
  218. data/lib/aws/http/httparty_handler.rb +0 -103
  219. data/lib/aws/http/request.rb +0 -165
  220. data/lib/aws/http/request_param.rb +0 -64
  221. data/lib/aws/http/response.rb +0 -72
  222. data/lib/aws/indifferent_hash.rb +0 -86
  223. data/lib/aws/inflection.rb +0 -46
  224. data/lib/aws/lazy_error_classes.rb +0 -64
  225. data/lib/aws/meta_utils.rb +0 -43
  226. data/lib/aws/model.rb +0 -57
  227. data/lib/aws/option_grammar.rb +0 -565
  228. data/lib/aws/policy.rb +0 -914
  229. data/lib/aws/resource.rb +0 -381
  230. data/lib/aws/response.rb +0 -125
  231. data/lib/aws/response_cache.rb +0 -50
  232. data/lib/aws/service_interface.rb +0 -60
  233. data/lib/aws/xml_grammar.rb +0 -925
@@ -11,15 +11,111 @@
11
11
  # ANY KIND, either express or implied. See the License for the specific
12
12
  # language governing permissions and limitations under the License.
13
13
 
14
- require 'aws/configuration'
15
- require 'aws/resource_cache'
16
- require 'aws/response_cache'
14
+ require 'aws/core/autoloader'
17
15
 
18
- # Root namespace for the AWS SDK for Ruby.
16
+ # AWS is the root module for all of the Amazon Web Services. It is also
17
+ # where you can configure you access to AWS.
18
+ #
19
+ # = Supported Services
20
+ #
21
+ # The currently supported services are:
22
+ #
23
+ # * {EC2}
24
+ # * {S3}
25
+ # * {SimpleDB}
26
+ # * {SimpleEmailService}
27
+ # * {SNS}
28
+ # * {SQS}
29
+ # * {IAM}
30
+ #
31
+ # = AWS::Record
32
+ #
33
+ # In addition to the above services, bundled is an ORM based on AWS services
34
+ # See {AWS::Record} for more information.
35
+ #
36
+ # = Configuration
37
+ #
38
+ # You call {AWS.config} with a hash of options to configure your
39
+ # access to the Amazon Web Services.
40
+ #
41
+ # At a minimum you need to set your access credentials. See {AWS.config}
42
+ # for additional configuration options.
43
+ #
44
+ # AWS.config(
45
+ # :access_key_id => 'ACCESS_KEY_ID',
46
+ # :secret_access_key => 'SECRET_ACCESS_KEY')
47
+ #
48
+ # == Rails
49
+ #
50
+ # If you are loading AWS inside a Rails web application, it is recomended to
51
+ # place your configuration inside:
52
+ #
53
+ # config/initializers/aws.rb
54
+ #
19
55
  module AWS
20
56
 
21
57
  # Current version of the AWS SDK for Ruby
22
- VERSION = "1.1.3"
58
+ VERSION = "1.1.4"
59
+
60
+ register_autoloads(self) do
61
+ autoload :Errors, 'errors'
62
+ end
63
+
64
+ module Core
65
+
66
+ AWS.register_autoloads(self) do
67
+ autoload :ApiConfig, 'api_config'
68
+ autoload :ApiConfigTransform, 'api_config_transform'
69
+ autoload :AsyncHandle, 'async_handle'
70
+ autoload :AuthorizeV2, 'authorize_v2'
71
+ autoload :AuthorizeV3, 'authorize_v3'
72
+ autoload :AuthorizeWithSessionToken, 'authorize_with_session_token'
73
+ autoload :Cacheable, 'cacheable'
74
+ autoload :Client, 'client'
75
+ autoload :ClientLogging, 'client_logging'
76
+ autoload :Collections, 'collections'
77
+ autoload :Configuration, 'configuration'
78
+ autoload :ConfiguredClientMethods, 'configured_client_methods'
79
+ autoload :ConfiguredGrammars, 'configured_grammars'
80
+ autoload :ConfiguredOptionGrammars, 'configured_option_grammars'
81
+ autoload :ConfiguredXmlGrammars, 'configured_xml_grammars'
82
+ autoload :DefaultSigner, 'default_signer'
83
+ autoload :IgnoreResultElement, 'ignore_result_element'
84
+ autoload :IndifferentHash, 'indifferent_hash'
85
+ autoload :Inflection, 'inflection'
86
+ autoload :LazyErrorClasses, 'lazy_error_classes'
87
+ autoload :MetaUtils, 'meta_utils'
88
+ autoload :Model, 'model'
89
+ autoload :Naming, 'naming'
90
+ autoload :OptionGrammar, 'option_grammar'
91
+ autoload :Policy, 'policy'
92
+ autoload :Resource, 'resource'
93
+ autoload :ResourceCache, 'resource_cache'
94
+ autoload :Response, 'response'
95
+ autoload :ResponseCache, 'response_cache'
96
+ autoload :ServiceInterface, 'service_interface'
97
+ autoload :UriEscape, 'uri_escape'
98
+ autoload :XmlGrammar, 'xml_grammar'
99
+ end
100
+
101
+ module Http
102
+ AWS.register_autoloads(self) do
103
+ autoload :Handler, 'handler'
104
+ autoload :NetHttpHandler, 'net_http_handler'
105
+ autoload :HTTPartyHandler, 'httparty_handler' # non-standard inflection
106
+ autoload :Request, 'request'
107
+ autoload :Response, 'response'
108
+ end
109
+ end
110
+
111
+ end
112
+
113
+ # the http party handler should still be accessible from its old namespace
114
+ module Http
115
+ AWS.register_autoloads(self, 'aws/core/http') do
116
+ autoload :HTTPartyHandler, 'httparty_handler'
117
+ end
118
+ end
23
119
 
24
120
  class << self
25
121
 
@@ -147,9 +243,9 @@ module AWS
147
243
  # append to all requets against AWS services. This should be set
148
244
  # for clients and applications built ontop of the aws-sdk gem.
149
245
  #
150
- # @return [Configuration] Returns the new configuration.
246
+ # @return [Core::Configuration] Returns the new configuration.
151
247
  def config options = {}
152
- @@config ||= Configuration.new
248
+ @@config ||= Core::Configuration.new
153
249
  @@config = @@config.with(options) unless options.empty?
154
250
  @@config
155
251
  end
@@ -255,7 +351,7 @@ module AWS
255
351
  def resource_cache
256
352
  if memoizing?
257
353
  Thread.current[:aws_memoization][:resource_cache] ||=
258
- ResourceCache.new
354
+ Core::ResourceCache.new
259
355
  end
260
356
  end
261
357
 
@@ -263,10 +359,25 @@ module AWS
263
359
  def response_cache
264
360
  if memoizing?
265
361
  Thread.current[:aws_memoization][:response_cache] ||=
266
- ResponseCache.new
362
+ Core::ResponseCache.new
267
363
  end
268
364
  end
269
365
 
366
+ def add_service name, ruby_name, default_endpoint
367
+
368
+ create_block = lambda do |config|
369
+ AWS.const_get(name)::Client.new(:config => config)
370
+ end
371
+
372
+ needs = [:signer, :http_handler, :"#{ruby_name}_endpoint"]
373
+
374
+ Core::Configuraiton.add_option :"#{ruby_name}_endpoint", default_endpoint
375
+
376
+ Core::Configuraiton.add_option_with_needs(
377
+ :"#{ruby_name}_client", needs, &create_block)
378
+
379
+ end
380
+
270
381
  # Causes all requests to return empty responses without making any
271
382
  # requests against the live services. This does not attempt to
272
383
  # mock the services.
@@ -11,35 +11,34 @@
11
11
  # ANY KIND, either express or implied. See the License for the specific
12
12
  # language governing permissions and limitations under the License.
13
13
 
14
- require 'aws/naming'
15
-
16
- require 'pathname'
17
14
  require 'yaml'
15
+ require 'pathname'
18
16
 
19
17
  module AWS
18
+ module Core
20
19
 
21
- # @private
22
- module ApiConfig
20
+ # @private
21
+ module ApiConfig
23
22
 
24
- include Naming
23
+ include Naming
25
24
 
26
- protected
27
- def api_config
25
+ protected
26
+ def api_config
28
27
 
29
- config_file = $:.map do |load_path|
30
- if config_dir = Pathname.new(load_path) +
31
- "aws" + "api_config" and
32
- config_dir.directory?
33
- config_dir.children.select do |child|
34
- child.basename.to_s =~ /^#{service_name}/
35
- end.sort.last
36
- end
37
- end.compact.sort.last
28
+ config_file = $:.map do |load_path|
29
+ if config_dir = Pathname.new(load_path) +
30
+ "aws" + "api_config" and
31
+ config_dir.directory?
32
+ config_dir.children.select do |child|
33
+ child.basename.to_s =~ /^#{service_name}/
34
+ end.sort.last
35
+ end
36
+ end.compact.sort.last
38
37
 
39
- YAML.load(config_file.read)
38
+ YAML.load(config_file.read)
40
39
 
41
- end
40
+ end
42
41
 
42
+ end
43
43
  end
44
-
45
44
  end
@@ -0,0 +1,36 @@
1
+ # Copyright 2011 Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License"). You
4
+ # may not use this file except in compliance with the License. A copy of
5
+ # the License is located at
6
+ #
7
+ # http://aws.amazon.com/apache2.0/
8
+ #
9
+ # or in the "license" file accompanying this file. This file is
10
+ # distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
11
+ # ANY KIND, either express or implied. See the License for the specific
12
+ # language governing permissions and limitations under the License.
13
+
14
+ require 'yaml'
15
+
16
+ module AWS
17
+ module Core
18
+
19
+ # @private
20
+ class ApiConfigTransform
21
+
22
+ def self.rename_input_list_to_membered_list api_config
23
+ api_config[:operations].each_pair do |name,customizations|
24
+
25
+ input = api_config[:operations][name][:input]
26
+ fixed_input = input.to_yaml.gsub(/:list:/, ':membered_list:')
27
+
28
+ api_config[:operations][name][:input] = YAML.load(fixed_input)
29
+
30
+ end
31
+ api_config
32
+ end
33
+
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,91 @@
1
+ # Copyright 2011 Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License"). You
4
+ # may not use this file except in compliance with the License. A copy of
5
+ # the License is located at
6
+ #
7
+ # http://aws.amazon.com/apache2.0/
8
+ #
9
+ # or in the "license" file accompanying this file. This file is
10
+ # distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
11
+ # ANY KIND, either express or implied. See the License for the specific
12
+ # language governing permissions and limitations under the License.
13
+
14
+ module AWS
15
+ module Core
16
+
17
+ # Mixin that provides a generic callback facility for asynchronous
18
+ # tasks that can either succeed or fail.
19
+ # @private
20
+ module AsyncHandle
21
+
22
+ # Called to signal success and fire off the success and complete callbacks.
23
+ def signal_success
24
+ __send_signal(:success)
25
+ end
26
+
27
+ # Called to signal failure and fire off the failure and complete callbacks.
28
+ def signal_failure
29
+ __send_signal(:failure)
30
+ end
31
+
32
+ # Registers a callback to be called on successful completion of
33
+ # the task.
34
+ #
35
+ # handle.on_success { puts "It worked!" }
36
+ #
37
+ # If this is called when the task has already completed
38
+ # successfully, it will call the callback immediately.
39
+ def on_success(&blk)
40
+ if @_async_status == :success
41
+ blk.call
42
+ else
43
+ (@_async_callbacks ||= []) << { :success => blk }
44
+ end
45
+ end
46
+
47
+ # Registers a callback to be called when the task fails.
48
+ #
49
+ # handle.on_failure { puts "It didn't work!" }
50
+ #
51
+ # If this is called when the task has already failed, it will
52
+ # call the callback immediately.
53
+ def on_failure(&blk)
54
+ if @_async_status == :failure
55
+ blk.call
56
+ else
57
+ (@_async_callbacks ||= []) << { :failure => blk }
58
+ end
59
+ end
60
+
61
+ # Registers a callback to be called when the task is complete,
62
+ # regardless of its status. Yields the status to the block.
63
+ #
64
+ # handle.on_complete do |status|
65
+ # puts "It #{status == :success ? 'did' : 'did not'} work!"
66
+ # end
67
+ #
68
+ # If this is called when the task has already completed, it will
69
+ # call the callback immediately.
70
+ def on_complete(&blk)
71
+ if !@_async_status.nil?
72
+ blk.call(@_async_status)
73
+ else
74
+ (@_async_callbacks ||= []) << {
75
+ :failure => lambda { blk.call(:failure) },
76
+ :success => lambda { blk.call(:success) }
77
+ }
78
+ end
79
+ end
80
+
81
+ private
82
+ def __send_signal(kind)
83
+ @_async_status = kind
84
+ @_async_callbacks.map do |cb|
85
+ cb[kind]
86
+ end.compact.each { |blk| blk.call } if @_async_callbacks
87
+ end
88
+
89
+ end
90
+ end
91
+ end
@@ -0,0 +1,39 @@
1
+ # Copyright 2011 Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License"). You
4
+ # may not use this file except in compliance with the License. A copy of
5
+ # the License is located at
6
+ #
7
+ # http://aws.amazon.com/apache2.0/
8
+ #
9
+ # or in the "license" file accompanying this file. This file is
10
+ # distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
11
+ # ANY KIND, either express or implied. See the License for the specific
12
+ # language governing permissions and limitations under the License.
13
+
14
+ module AWS
15
+ module Core
16
+
17
+ # Mixed into clients that use v2 authorization.
18
+ # @private
19
+ module AuthorizeV2
20
+
21
+ def string_to_sign
22
+ parts = [http_method,
23
+ host,
24
+ path,
25
+ params.sort.collect { |p| p.encoded }.join('&')]
26
+ parts.join("\n")
27
+ end
28
+
29
+ def add_authorization! signer
30
+ self.access_key_id = signer.access_key_id
31
+ add_param('AWSAccessKeyId', access_key_id)
32
+ add_param('SignatureVersion', '2')
33
+ add_param('SignatureMethod', 'HmacSHA256')
34
+ add_param('Signature', signer.sign(string_to_sign))
35
+ end
36
+
37
+ end
38
+ end
39
+ end
@@ -11,27 +11,28 @@
11
11
  # ANY KIND, either express or implied. See the License for the specific
12
12
  # language governing permissions and limitations under the License.
13
13
 
14
- require 'base64'
15
14
  require 'time'
16
15
 
17
16
  module AWS
17
+ module Core
18
18
 
19
- # Mixed into clients that use v3 authorization.
20
- # @private
21
- module AuthorizeV3
19
+ # Mixed into clients that use v3 authorization.
20
+ # @private
21
+ module AuthorizeV3
22
22
 
23
- def string_to_sign
24
- headers['date'] ||= Time.now.rfc822
25
- end
23
+ def string_to_sign
24
+ headers['date'] ||= Time.now.rfc822
25
+ end
26
26
 
27
- def add_authorization! signer
28
- self.access_key_id = signer.access_key_id
29
- parts = []
30
- parts << "AWS3-HTTPS AWSAccessKeyId=#{access_key_id}"
31
- parts << "Algorithm=HmacSHA256"
32
- parts << "Signature=#{signer.sign(string_to_sign)}"
33
- headers['x-amzn-authorization'] = parts.join(',')
34
- end
27
+ def add_authorization! signer
28
+ self.access_key_id = signer.access_key_id
29
+ parts = []
30
+ parts << "AWS3-HTTPS AWSAccessKeyId=#{access_key_id}"
31
+ parts << "Algorithm=HmacSHA256"
32
+ parts << "Signature=#{signer.sign(string_to_sign)}"
33
+ headers['x-amzn-authorization'] = parts.join(',')
34
+ end
35
35
 
36
+ end
36
37
  end
37
38
  end
@@ -12,21 +12,18 @@
12
12
  # language governing permissions and limitations under the License.
13
13
 
14
14
  module AWS
15
+ module Core
15
16
 
16
- # @private
17
- class ApiConfigTransform
18
-
19
- def self.rename_input_list_to_membered_list api_config
20
- api_config[:operations].each_pair do |name,customizations|
21
-
22
- input = api_config[:operations][name][:input]
23
- fixed_input = input.to_yaml.gsub(/:list:/, ':membered_list:')
24
-
25
- api_config[:operations][name][:input] = YAML.load(fixed_input)
17
+ # @private
18
+ module AuthorizeWithSessionToken
26
19
 
20
+ def add_authorization! signer
21
+ if signer.respond_to?(:session_token) and token = signer.session_token
22
+ add_param("SecurityToken", token)
23
+ end
24
+ super
27
25
  end
28
- api_config
29
- end
30
26
 
27
+ end
31
28
  end
32
29
  end