aws-sdk-resources 2.11.632 → 3.0.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (72) hide show
  1. checksums.yaml +5 -5
  2. data/lib/aws-sdk-resources.rb +1 -91
  3. metadata +14 -85
  4. data/lib/aws-sdk-resources/batch.rb +0 -143
  5. data/lib/aws-sdk-resources/builder.rb +0 -85
  6. data/lib/aws-sdk-resources/builder_sources.rb +0 -105
  7. data/lib/aws-sdk-resources/collection.rb +0 -107
  8. data/lib/aws-sdk-resources/definition.rb +0 -331
  9. data/lib/aws-sdk-resources/documenter.rb +0 -70
  10. data/lib/aws-sdk-resources/documenter/base_operation_documenter.rb +0 -279
  11. data/lib/aws-sdk-resources/documenter/data_operation_documenter.rb +0 -25
  12. data/lib/aws-sdk-resources/documenter/has_many_operation_documenter.rb +0 -69
  13. data/lib/aws-sdk-resources/documenter/has_operation_documenter.rb +0 -66
  14. data/lib/aws-sdk-resources/documenter/operation_documenter.rb +0 -20
  15. data/lib/aws-sdk-resources/documenter/resource_operation_documenter.rb +0 -53
  16. data/lib/aws-sdk-resources/documenter/waiter_operation_documenter.rb +0 -77
  17. data/lib/aws-sdk-resources/errors.rb +0 -15
  18. data/lib/aws-sdk-resources/operation_methods.rb +0 -83
  19. data/lib/aws-sdk-resources/operations.rb +0 -280
  20. data/lib/aws-sdk-resources/options.rb +0 -17
  21. data/lib/aws-sdk-resources/request.rb +0 -39
  22. data/lib/aws-sdk-resources/request_params.rb +0 -140
  23. data/lib/aws-sdk-resources/resource.rb +0 -243
  24. data/lib/aws-sdk-resources/services/ec2.rb +0 -21
  25. data/lib/aws-sdk-resources/services/ec2/instance.rb +0 -29
  26. data/lib/aws-sdk-resources/services/iam.rb +0 -19
  27. data/lib/aws-sdk-resources/services/s3.rb +0 -21
  28. data/lib/aws-sdk-resources/services/s3/bucket.rb +0 -131
  29. data/lib/aws-sdk-resources/services/s3/encryption.rb +0 -24
  30. data/lib/aws-sdk-resources/services/s3/encryption/client.rb +0 -386
  31. data/lib/aws-sdk-resources/services/s3/encryption/decrypt_handler.rb +0 -225
  32. data/lib/aws-sdk-resources/services/s3/encryption/default_cipher_provider.rb +0 -101
  33. data/lib/aws-sdk-resources/services/s3/encryption/default_key_provider.rb +0 -40
  34. data/lib/aws-sdk-resources/services/s3/encryption/encrypt_handler.rb +0 -61
  35. data/lib/aws-sdk-resources/services/s3/encryption/errors.rb +0 -15
  36. data/lib/aws-sdk-resources/services/s3/encryption/io_auth_decrypter.rb +0 -58
  37. data/lib/aws-sdk-resources/services/s3/encryption/io_decrypter.rb +0 -37
  38. data/lib/aws-sdk-resources/services/s3/encryption/io_encrypter.rb +0 -71
  39. data/lib/aws-sdk-resources/services/s3/encryption/key_provider.rb +0 -31
  40. data/lib/aws-sdk-resources/services/s3/encryption/kms_cipher_provider.rb +0 -104
  41. data/lib/aws-sdk-resources/services/s3/encryption/materials.rb +0 -60
  42. data/lib/aws-sdk-resources/services/s3/encryption/utils.rb +0 -104
  43. data/lib/aws-sdk-resources/services/s3/encryptionV2/client.rb +0 -561
  44. data/lib/aws-sdk-resources/services/s3/encryptionV2/decrypt_handler.rb +0 -214
  45. data/lib/aws-sdk-resources/services/s3/encryptionV2/default_cipher_provider.rb +0 -170
  46. data/lib/aws-sdk-resources/services/s3/encryptionV2/default_key_provider.rb +0 -40
  47. data/lib/aws-sdk-resources/services/s3/encryptionV2/encrypt_handler.rb +0 -69
  48. data/lib/aws-sdk-resources/services/s3/encryptionV2/errors.rb +0 -37
  49. data/lib/aws-sdk-resources/services/s3/encryptionV2/io_auth_decrypter.rb +0 -58
  50. data/lib/aws-sdk-resources/services/s3/encryptionV2/io_decrypter.rb +0 -37
  51. data/lib/aws-sdk-resources/services/s3/encryptionV2/io_encrypter.rb +0 -73
  52. data/lib/aws-sdk-resources/services/s3/encryptionV2/key_provider.rb +0 -31
  53. data/lib/aws-sdk-resources/services/s3/encryptionV2/kms_cipher_provider.rb +0 -169
  54. data/lib/aws-sdk-resources/services/s3/encryptionV2/materials.rb +0 -60
  55. data/lib/aws-sdk-resources/services/s3/encryptionV2/utils.rb +0 -103
  56. data/lib/aws-sdk-resources/services/s3/encryption_v2.rb +0 -24
  57. data/lib/aws-sdk-resources/services/s3/file_downloader.rb +0 -169
  58. data/lib/aws-sdk-resources/services/s3/file_part.rb +0 -75
  59. data/lib/aws-sdk-resources/services/s3/file_uploader.rb +0 -58
  60. data/lib/aws-sdk-resources/services/s3/multipart_file_uploader.rb +0 -187
  61. data/lib/aws-sdk-resources/services/s3/multipart_upload.rb +0 -42
  62. data/lib/aws-sdk-resources/services/s3/multipart_upload_error.rb +0 -16
  63. data/lib/aws-sdk-resources/services/s3/object.rb +0 -290
  64. data/lib/aws-sdk-resources/services/s3/object_copier.rb +0 -99
  65. data/lib/aws-sdk-resources/services/s3/object_multipart_copier.rb +0 -180
  66. data/lib/aws-sdk-resources/services/s3/object_summary.rb +0 -73
  67. data/lib/aws-sdk-resources/services/s3/presigned_post.rb +0 -651
  68. data/lib/aws-sdk-resources/services/sns.rb +0 -7
  69. data/lib/aws-sdk-resources/services/sns/message_verifier.rb +0 -171
  70. data/lib/aws-sdk-resources/services/sqs.rb +0 -7
  71. data/lib/aws-sdk-resources/services/sqs/queue_poller.rb +0 -521
  72. data/lib/aws-sdk-resources/source.rb +0 -39
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA256:
3
- metadata.gz: 9223574d7ebd2ddfe469e001463169c5ae2ff4598624c51b36d50cbe75a39053
4
- data.tar.gz: 5a7095c1b82e06a02f5d8c923f3ef133f49561ffbfb5ed6aa325a33289de9c68
2
+ SHA1:
3
+ metadata.gz: b87eb4edb3eb3717fc868b1be12ff529d8d70c1a
4
+ data.tar.gz: 5e35c989e84d6722afb272ed2e1a4f288cb20c28
5
5
  SHA512:
