aws-sdk-resources 2.11.632 → 3.0.0.rc1

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 (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