aws-sdk-core 2.0.48 → 2.1.0

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.
Files changed (197) hide show
  1. checksums.yaml +4 -4
  2. data/apis/autoscaling/2011-01-01/api-2.json +636 -33
  3. data/apis/cloudhsm/2014-05-30/api-2.json +3 -6
  4. data/apis/ec2/2014-10-01/api-2.json +10267 -0
  5. data/apis/ec2/2014-10-01/paginators-1.json +125 -0
  6. data/apis/ec2/2014-10-01/resources-1.json +2289 -0
  7. data/apis/ec2/2014-10-01/waiters-2.json +453 -0
  8. data/apis/ec2/2015-03-01/api-2.json +11245 -0
  9. data/apis/ec2/2015-03-01/paginators-1.json +125 -0
  10. data/apis/ec2/2015-03-01/resources-1.json +2479 -0
  11. data/apis/ec2/2015-03-01/waiters-2.json +458 -0
  12. data/apis/ec2/2015-04-15/api-2.json +182 -2
  13. data/apis/ecs/2014-11-13/api-2.json +316 -7
  14. data/apis/ecs/2014-11-13/paginators-1.json +40 -0
  15. data/apis/ecs/2014-11-13/waiters-2.json +93 -0
  16. data/apis/redshift/2012-12-01/waiters-2.json +19 -0
  17. data/apis/s3/2006-03-01/api-2.json +1 -2
  18. data/apis/sqs/2012-11-05/api-2.json +5 -6
  19. data/ca-bundle.crt +3554 -0
  20. data/lib/aws-sdk-core.rb +127 -44
  21. data/lib/aws-sdk-core/api/builder.rb +95 -0
  22. data/lib/aws-sdk-core/api/customizations.rb +152 -0
  23. data/lib/aws-sdk-core/api/docs/builder.rb +220 -0
  24. data/lib/aws-sdk-core/api/docs/client_type_documenter.rb +109 -0
  25. data/lib/aws-sdk-core/api/docs/docstring_provider.rb +66 -0
  26. data/lib/aws-sdk-core/api/docs/operation_documenter.rb +107 -0
  27. data/lib/aws-sdk-core/api/docs/param_formatter.rb +163 -0
  28. data/lib/aws-sdk-core/api/docs/request_syntax_example.rb +22 -0
  29. data/lib/aws-sdk-core/api/docs/response_structure_example.rb +91 -0
  30. data/lib/aws-sdk-core/api/docs/utils.rb +133 -0
  31. data/lib/aws-sdk-core/api/shape_map.rb +140 -0
  32. data/lib/aws-sdk-core/assume_role_credentials.rb +9 -6
  33. data/lib/aws-sdk-core/client.rb +9 -6
  34. data/lib/aws-sdk-core/client_stubs.rb +127 -133
  35. data/lib/aws-sdk-core/client_waiters.rb +1 -1
  36. data/lib/aws-sdk-core/credential_provider.rb +44 -0
  37. data/lib/aws-sdk-core/credential_provider_chain.rb +3 -2
  38. data/lib/aws-sdk-core/credentials.rb +5 -0
  39. data/lib/aws-sdk-core/deprecations.rb +69 -0
  40. data/lib/aws-sdk-core/dynamodb.rb +12 -0
  41. data/lib/aws-sdk-core/eager_loader.rb +31 -0
  42. data/lib/aws-sdk-core/ecs.rb +2 -0
  43. data/lib/aws-sdk-core/empty_structure.rb +1 -82
  44. data/lib/aws-sdk-core/endpoint_provider.rb +1 -1
  45. data/lib/aws-sdk-core/instance_profile_credentials.rb +9 -10
  46. data/lib/aws-sdk-core/json.rb +56 -0
  47. data/lib/aws-sdk-core/json/builder.rb +33 -34
  48. data/lib/aws-sdk-core/json/error_handler.rb +2 -2
  49. data/lib/aws-sdk-core/json/handler.rb +67 -0
  50. data/lib/aws-sdk-core/json/json_engine.rb +15 -0
  51. data/lib/aws-sdk-core/json/oj_engine.rb +15 -0
  52. data/lib/aws-sdk-core/json/parser.rb +30 -38
  53. data/lib/aws-sdk-core/pageable_response.rb +9 -12
  54. data/lib/aws-sdk-core/pager.rb +69 -0
  55. data/lib/aws-sdk-core/param_converter.rb +203 -0
  56. data/lib/aws-sdk-core/param_validator.rb +148 -0
  57. data/lib/aws-sdk-core/plugins/dynamodb_simple_attributes.rb +21 -18
  58. data/lib/aws-sdk-core/plugins/glacier_account_id.rb +9 -1
  59. data/lib/aws-sdk-core/plugins/glacier_checksums.rb +2 -3
  60. data/lib/aws-sdk-core/plugins/param_converter.rb +27 -0
  61. data/lib/aws-sdk-core/plugins/param_validator.rb +28 -0
  62. data/lib/aws-sdk-core/plugins/protocols/json_rpc.rb +3 -7
  63. data/lib/aws-sdk-core/plugins/protocols/rest_json.rb +1 -2
  64. data/lib/aws-sdk-core/plugins/protocols/rest_xml.rb +1 -1
  65. data/lib/aws-sdk-core/plugins/regional_endpoint.rb +1 -1
  66. data/lib/aws-sdk-core/plugins/request_signer.rb +5 -5
  67. data/lib/aws-sdk-core/plugins/response_paging.rb +20 -11
  68. data/lib/aws-sdk-core/plugins/s3_get_bucket_location_fix.rb +1 -1
  69. data/lib/aws-sdk-core/plugins/s3_request_signer.rb +1 -2
  70. data/lib/aws-sdk-core/plugins/stub_responses.rb +25 -27
  71. data/lib/aws-sdk-core/query/ec2_param_builder.rb +29 -34
  72. data/lib/aws-sdk-core/query/handler.rb +32 -18
  73. data/lib/aws-sdk-core/query/param_builder.rb +45 -53
  74. data/lib/aws-sdk-core/refreshing_credentials.rb +3 -15
  75. data/lib/aws-sdk-core/rest/handler.rb +22 -0
  76. data/lib/aws-sdk-core/rest/request/body.rb +58 -0
  77. data/lib/aws-sdk-core/rest/request/builder.rb +50 -0
  78. data/lib/aws-sdk-core/rest/request/endpoint.rb +70 -0
  79. data/lib/aws-sdk-core/rest/request/headers.rb +48 -0
  80. data/lib/aws-sdk-core/rest/response/body.rb +43 -0
  81. data/lib/aws-sdk-core/rest/response/headers.rb +60 -0
  82. data/lib/aws-sdk-core/rest/response/parser.rb +47 -0
  83. data/lib/aws-sdk-core/rest/response/status_code.rb +24 -0
  84. data/lib/aws-sdk-core/shared_credentials.rb +11 -6
  85. data/lib/aws-sdk-core/signers/base.rb +1 -1
  86. data/lib/aws-sdk-core/signers/s3.rb +2 -3
  87. data/lib/aws-sdk-core/signers/v2.rb +7 -4
  88. data/lib/aws-sdk-core/signers/v4.rb +11 -22
  89. data/lib/aws-sdk-core/structure.rb +26 -145
  90. data/lib/aws-sdk-core/stubbing/data_applicator.rb +46 -0
  91. data/lib/aws-sdk-core/stubbing/empty_stub.rb +53 -0
  92. data/lib/aws-sdk-core/stubbing/protocols/ec2.rb +49 -0
  93. data/lib/aws-sdk-core/stubbing/protocols/json.rb +40 -0
  94. data/lib/aws-sdk-core/stubbing/protocols/query.rb +40 -0
  95. data/lib/aws-sdk-core/stubbing/protocols/rest.rb +67 -0
  96. data/lib/aws-sdk-core/stubbing/protocols/rest_json.rb +25 -0
  97. data/lib/aws-sdk-core/stubbing/protocols/rest_xml.rb +38 -0
  98. data/lib/aws-sdk-core/stubbing/stub_data.rb +34 -0
  99. data/lib/aws-sdk-core/version.rb +1 -1
  100. data/lib/aws-sdk-core/xml/builder.rb +58 -52
  101. data/lib/aws-sdk-core/xml/default_map.rb +10 -0
  102. data/lib/aws-sdk-core/xml/doc_builder.rb +86 -0
  103. data/lib/aws-sdk-core/xml/error_handler.rb +7 -2
  104. data/lib/aws-sdk-core/xml/parser.rb +4 -4
  105. data/lib/aws-sdk-core/xml/parser/frame.rb +75 -70
  106. data/lib/aws-sdk-core/xml/parser/stack.rb +4 -4
  107. data/lib/seahorse.rb +0 -11
  108. data/lib/seahorse/client/base.rb +3 -12
  109. data/lib/seahorse/client/http/request.rb +9 -5
  110. data/lib/seahorse/client/plugins/endpoint.rb +5 -56
  111. data/lib/seahorse/client/plugins/restful_bindings.rb +38 -31
  112. data/lib/seahorse/client/request_context.rb +2 -2
  113. data/lib/seahorse/client/response.rb +6 -5
  114. data/lib/seahorse/model/api.rb +18 -61
  115. data/lib/seahorse/model/operation.rb +24 -54
  116. data/lib/seahorse/model/shapes.rb +120 -364
  117. data/lib/seahorse/util.rb +2 -6
  118. metadata +56 -109
  119. data/apis/autoscaling/2011-01-01/docs-2.json +0 -1246
  120. data/apis/cloudformation/2010-05-15/docs-2.json +0 -725
  121. data/apis/cloudfront/2014-11-06/docs-2.json +0 -1125
  122. data/apis/cloudhsm/2014-05-30/docs-2.json +0 -472
  123. data/apis/cloudsearch/2013-01-01/docs-2.json +0 -865
  124. data/apis/cloudsearchdomain/2013-01-01/docs-2.json +0 -311
  125. data/apis/cloudtrail/2013-11-01/docs-2.json +0 -328
  126. data/apis/codedeploy/2014-10-06/docs-2.json +0 -1261
  127. data/apis/cognito-identity/2014-06-30/docs-2.json +0 -506
  128. data/apis/cognito-sync/2014-06-30/docs-2.json +0 -582
  129. data/apis/config/2014-10-17/docs-2.json +0 -513
  130. data/apis/config/2014-11-12/docs-2.json +0 -514
  131. data/apis/datapipeline/2012-10-29/docs-2.json +0 -607
  132. data/apis/directconnect/2012-10-25/docs-2.json +0 -494
  133. data/apis/ds/2015-04-16/docs-2.json +0 -753
  134. data/apis/dynamodb/2011-12-05/api-2.json +0 -949
  135. data/apis/dynamodb/2011-12-05/docs-2.json +0 -606
  136. data/apis/dynamodb/2011-12-05/paginators-1.json +0 -26
  137. data/apis/dynamodb/2011-12-05/waiters-2.json +0 -35
  138. data/apis/dynamodb/2012-08-10/docs-2.json +0 -977
  139. data/apis/ec2/2015-04-15/docs-2.json +0 -5368
  140. data/apis/ecs/2014-11-13/docs-2.json +0 -791
  141. data/apis/elasticache/2015-02-02/docs-2.json +0 -1390
  142. data/apis/elasticbeanstalk/2010-12-01/docs-2.json +0 -1114
  143. data/apis/elasticfilesystem/2015-02-01/docs-2.json +0 -414
  144. data/apis/elasticloadbalancing/2012-06-01/docs-2.json +0 -1078
  145. data/apis/elasticmapreduce/2009-03-31/docs-2.json +0 -969
  146. data/apis/elastictranscoder/2012-09-25/docs-2.json +0 -1152
  147. data/apis/email/2010-12-01/docs-2.json +0 -441
  148. data/apis/glacier/2012-06-01/docs-2.json +0 -575
  149. data/apis/iam/2010-05-08/docs-2.json +0 -2138
  150. data/apis/importexport/2010-06-01/docs-2.json +0 -432
  151. data/apis/kinesis/2013-12-02/docs-2.json +0 -424
  152. data/apis/kms/2014-11-01/docs-2.json +0 -628
  153. data/apis/lambda/2014-11-11/docs-2.json +0 -303
  154. data/apis/lambda/2015-03-31/docs-2.json +0 -490
  155. data/apis/logs/2014-03-28/docs-2.json +0 -599
  156. data/apis/machinelearning/2014-12-12/docs-2.json +0 -1034
  157. data/apis/monitoring/2010-08-01/docs-2.json +0 -514
  158. data/apis/opsworks/2013-02-18/docs-2.json +0 -1592
  159. data/apis/rds/2014-10-31/docs-2.json +0 -2074
  160. data/apis/redshift/2012-12-01/docs-2.json +0 -1890
  161. data/apis/route53/2013-04-01/docs-2.json +0 -1159
  162. data/apis/route53domains/2014-05-15/docs-2.json +0 -620
  163. data/apis/s3/2006-03-01/docs-2.json +0 -2213
  164. data/apis/sdb/2009-04-15/docs-2.json +0 -339
  165. data/apis/sns/2010-03-31/docs-2.json +0 -564
  166. data/apis/sqs/2012-11-05/docs-2.json +0 -503
  167. data/apis/ssm/2014-11-06/docs-2.json +0 -440
  168. data/apis/storagegateway/2013-06-30/docs-2.json +0 -1331
  169. data/apis/sts/2011-06-15/docs-2.json +0 -351
  170. data/apis/support/2013-04-15/docs-2.json +0 -680
  171. data/apis/swf/2012-01-25/docs-2.json +0 -1569
  172. data/apis/workspaces/2015-04-08/docs-2.json +0 -457
  173. data/lib/aws-sdk-core/api/customizer.rb +0 -75
  174. data/lib/aws-sdk-core/api/docstrings.rb +0 -38
  175. data/lib/aws-sdk-core/api/documenter.rb +0 -241
  176. data/lib/aws-sdk-core/api/operation_documenter.rb +0 -173
  177. data/lib/aws-sdk-core/api/operation_example.rb +0 -133
  178. data/lib/aws-sdk-core/api/service_customizations.rb +0 -140
  179. data/lib/aws-sdk-core/client_paging.rb +0 -31
  180. data/lib/aws-sdk-core/json/rest_handler.rb +0 -20
  181. data/lib/aws-sdk-core/json/rpc_body_handler.rb +0 -38
  182. data/lib/aws-sdk-core/json/rpc_headers_handler.rb +0 -34
  183. data/lib/aws-sdk-core/json/simple_body_handler.rb +0 -34
  184. data/lib/aws-sdk-core/paging/null_pager.rb +0 -20
  185. data/lib/aws-sdk-core/paging/null_provider.rb +0 -13
  186. data/lib/aws-sdk-core/paging/pager.rb +0 -70
  187. data/lib/aws-sdk-core/paging/provider.rb +0 -22
  188. data/lib/aws-sdk-core/rest_body_handler.rb +0 -111
  189. data/lib/aws-sdk-core/signers/handler.rb +0 -18
  190. data/lib/aws-sdk-core/xml/rest_handler.rb +0 -20
  191. data/lib/seahorse/client/param_converter.rb +0 -207
  192. data/lib/seahorse/client/param_validator.rb +0 -139
  193. data/lib/seahorse/client/plugins/json_simple.rb +0 -33
  194. data/lib/seahorse/client/plugins/param_conversion.rb +0 -29
  195. data/lib/seahorse/client/plugins/param_validation.rb +0 -30
  196. data/lib/seahorse/client/xml/builder.rb +0 -91
  197. data/lib/seahorse/model/shape_map.rb +0 -47