6
- metadata.gz: b02232593698368137144e6c275f52d8abba322e212c08944195fd44cb97883d8c10294e1b40c7e967e916370f8f6f6d0dac96ef74f4dfb7369afab8fa2d0bf1
7
- data.tar.gz: 64f035657e249a8277cd92fad0cb3aee20e1240d5f19aae0fdbafcac1d4f68a0936f464729f176b44fd9f7a898902069f5f92f854655f4276d02b6868febff7f
6
+ metadata.gz: 67d9c2a34ff74c9be846361dd9e46dc9b3edd8bbe537dde5714930184cfe51aa8ecaa761f8273a1d74cc8e603eb83f65b97b30fda6dce4ce86ea9d543c1763f2
7
+ data.tar.gz: fbdf4f5ea6e7177174c645ad1bc304d39f5ea011b76c1e05a6daf4f3ba1f722fd58155277bfad3776dd687d315698f5be6e8094dc4321f2c46bc237e26905d18
@@ -1,91 +1 @@
1
- require 'aws-sdk-core'
2
-
3
- module Aws
4
-
5
- module Resources
6
- autoload :Batch, 'aws-sdk-resources/batch'
7
- autoload :Builder, 'aws-sdk-resources/builder'
8
- autoload :BuilderSources, 'aws-sdk-resources/builder_sources'
9
- autoload :Collection, 'aws-sdk-resources/collection'
10
- autoload :Definition, 'aws-sdk-resources/definition'
11
- autoload :Documenter, 'aws-sdk-resources/documenter'
12
- autoload :Errors, 'aws-sdk-resources/errors'
13
- autoload :OperationMethods, 'aws-sdk-resources/operation_methods'
14
- autoload :Operations, 'aws-sdk-resources/operations'
15
- autoload :Options, 'aws-sdk-resources/options'
16
- autoload :Request, 'aws-sdk-resources/request'
17
- autoload :RequestParams, 'aws-sdk-resources/request_params'
18
- autoload :Resource, 'aws-sdk-resources/resource'
19
- autoload :Source, 'aws-sdk-resources/source'
20
- end
21
-
22
- service_added do |name, svc_module, options|
23
- definition = options[:resources]
24
- definition = case definition
25
- when nil then Resources::Definition.new({})
26
- when Resources::Definition then definition
27
- when Hash then Resources::Definition.new(definition)
28
- when String
29
- Resources::Definition.new(Json.load_file(definition), source_path: definition)
30
- else raise ArgumentError, "invalid resource definition #{definition}"
31
- end
32
- definition.apply(svc_module)
33
-
34
- # load customizations
35
- svc = File.join(
36
- File.dirname(__FILE__),
37
- 'aws-sdk-resources',
38
- 'services',
39
- "#{name.downcase}.rb")
40
-
41
- require(svc) if File.exist?(svc)
42
- end
43
-
44
- # In version 2.2, all batch resource operations were renamed:
45
- #
46
- # * All operations are now prefixed with `batch_`, e.g. `#start`
47
- # became `#batch_start`.
48
- #
49
- # * All batch operations with "delete" or "terminate" in the name
50
- # are now suffixed with `!`, e.g. `#delete` is now `#batch_delete!`
51
- #
52
- # For backwards compatibility, existing batch methods must still respond
53
- # to their old names. This callback registers these methods with their
54
- # old names.
55
- service_added do |name, svc_module, options|
56
- unless ENV['DOCSTRINGS']
57
- case name
58
- when 'EC2'
59
- {
60
- 'create_tags' => 'batch_create_tags',
61
- 'monitor' => 'batch_create_tags',
62
- 'reboot' => 'batch_reboot',
63
- 'start' => 'batch_start',
64
- 'stop' => 'batch_stop',
65
- 'terminate' => 'batch_terminate!',
66
- 'unmonitor' => 'batch_unmonitor',
67
- }.each do |deprecated_name, correct_name|
68
- Resources::Operations::DeprecatedOperation.define({
69
- resource_class: EC2::Instance,
70
- deprecated_name: deprecated_name,
71
- name: correct_name,
72
- })
73
- end
74
- Resources::Operations::DeprecatedOperation.define({
75
- resource_class: EC2::Tag,
76
- deprecated_name: 'delete',
77
- name: 'batch_delete!',
78
- })
79
- when 'S3'
80
- [S3::Object, S3::ObjectSummary, S3::ObjectVersion].each do |klass|
81
- Resources::Operations::DeprecatedOperation.define({
82
- resource_class: klass,
83
- deprecated_name: 'delete',
84
- name: 'batch_delete!',
85
- })
86
- end
87
- end
88
- end
89
- end
90
-
91
- end
1
+ require 'aws-sdk'
metadata CHANGED
@@ -1,33 +1,32 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aws-sdk-resources
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.11.632
4
+ version: 3.0.0.rc1
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: 2020-11-20 00:00:00.000000000 Z
11
+ date: 2017-05-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: aws-sdk-core
14
+ name: aws-sdk
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 2.11.632
19
+ version: 3.0.0.rc8
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 2.11.632
27
- description: AWS SDK For Ruby V2 has been marked as deprecated. Please upgrade to
28
- AWS SDK For Ruby V3.Provides resource oriented interfaces and other higher-level
29
- abstractions for many AWS services. This gem is part of the official AWS SDK for
30
- Ruby.
26
+ version: 3.0.0.rc8
27
+ description: Provides resource oriented interfaces and other higher-level abstractions
28
+ for many AWS services. For Versions >= 3, please switch to `aws-sdk` or individual
29
+ service gems.
31
30
  email:
32
31
  - trevrowe@amazon.com
33
32
  executables: []
@@ -35,81 +34,11 @@ extensions: []
35
34
  extra_rdoc_files: []
36
35
  files:
37
36
  - lib/aws-sdk-resources.rb
38
- - lib/aws-sdk-resources/batch.rb
39
- - lib/aws-sdk-resources/builder.rb
40
- - lib/aws-sdk-resources/builder_sources.rb
41
- - lib/aws-sdk-resources/collection.rb
42
- - lib/aws-sdk-resources/definition.rb
43
- - lib/aws-sdk-resources/documenter.rb
44
- - lib/aws-sdk-resources/documenter/base_operation_documenter.rb
45
- - lib/aws-sdk-resources/documenter/data_operation_documenter.rb
46
- - lib/aws-sdk-resources/documenter/has_many_operation_documenter.rb
47
- - lib/aws-sdk-resources/documenter/has_operation_documenter.rb
48
- - lib/aws-sdk-resources/documenter/operation_documenter.rb
49
- - lib/aws-sdk-resources/documenter/resource_operation_documenter.rb
50
- - lib/aws-sdk-resources/documenter/waiter_operation_documenter.rb
51
- - lib/aws-sdk-resources/errors.rb
52
- - lib/aws-sdk-resources/operation_methods.rb
53
- - lib/aws-sdk-resources/operations.rb
54
- - lib/aws-sdk-resources/options.rb
55
- - lib/aws-sdk-resources/request.rb
56
- - lib/aws-sdk-resources/request_params.rb
57
- - lib/aws-sdk-resources/resource.rb
58
- - lib/aws-sdk-resources/services/ec2.rb
59
- - lib/aws-sdk-resources/services/ec2/instance.rb
60
- - lib/aws-sdk-resources/services/iam.rb
61
- - lib/aws-sdk-resources/services/s3.rb
62
- - lib/aws-sdk-resources/services/s3/bucket.rb
63
- - lib/aws-sdk-resources/services/s3/encryption.rb
64
- - lib/aws-sdk-resources/services/s3/encryption/client.rb
65
- - lib/aws-sdk-resources/services/s3/encryption/decrypt_handler.rb
66
- - lib/aws-sdk-resources/services/s3/encryption/default_cipher_provider.rb
67
- - lib/aws-sdk-resources/services/s3/encryption/default_key_provider.rb
68
- - lib/aws-sdk-resources/services/s3/encryption/encrypt_handler.rb
69
- - lib/aws-sdk-resources/services/s3/encryption/errors.rb
70
- - lib/aws-sdk-resources/services/s3/encryption/io_auth_decrypter.rb
71
- - lib/aws-sdk-resources/services/s3/encryption/io_decrypter.rb
72
- - lib/aws-sdk-resources/services/s3/encryption/io_encrypter.rb
73
- - lib/aws-sdk-resources/services/s3/encryption/key_provider.rb
74
- - lib/aws-sdk-resources/services/s3/encryption/kms_cipher_provider.rb
75
- - lib/aws-sdk-resources/services/s3/encryption/materials.rb
76
- - lib/aws-sdk-resources/services/s3/encryption/utils.rb
77
- - lib/aws-sdk-resources/services/s3/encryptionV2/client.rb
78
- - lib/aws-sdk-resources/services/s3/encryptionV2/decrypt_handler.rb
79
- - lib/aws-sdk-resources/services/s3/encryptionV2/default_cipher_provider.rb
80
- - lib/aws-sdk-resources/services/s3/encryptionV2/default_key_provider.rb
81
- - lib/aws-sdk-resources/services/s3/encryptionV2/encrypt_handler.rb
82
- - lib/aws-sdk-resources/services/s3/encryptionV2/errors.rb
83
- - lib/aws-sdk-resources/services/s3/encryptionV2/io_auth_decrypter.rb
84
- - lib/aws-sdk-resources/services/s3/encryptionV2/io_decrypter.rb
85
- - lib/aws-sdk-resources/services/s3/encryptionV2/io_encrypter.rb
86
- - lib/aws-sdk-resources/services/s3/encryptionV2/key_provider.rb
87
- - lib/aws-sdk-resources/services/s3/encryptionV2/kms_cipher_provider.rb
88
- - lib/aws-sdk-resources/services/s3/encryptionV2/materials.rb
89
- - lib/aws-sdk-resources/services/s3/encryptionV2/utils.rb
90
- - lib/aws-sdk-resources/services/s3/encryption_v2.rb
91
- - lib/aws-sdk-resources/services/s3/file_downloader.rb
92
- - lib/aws-sdk-resources/services/s3/file_part.rb
93
- - lib/aws-sdk-resources/services/s3/file_uploader.rb
94
- - lib/aws-sdk-resources/services/s3/multipart_file_uploader.rb
95
- - lib/aws-sdk-resources/services/s3/multipart_upload.rb
96
- - lib/aws-sdk-resources/services/s3/multipart_upload_error.rb
97
- - lib/aws-sdk-resources/services/s3/object.rb
98
- - lib/aws-sdk-resources/services/s3/object_copier.rb
99
- - lib/aws-sdk-resources/services/s3/object_multipart_copier.rb
100
- - lib/aws-sdk-resources/services/s3/object_summary.rb
101
- - lib/aws-sdk-resources/services/s3/presigned_post.rb
102
- - lib/aws-sdk-resources/services/sns.rb
103
- - lib/aws-sdk-resources/services/sns/message_verifier.rb
104
- - lib/aws-sdk-resources/services/sqs.rb
105
- - lib/aws-sdk-resources/services/sqs/queue_poller.rb
106
- - lib/aws-sdk-resources/source.rb
107
37
  homepage: http://github.com/aws/aws-sdk-ruby
108
38
  licenses:
109
- - Apache 2.0
39
+ - Apache-2.0
110
40
  metadata: {}
111
- post_install_message: AWS SDK For Ruby V2 has been marked as deprecated. Please upgrade
112
- to AWS SDK For Ruby V3.
41
+ post_install_message:
113
42
  rdoc_options: []
114
43
  require_paths:
115
44
  - lib
@@ -120,13 +49,13 @@ required_ruby_version: !ruby/object:Gem::Requirement
120
49
  version: '0'
121
50
  required_rubygems_version: !ruby/object:Gem::Requirement
122
51
  requirements:
123
- - - ">="
52
+ - - ">"
124
53
  - !ruby/object:Gem::Version
125
- version: '0'
54
+ version: 1.3.1
126
55
  requirements: []
127
56
  rubyforge_project:
128
- rubygems_version: 2.7.6.2
57
+ rubygems_version: 2.5.1
129
58
  signing_key:
130
59
  specification_version: 4
131
- summary: AWS SDK for Ruby - Resources
60
+ summary: AWS SDK for Ruby
132
61
  test_files: []
@@ -1,143 +0,0 @@
1
- module Aws
2
- module Resources
3
-
4
- # A batch provides array like access to a list of resources. Batches
5
- # also provide the ability to invoke certain operations against
6
- # the entire batch.
7
- #
8
- # ## Getting a Batch
9
- #
10
- # You should normally not need to construct a batch. Anywhere a list
11
- # of resources is returned, they are returned as a batch:
12
- #
13
- # # security_groups is a batch
14
- # security_groups = ec2.instance('i-12345678').security_groups
15
- #
16
- # When the possible number of resources is unknown or large, the
17
- # resources will be returned in a collection. Collections can enumerate
18
- # individual resources or batches. They manage paging over the
19
- # AWS request/responses to produce batches.
20
- #
21
- # # objects is a collection
22
- # objects = s3.bucket('aws-sdk').objects
23
- #
24
- # You can invoke batch operations against collections and they will
25
- # invoke them on each batch.
26
- #
27
- # # delete all objects in this bucket in batches of 1k
28
- # objects = s3.bucket('aws-sdk').objects
29
- # objects.delete
30
- #
31
- # ## Batch Operations
32
- #
33
- # Batches provide operations that operate on the entire batch. These
34
- # operations are only defined for resources where the AWS API accepts
35
- # multiple inputs. This means a batch operation for n resources will
36
- # only make one request.
37
- #
38
- # Resource classes document each of their own batch operations.
39
- # See {S3::Object} for an example.
40
- #
41
- class Batch
42
-
43
- include Enumerable
44
-
45
- # @param [Array<Resource>] resources
46
- # @option options [Seahorse::Client::Response] :response
47
- def initialize(resource_class, resources, options = {})
48
- @resource_class = resource_class
49
- @resources = resources
50
- @response = options[:response]
51
- @size = resources.size
52
- @options = options
53
- end
54
-
55
- # @return [Class<Resource>]
56
- attr_reader :resource_class
57
-
58
- # @return [Seahorse::Client::Response, nil]
59
- attr_reader :response
60
-
61
- # @return [Integer]
62
- attr_reader :size
63
-
64
- alias count size
65
-
66
- # @param [Integer] index
67
- # @return [Resource]
68
- def [](index)
69
- @resources[index]
70
- end
71
-
72
- # Yields each resource of the batch, one at a time.
73
- def each(&block)
74
- enum = @resources.to_enum
75
- enum.each(&block) if block_given?
76
- enum
77
- end
78
-
79
- # @param [Integer] count
80
- # @return [Resource, Batch]
81
- def first(count = nil)
82
- if count
83
- self.class.new(@resource_class, @resources.first(count), @options)
84
- else
85
- @resources.first
86
- end
87
- end
88
-
89
- # @return [Boolean]
90
- def empty?
91
- @resources.empty?
92
- end
93
-
94
- # @api private
95
- def inspect
96
- "#<#{self.class.name} resources=#{@resources.inspect}>"
97
- end
98
-
99
- # @api private
100
- def respond_to?(method_name, *args)
101
- if @resource_class.batch_operation_names.include?(method_name.to_sym)
102
- true
103
- else
104
- super
105
- end
106
- end
107
-
108
- # @api private
109
- def method_missing(method_name, *args, &block)
110
- if respond_to?(method_name)
111
- invoke_batch_operation(method_name, args, block) unless empty?
112
- else
113
- super
114
- end
115
- end
116
-
117
- private
118
-
119
- def invoke_batch_operation(method_name, args, block)
120
- self.class.validate_batch_args!(args)
121
- operation = @resource_class.batch_operation(method_name)
122
- operation.call(resource:self, args:args, block:block)
123
- end
124
-
125
- class << self
126
-
127
- # @api private
128
- def validate_batch_args!(args)
129
- case args.count
130
- when 0
131
- when 1
132
- unless Hash === args.first
133
- raise ArgumentError, "expected options to be a hash"
134
- end
135
- else
136
- raise ArgumentError, "wrong number of arguments, expected 0 or 1"
137
- end
138
- end
139
-
140
- end
141
- end
142
- end
143
- end
@@ -1,85 +0,0 @@
1
- module Aws
2
- module Resources
3
-
4
- # A {Builder} construct resource objects. It extracts resource identifiers
5
- # for the objects it builds from another resource object and/or an
6
- # AWS response.
7
- class Builder
8
-
9
- include Options
10
-
11
- # @option options [required, Class<Resource>] resource_class
12
- # @option options [Array<BuilderSources::Source>] :sources ([])
13
- def initialize(options = {})
14
- @resource_class = options[:resource_class]
15
- @sources = options[:sources] || []
16
- end
17
-
18
- # @return [Class<Resource>]
19
- attr_reader :resource_class
20
-
21
- # @return [Array<BuilderSources::Source>] A list of resource
22
- # identifier sources.
23
- attr_reader :sources
24
-
25
- # @return [Boolean] Returns `true` if this builder returns an array
26
- # of resource objects from {#build}.
27
- def plural?
28
- @sources.any?(&:plural?)
29
- end
30
-
31
- # @option [Resource] :resource
32
- # @option [Seahorse::Client::Response] :response
33
- # @return [Resource, Array<Resource>] Returns a resource object or an
34
- # array of resource objects if {#plural?}.
35
- def build(options = {})
36
- identifier_map = @sources.each.with_object({}) do |source, hash|
37
- hash[source.target] = source.extract(options)
38
- end
39
- if plural?
40
- build_batch(identifier_map, options)
41
- else
42
- build_one(identifier_map, options)
43
- end
44
- end
45
-
46
- private
47
-
48
- def build_batch(identifier_map, options, &block)
49
- resources = (0...resource_count(identifier_map)).collect do |n|
50
- identifiers = @sources.inject({}) do |hash, source|
51
- value = identifier_map[source.target]
52
- value = value[n] if source.plural?
53
- hash[source.target] = value
54
- hash
55
- end
56
- resource = build_one(identifiers, options)
57
- yield(resource) if block_given?
58
- resource
59
- end
60
- Batch.new(resource_class, resources, options)
61
- end
62
-
63
- def build_one(identifiers, options)
64
- if identifiers.count > 0 && identifiers.values.any?(&:nil?)
65
- nil
66
- else
67
- @resource_class.new(identifiers.merge(
68
- client: client(options)
69
- ))
70
- end
71
- end
72
-
73
- def resource_count(identifier_map)
74
- identifier_map.values.inject(0) do |max, values|
75
- [max, values.is_a?(Array) ? values.size : 0].max
76
- end
77
- end
78
-
79
- def client(options)
80
- Array(options[:resource]).first.client
81
- end
82
-
83
- end
84
- end
85
- end