@@ -6,10 +6,11 @@ module Aws
6
6
  @config = config
7
7
  end
8
8
 
9
+ # @return [CredentialProvider, nil]
9
10
  def resolve
10
11
  providers.each do |method_name, options|
11
- credentials = send(method_name, options.merge(config: @config))
12
- return credentials if credentials && credentials.set?
12
+ provider = send(method_name, options.merge(config: @config))
13
+ return provider if provider && provider.set?
13
14
  end
14
15
  nil
15
16
  end
@@ -19,6 +19,11 @@ module Aws
19
19
  # @return [String, nil]
20
20
  attr_reader :session_token
21
21
 
22
+ # @return [Credentials]
23
+ def credentials
24
+ self
25
+ end
26
+
22
27
  # @return [Boolean] Returns `true` if the access key id and secret
23
28
  # access key are both set.
24
29
  def set?
@@ -0,0 +1,69 @@
1
+ module Aws
2
+
3
+ # A utility module that provides a class method that wraps
4
+ # a method such that it generates a deprecation warning when called.
5
+ # Given the following class:
6
+ #
7
+ # class Example
8
+ #
9
+ # def do_something
10
+ # end
11
+ #
12
+ # end
13
+ #
14
+ # If you want to deprecate the `#do_something` method, you can extend
15
+ # this module and then call `deprecated` on the method (after it
16
+ # has been defined).
17
+ #
18
+ # class Example
19
+ #
20
+ # extend Aws::Deprecations
21
+ #
22
+ # def do_something
23
+ # end
24
+ #
25
+ # def do_something_else
26
+ # end
27
+ #
28
+ # deprecated :do_something
29
+ #
30
+ # end
31
+ #
32
+ # The `#do_something` method will continue to function, but will
33
+ # generate a deprecation warning when called.
34
+ #
35
+ # @api private
36
+ module Deprecations
37
+
38
+ # @param [Symbol] method_name The name of the deprecated method.
39
+ #
40
+ # @option options [String] :message The warning message to issue
41
+ # when the deprecated method is called.
42
+ #
43
+ # @option options [Symbol] :use The name of an use
44
+ # method that should be used.
45
+ #
46
+ def deprecated(method_name, options = {})
47
+
48
+ deprecation_msg = options[:message] || begin
49
+ msg = "DEPRECATION WARNING: called deprecated method `#{method_name}' "
50
+ msg << "of an #{self}"
51
+ msg << ", use #{options[:use]} instead" if options[:use]
52
+ msg
53
+ end
54
+
55
+ alias_method(:"deprecated_#{method_name}", method_name)
56
+
57
+ warned = false # we only want to issue this warning once
58
+
59
+ define_method(method_name) do |*args,&block|
60
+ unless warned
61
+ warned = true
62
+ warn(deprecation_msg + "\n" + caller.join("\n"))
63
+ end
64
+ send("deprecated_#{method_name}", *args, &block)
65
+ end
66
+ end
67
+
68
+ end
69
+ end
@@ -9,5 +9,17 @@ Aws.add_service(:DynamoDB, {
9
9
  module Aws
10
10
  module DynamoDB
11
11
  autoload :AttributeValue, 'aws-sdk-core/dynamodb/attribute_value'
12
+
13
+ class Client
14
+ def data_to_http_resp(operation_name, data)
15
+ api = config.api
16
+ operation = api.operation(operation_name)
17
+ translator = Plugins::DynamoDBSimpleAttributes::ValueTranslator
18
+ translator = translator.new(operation.output, :marshal)
19
+ data = translator.apply(data)
20
+ ParamValidator.validate!(operation.output, data)
21
+ protocol_helper.stub_data(api, operation, data)
22
+ end
23
+ end
12
24
  end
13
25
  end
@@ -0,0 +1,31 @@
1
+ require 'set'
2
+
3
+ module Aws
4
+ # @api private
5
+ class EagerLoader
6
+
7
+ def initialize
8
+ @loaded = Set.new
9
+ end
10
+
11
+ # @return [Set<Module>]
12
+ attr_reader :loaded
13
+
14
+ # @param [Module] klass_or_module
15
+ # @return [self]
16
+ def load(klass_or_module)
17
+ @loaded << klass_or_module
18
+ klass_or_module.constants.each do |const_name|
19
+ path = klass_or_module.autoload?(const_name)
20
+ require(path) if path
21
+ const = klass_or_module.const_get(const_name)
22
+ if const.is_a?(Module)
23
+ unless @loaded.include?(const)
24
+ load(const)
25
+ end
26
+ end
27
+ end
28
+ self
29
+ end
30
+ end
31
+ end
@@ -1,4 +1,6 @@
1
1
  Aws.add_service(:ECS, {
2
2
  api: "#{Aws::API_DIR}/ecs/2014-11-13/api-2.json",
3
3
  docs: "#{Aws::API_DIR}/ecs/2014-11-13/docs-2.json",
4
+ paginators: "#{Aws::API_DIR}/ecs/2014-11-13/paginators-1.json",
5
+ waiters: "#{Aws::API_DIR}/ecs/2014-11-13/waiters-2.json",
4
6
  })
@@ -1,84 +1,3 @@
1
1
  module Aws
2
- class EmptyStructure < Structure
3
-
4
- def self.new
5
- super([])
6
- end
7
-
8
- def ==(other)
9
- other.is_a?(EmptyStructure)
10
- end
11
-
12
- def [](member_name)
13
- raise NameError, "no member '#{member_name}' in struct"
14
- end
15
-
16
- def []=(member_name, value)
17
- raise NameError, "no member '#{member_name}' in struct"
18
- end
19
-
20
- def each(&block)
21
- unless block_given?
22
- [].to_enum
23
- end
24
- end
25
-
26
- def each_pair(&block)
27
- unless block_given?
28
- {}.to_enum
29
- end
30
- end
31
-
32
- def eql?(other)
33
- other.is_a?(EmptyStructure)
34
- end
35
-
36
- # @api private
37
- def inspect
38
- '#<struct>'
39
- end
40
-
41
- # @api private
42
- def pretty_print(q)
43
- q.text(inspect)
44
- end
45
-
46
- def length
47
- 0
48
- end
49
-
50
- def members
51
- []
52
- end
53
-
54
- def select(&block)
55
- []
56
- end
57
-
58
- def size
59
- 0
60
- end
61
-
62
- def to_a
63
- []
64
- end
65
-
66
- def to_h
67
- {}
68
- end
69
-
70
- def values
71
- []
72
- end
73
-
74
- def values_at(*selector)
75
- if selector.empty?
76
- []
77
- else
78
- offset = selector.first
79
- raise IndexError, "offset #{offset} too large for struct(size:0)"
80
- end
81
- end
82
-
83
- end
2
+ EmptyStructure = Class.new(Structure.new('AwsEmptyStructure'))
84
3
  end
@@ -6,7 +6,7 @@ module Aws
6
6
  PATH = File.join(File.dirname(__FILE__), '..', '..', 'endpoints.json')
7
7
 
8
8
  # @api private
9
- RULES = MultiJson.load(File.read(PATH))['endpoints']
9
+ RULES = Json.load_file(PATH)['endpoints']
10
10
 
11
11
  class << self
12
12
 
@@ -2,8 +2,9 @@ require 'time'
2
2
  require 'net/http'
3
3
 
4
4
  module Aws
5
- class InstanceProfileCredentials < Credentials
5
+ class InstanceProfileCredentials
6
6
 
7
+ include CredentialProvider
7
8
  include RefreshingCredentials
8
9
 
9
10
  # @api private
@@ -64,15 +65,13 @@ module Aws
64
65
  end
65
66
 
66
67
  def refresh
67
- credentials = MultiJson.load(get_credentials)
68
- @access_key_id = credentials['AccessKeyId']
69
- @secret_access_key = credentials['SecretAccessKey']
70
- @session_token = credentials['Token']
71
- if expires = credentials['Expiration']
72
- @expiration = Time.parse(expires)
73
- else
74
- @expiration = nil
75
- end
68
+ c = Json.load(get_credentials)
69
+ @credentials = Credentials.new(
70
+ c['AccessKeyId'],
71
+ c['SecretAccessKey'],
72
+ c['Token']
73
+ )
74
+ @expiration = c['Expiration'] ? Time.parse(c['Expiration']) : nil
76
75
  end
77
76
 
78
77
  def get_credentials
@@ -0,0 +1,56 @@
1
+ module Aws
2
+ # @api private
3
+ module Json
4
+
5
+ autoload :Builder, 'aws-sdk-core/json/builder'
6
+ autoload :ErrorHandler, 'aws-sdk-core/json/error_handler'
7
+ autoload :Handler, 'aws-sdk-core/json/handler'
8
+ autoload :Parser, 'aws-sdk-core/json/parser'
9
+
10
+ class ParseError < StandardError
11
+
12
+ def initialize(error)
13
+ @error = error
14
+ super(error.message)
15
+ end
16
+
17
+ attr_reader :error
18
+
19
+ end
20
+
21
+ class << self
22
+
23
+ def load(json)
24
+ ENGINE.load(json)
25
+ rescue ENGINE_ERROR => e
26
+ raise ParseError.new(e)
27
+ end
28
+
29
+ def load_file(path)
30
+ self.load(File.open(path, 'r', encoding: 'UTF-8') { |f| f.read })
31
+ end
32
+
33
+ def dump(value)
34
+ ENGINE.dump(value)
35
+ end
36
+
37
+ private
38
+
39
+ def oj_engine
40
+ require 'oj'
41
+ [Oj, Oj::ParseError]
42
+ rescue LoadError
43
+ false
44
+ end
45
+
46
+ def json_engine
47
+ require 'json'
48
+ [JSON, JSON::ParserError]
49
+ end
50
+
51
+ end
52
+
53
+ ENGINE, ENGINE_ERROR = oj_engine || json_engine
54
+
55
+ end
56
+ end
@@ -4,58 +4,57 @@ module Aws
4
4
  module Json
5
5
  class Builder
6
6
 
7
- # @param [Seahorse::Model::Shapes::Shape] shape
8
- # @param [Hash] params
9
- # @return [String<JSON>]
10
- def to_json(shape, params)
11
- MultiJson.dump(format(shape, params))
7
+ include Seahorse::Model::Shapes
8
+
9
+ def initialize(rules)
10
+ @rules = rules
11
+ end
12
+
13
+ def to_json(params)
14
+ Json.dump(format(@rules, params))
12
15
  end
16
+ alias serialize to_json
13
17
 
14
18
  private
15
19
 
16
- # @param [Seahorse::Model::Shapes::Structure] structure
17
- # @param [Hash] values
18
- # @return [Hash]
19
- def structure(structure, values)
20
- values.each.with_object({}) do |(key, value), data|
21
- if structure.member?(key) && !value.nil?
22
- member_shape = structure.member(key)
23
- name = member_shape.location_name || key
24
- data[name] = format(member_shape, value)
20
+ def structure(ref, values)
21
+ shape = ref.shape
22
+ values.each_pair.with_object({}) do |(key, value), data|
23
+ if shape.member?(key) && !value.nil?
24
+ member_ref = shape.member(key)
25
+ member_name = member_ref.location_name || key
26
+ data[member_name] = format(member_ref, value)
25
27
  end
26
28
  end
27
29
  end
28
30
 
29
- # @param [Seahorse::Model::Shapes::List] list
30
- # @param [Array] values
31
- # @return [Array]
32
- def list(list, values)
33
- values.collect { |value| format(list.member, value) }
31
+ def list(ref, values)
32
+ member_ref = ref.shape.member
33
+ values.collect { |value| format(member_ref, value) }
34
34
  end
35
35
 
36
- # @param [Seahorse::Model::Shapes::Map] map
37
- # @param [Hash] values
38
- # @return [Hash]
39
- def map(map, values)
36
+ def map(ref, values)
37
+ value_ref = ref.shape.value
40
38
  values.each.with_object({}) do |(key, value), data|
41
- data[key] = format(map.value, value)
39
+ data[key] = format(value_ref, value)
42
40
  end
43
41
  end
44
42
 
45
- # @param [Seahorse::Model::Shapes::Shape] shape
46
- # @param [Object] value
47
- # @return [Object]
48
- def format(shape, value)
49
- case shape.type
50
- when 'structure' then structure(shape, value)
51
- when 'list' then list(shape, value)
52
- when 'map' then map(shape, value)
53
- when 'timestamp' then shape.format_time(value, 'unixTimestamp')
54
- when 'blob' then Base64.strict_encode64(value.read)
43
+ def format(ref, value)
44
+ case ref.shape
45
+ when StructureShape then structure(ref, value)
46
+ when ListShape then list(ref, value)
47
+ when MapShape then map(ref, value)
48
+ when TimestampShape then value.to_i
49
+ when BlobShape then encode(value)
55
50
  else value
56
51
  end
57
52
  end
58
53
 
54
+ def encode(blob)
55
+ Base64.strict_encode64(String === blob ? blob : blob.read)
56
+ end
57
+
59
58
  end
60
59
  end
61
60
  end
@@ -14,11 +14,11 @@ module Aws
14
14
  private
15
15
 
16
16
  def extract_error(body, context)
17
- json = MultiJson.load(body)
17
+ json = Json.load(body)
18
18
  code = error_code(json, context)
19
19
  message = error_message(code, json)
20
20
  [code, message]
21
- rescue MultiJson::ParseError
21
+ rescue Json::ParseError
22
22
  [http_status_error_code(context), '']
23
23
  end
24
24