aws-sdk 1.3.4 → 1.3.5
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.
- data/lib/aws.rb +2 -0
- data/lib/aws/api_config/SimpleWorkflow-2012-01-25.yml +1163 -0
- data/lib/aws/core.rb +16 -11
- data/lib/aws/core/configuration.rb +65 -47
- data/lib/aws/dynamo_db/item_collection.rb +2 -3
- data/lib/aws/dynamo_db/table.rb +2 -2
- data/lib/aws/ec2/collection.rb +1 -1
- data/lib/aws/ec2/snapshot_collection.rb +1 -1
- data/lib/aws/ec2/tagged_collection.rb +6 -1
- data/lib/aws/elb/backend_server_policy_collection.rb +1 -11
- data/lib/aws/elb/load_balancer.rb +4 -4
- data/lib/aws/elb/load_balancer_collection.rb +1 -1
- data/lib/aws/iam/policy.rb +1 -1
- data/lib/aws/record.rb +10 -4
- data/lib/aws/record/hash_model/finder_methods.rb +2 -3
- data/lib/aws/s3/bucket_lifecycle_configuration.rb +2 -2
- data/lib/aws/s3/policy.rb +1 -1
- data/lib/aws/simple_email_service.rb +8 -2
- data/lib/aws/simple_workflow.rb +223 -0
- data/lib/aws/simple_workflow/activity_task.rb +173 -0
- data/lib/aws/simple_workflow/activity_task_collection.rb +112 -0
- data/lib/aws/simple_workflow/activity_type.rb +131 -0
- data/lib/aws/simple_workflow/activity_type_collection.rb +93 -0
- data/lib/aws/simple_workflow/client.rb +57 -0
- data/lib/aws/simple_workflow/config.rb +18 -0
- data/lib/aws/simple_workflow/count.rb +49 -0
- data/lib/aws/simple_workflow/decision_task.rb +603 -0
- data/lib/aws/simple_workflow/decision_task_collection.rb +213 -0
- data/lib/aws/simple_workflow/domain.rb +122 -0
- data/lib/aws/simple_workflow/domain_collection.rb +169 -0
- data/lib/aws/simple_workflow/errors.rb +57 -0
- data/lib/aws/simple_workflow/history_event.rb +276 -0
- data/lib/aws/simple_workflow/history_event_collection.rb +76 -0
- data/lib/aws/simple_workflow/option_formatters.rb +75 -0
- data/lib/aws/simple_workflow/request.rb +80 -0
- data/lib/aws/simple_workflow/resource.rb +94 -0
- data/lib/aws/simple_workflow/type.rb +89 -0
- data/lib/aws/simple_workflow/type_collection.rb +139 -0
- data/lib/aws/simple_workflow/workflow_execution.rb +386 -0
- data/lib/aws/simple_workflow/workflow_execution_collection.rb +617 -0
- data/lib/aws/simple_workflow/workflow_type.rb +177 -0
- data/lib/aws/simple_workflow/workflow_type_collection.rb +91 -0
- data/lib/aws/sns/policy.rb +1 -1
- data/lib/aws/sns/subscription.rb +2 -2
- data/lib/aws/sqs/errors.rb +2 -2
- data/lib/aws/sqs/policy.rb +1 -1
- metadata +111 -54
@@ -0,0 +1,213 @@
|
|
1
|
+
require 'uuidtools'
|
2
|
+
|
3
|
+
# Copyright 2011-2012 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
4
|
+
#
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License"). You
|
6
|
+
# may not use this file except in compliance with the License. A copy of
|
7
|
+
# the License is located at
|
8
|
+
#
|
9
|
+
# http://aws.amazon.com/apache2.0/
|
10
|
+
#
|
11
|
+
# or in the "license" file accompanying this file. This file is
|
12
|
+
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
13
|
+
# ANY KIND, either express or implied. See the License for the specific
|
14
|
+
# language governing permissions and limitations under the License.
|
15
|
+
|
16
|
+
module AWS
|
17
|
+
class SimpleWorkflow
|
18
|
+
|
19
|
+
# Provides an interface to count, and receive decision tasks
|
20
|
+
# ({DecisionTask} objects) from the service.
|
21
|
+
#
|
22
|
+
# == Counting
|
23
|
+
#
|
24
|
+
# To get a count of decision tasks needing attention, call {#count}
|
25
|
+
# with a task list name:
|
26
|
+
#
|
27
|
+
# domain.decision_tasks.count('my-task-list') #=> 7
|
28
|
+
#
|
29
|
+
# == Getting a single decision task
|
30
|
+
#
|
31
|
+
# To process a single task use {#poll_for_single_task}:
|
32
|
+
#
|
33
|
+
# domain.decision_tasks.poll_for_single_task('my-task-list') do |task|
|
34
|
+
# # this block is yielded to only if a task is found
|
35
|
+
# # within 60 seconds.
|
36
|
+
# end
|
37
|
+
#
|
38
|
+
# At the end of the block, the decision task is auto-completed.
|
39
|
+
# If you prefer you can omit the block and +nil+ or a {DecisionTask}
|
40
|
+
# will be returned.
|
41
|
+
#
|
42
|
+
# if task = domain.decision_tasks.poll_for_single_task('my-task-list')
|
43
|
+
# # you need to call complete! or the decision task will time out
|
44
|
+
# task.complete!
|
45
|
+
# end
|
46
|
+
#
|
47
|
+
# == Polling for Tasks in a Loop
|
48
|
+
#
|
49
|
+
# You can poll indefinetly for tasks in a loop with {#poll}:
|
50
|
+
#
|
51
|
+
# domain.decision_tasks.poll('my-task-list') do |task|
|
52
|
+
# # yields once for every decision task found
|
53
|
+
# end
|
54
|
+
#
|
55
|
+
# Just like the block form above, the decision task is auto completed at
|
56
|
+
# the end of the block. Please note, if you call +break+ or +return+
|
57
|
+
# from inside the block, you *MUST* call {DecisionTask#complete!} or
|
58
|
+
# the task will timeout.
|
59
|
+
#
|
60
|
+
# == Events and Decisions
|
61
|
+
#
|
62
|
+
# Each decision task provides an enumerable collection of both
|
63
|
+
# new events ({DecisionTask#new_events}) and all events
|
64
|
+
# ({DecisionTask#events}).
|
65
|
+
#
|
66
|
+
# Based on the events in the workflow execution history, you should
|
67
|
+
# call methods on the decision task. See {DecisionTask} for
|
68
|
+
# a complete list of decision methods.
|
69
|
+
#
|
70
|
+
class DecisionTaskCollection
|
71
|
+
|
72
|
+
include Core::Model
|
73
|
+
include OptionFormatters
|
74
|
+
|
75
|
+
# @private
|
76
|
+
def initialize domain, options = {}
|
77
|
+
@domain = domain
|
78
|
+
super
|
79
|
+
end
|
80
|
+
|
81
|
+
# @return [Domain]
|
82
|
+
attr_reader :domain
|
83
|
+
|
84
|
+
# Returns the number of decision tasks in the specified +task_list+.
|
85
|
+
#
|
86
|
+
# @note This operation is eventually consistent. The results are best
|
87
|
+
# effort and may not exactly reflect recent updates and changes.
|
88
|
+
#
|
89
|
+
# @param [String] task_list Name of the task list to count
|
90
|
+
# decision tasks for.
|
91
|
+
#
|
92
|
+
# @return [Integer] Returns the number of descision tasks for the
|
93
|
+
# given +task_list+.
|
94
|
+
#
|
95
|
+
def count task_list
|
96
|
+
options = {}
|
97
|
+
options[:domain] = domain.name
|
98
|
+
options[:task_list] = { :name => task_list }
|
99
|
+
response = client.count_pending_decision_tasks(options)
|
100
|
+
Count.new(response.data['count'], response.data['truncated'])
|
101
|
+
end
|
102
|
+
|
103
|
+
# Polls the service for a single decision task. The service may
|
104
|
+
# hold the request for up to 60 seconds before responding.
|
105
|
+
#
|
106
|
+
# # try to get a single task, may return nil when no tasks available
|
107
|
+
# task = domain.decision_tasks.poll_for_single_task('task-list')
|
108
|
+
# if task
|
109
|
+
# # make decisions ...
|
110
|
+
# task.complete!
|
111
|
+
# end
|
112
|
+
#
|
113
|
+
# You can optionally pass a block and that will only be yielded
|
114
|
+
# to when a decision task is available within the 60 seconds.
|
115
|
+
#
|
116
|
+
# domain.decision_tasks.poll_for_single_task('task-list') do |task|
|
117
|
+
# # make decisions
|
118
|
+
# # task.complete! is called for you at the end of the block
|
119
|
+
# end
|
120
|
+
#
|
121
|
+
# With the block form you do not need to call #complete! on the
|
122
|
+
# decision task. It will be called when the block exists.
|
123
|
+
#
|
124
|
+
# @note If you are not using the block form you must call
|
125
|
+
# {DecisionTask#complete!} yourself or your decision task will
|
126
|
+
# timeout.
|
127
|
+
#
|
128
|
+
# @param [String] task_list Specifies the task list to poll for
|
129
|
+
# decision tasks.
|
130
|
+
#
|
131
|
+
# @param [Hash] options
|
132
|
+
#
|
133
|
+
# @option options [String] :identity The identity of the decider
|
134
|
+
# requesting a decision task. This will be recorded in the
|
135
|
+
# DecisionTaskStarted event in the workflow history.
|
136
|
+
# If +:identity+ is not passed, a random UUID will be generated.
|
137
|
+
#
|
138
|
+
# @option options [Boolean] :reverse_event_order (false) When true,
|
139
|
+
# the history events on the decision task will enumerate in
|
140
|
+
# reverse chronological order (newest events first). By default
|
141
|
+
# the events are enumerated in chronological order (oldest first).
|
142
|
+
#
|
143
|
+
# @option options [Integer] :event_batch_size (1000) When enumerating
|
144
|
+
# events on the decision task, multiple requests may be required
|
145
|
+
# to fetch all of the events. You can specify the maximum number
|
146
|
+
# of events to request each time (must not be greater than 1000).
|
147
|
+
#
|
148
|
+
# @yieldparam [DecisionTask] decision_task
|
149
|
+
#
|
150
|
+
# @return [DecisionTask,nil] Returns a decision task or +nil+. If
|
151
|
+
# a block was passed then +nil+ is always returned. If a block
|
152
|
+
# is not passed, then +nil+ or a {DecisionTask} will be returned.
|
153
|
+
#
|
154
|
+
def poll_for_single_task task_list, options = {}, &block
|
155
|
+
|
156
|
+
client_opts = {}
|
157
|
+
client_opts[:domain] = domain.name
|
158
|
+
client_opts[:identity] = options[:identity] if options[:identity]
|
159
|
+
client_opts[:task_list] = { :name => task_list }
|
160
|
+
client_opts[:maximum_page_size] = options[:event_batch_size] || 1000
|
161
|
+
client_opts[:reverse_order] = options.key?(:reverse_event_order) ?
|
162
|
+
options[:reverse_event_order] : false
|
163
|
+
|
164
|
+
response = client.poll_for_decision_task(client_opts)
|
165
|
+
|
166
|
+
if response.data['taskToken']
|
167
|
+
decision_task = DecisionTask.new(domain, client_opts, response.data)
|
168
|
+
if block_given?
|
169
|
+
yield(decision_task)
|
170
|
+
decision_task.complete! unless decision_task.responded?
|
171
|
+
nil
|
172
|
+
else
|
173
|
+
decision_task
|
174
|
+
end
|
175
|
+
else
|
176
|
+
nil
|
177
|
+
end
|
178
|
+
|
179
|
+
end
|
180
|
+
|
181
|
+
# Polls indefinetly for decision tasks. Each deicsion task found is
|
182
|
+
# yielded to the block. At the end of the block the decision task
|
183
|
+
# is auto-completed ({DecisionTask#complete!} is called).
|
184
|
+
#
|
185
|
+
# # yields once for each decision task found, indefinetly
|
186
|
+
# domain.decision_tasks.poll do |decision_task|
|
187
|
+
# # make decisions here
|
188
|
+
# end
|
189
|
+
#
|
190
|
+
# @note If you to terminate the block (by calling +break+ or +return+)
|
191
|
+
# then it is your responsibility to call #complete! on the decision
|
192
|
+
# task.
|
193
|
+
#
|
194
|
+
# @param (see #poll_for_single_task)
|
195
|
+
#
|
196
|
+
# @option (see #poll_for_single_task)
|
197
|
+
#
|
198
|
+
# @yieldparam [DecisionTask] decision_task
|
199
|
+
#
|
200
|
+
# @return [nil]
|
201
|
+
#
|
202
|
+
def poll task_list, options = {}, &block
|
203
|
+
loop do
|
204
|
+
poll_for_single_task(task_list, options) do |decision_task|
|
205
|
+
yield(decision_task)
|
206
|
+
end
|
207
|
+
end
|
208
|
+
nil
|
209
|
+
end
|
210
|
+
|
211
|
+
end
|
212
|
+
end
|
213
|
+
end
|
@@ -0,0 +1,122 @@
|
|
1
|
+
# Copyright 2011-2012 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
|
+
class SimpleWorkflow
|
16
|
+
|
17
|
+
# Domains are used to organize workflows types and activities for
|
18
|
+
# an account.
|
19
|
+
#
|
20
|
+
# @attr_reader [String,nil] description Returns
|
21
|
+
#
|
22
|
+
# @attr_reader [Integer,Symbol] retention_period Returns the retention
|
23
|
+
# period for this domain. The return value may be an integer (number
|
24
|
+
# of days history is kept around) or the symbol +:none+, implying
|
25
|
+
# no expiry of closed workflow executions.
|
26
|
+
#
|
27
|
+
# @attr_reader [Symbol] status Returns the domain's status. Status will
|
28
|
+
# be either +:registered+ or +:deprecated+.
|
29
|
+
#
|
30
|
+
class Domain < Resource
|
31
|
+
|
32
|
+
include OptionFormatters
|
33
|
+
|
34
|
+
# @private
|
35
|
+
def initialize name, options = {}
|
36
|
+
@name = name.to_s
|
37
|
+
super(options)
|
38
|
+
end
|
39
|
+
|
40
|
+
# @return [String] Returns the name of this domain.
|
41
|
+
attr_reader :name
|
42
|
+
|
43
|
+
info_attribute :description, :static => true
|
44
|
+
|
45
|
+
info_attribute :status, :to_sym => true
|
46
|
+
|
47
|
+
config_attribute :retention_period,
|
48
|
+
:as => 'workflowExecutionRetentionPeriodInDays',
|
49
|
+
:duration => true,
|
50
|
+
:static => true
|
51
|
+
|
52
|
+
# @return [WorkflowTypeCollection]
|
53
|
+
def workflow_types
|
54
|
+
WorkflowTypeCollection.new(self)
|
55
|
+
end
|
56
|
+
|
57
|
+
# @return [ActivityTypeCollection]
|
58
|
+
def activity_types
|
59
|
+
ActivityTypeCollection.new(self)
|
60
|
+
end
|
61
|
+
|
62
|
+
# @return [WorkflowExecutionCollection]
|
63
|
+
def workflow_executions
|
64
|
+
WorkflowExecutionCollection.new(self)
|
65
|
+
end
|
66
|
+
|
67
|
+
# @return [DecisionTaskCollection]
|
68
|
+
def decision_tasks
|
69
|
+
DecisionTaskCollection.new(self)
|
70
|
+
end
|
71
|
+
|
72
|
+
# @return [ActivityTaskCollection]
|
73
|
+
def activity_tasks
|
74
|
+
ActivityTaskCollection.new(self)
|
75
|
+
end
|
76
|
+
|
77
|
+
# @return [Boolean] Returns true if this domain has been deprecated.
|
78
|
+
def deprecated?
|
79
|
+
self.status == :deprecated
|
80
|
+
end
|
81
|
+
|
82
|
+
# Deprecates the domain. After a domain has been deprecated it cannot
|
83
|
+
# be used to create new workflow executions or register new types.
|
84
|
+
# However, you can still use visibility actions on this domain.
|
85
|
+
#
|
86
|
+
# Deprecating a domain also deprecates all activity and workflow
|
87
|
+
# types registered in the domain. Executions that were started
|
88
|
+
# before the domain was deprecated will continue to run.
|
89
|
+
#
|
90
|
+
# @return [nil]
|
91
|
+
#
|
92
|
+
def deprecate
|
93
|
+
client.deprecate_domain(:name => name)
|
94
|
+
nil
|
95
|
+
end
|
96
|
+
alias_method :delete, :deprecate
|
97
|
+
|
98
|
+
provider(:describe_domain) do |provider|
|
99
|
+
provider.provides *info_attributes.keys
|
100
|
+
provider.provides *config_attributes.keys
|
101
|
+
provider.find do |resp|
|
102
|
+
if resp.data['domainInfo']['name'] == name
|
103
|
+
resp.data['domainInfo'].merge(resp.data['configuration'])
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
provider(:list_domains) do |provider|
|
109
|
+
provider.provides *info_attributes.keys
|
110
|
+
provider.find do |resp|
|
111
|
+
resp.data['domainInfos'].find{|d| d['name'] == name }
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
protected
|
116
|
+
def resource_identifiers
|
117
|
+
[[:name,name]]
|
118
|
+
end
|
119
|
+
|
120
|
+
end
|
121
|
+
end
|
122
|
+
end
|
@@ -0,0 +1,169 @@
|
|
1
|
+
# Copyright 2011-2012 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
|
+
class SimpleWorkflow
|
16
|
+
|
17
|
+
# The primary interface for registerign, listing and deprecating
|
18
|
+
# domains.
|
19
|
+
#
|
20
|
+
# == Creating a Domain
|
21
|
+
#
|
22
|
+
# To create a domain you need to pass a unique name to #create.
|
23
|
+
#
|
24
|
+
# domain = simple_workflow.domains.create('my-domain', :none)
|
25
|
+
# #=> #<AWS::SimpleWorkflow::Domain name:my-domain>
|
26
|
+
#
|
27
|
+
# == Gettin a Domain
|
28
|
+
#
|
29
|
+
# Domains are indexed by their name.
|
30
|
+
#
|
31
|
+
# domain = simple_workflow.domains['my-domain']
|
32
|
+
#
|
33
|
+
# == Enumerating Domains
|
34
|
+
#
|
35
|
+
# You can call Enumerable methods on a domain collection to iterate
|
36
|
+
# the domains controlled by your account.
|
37
|
+
#
|
38
|
+
# simple_workflow.domains.each {|domain| ... }
|
39
|
+
#
|
40
|
+
# By default only registered domains are enumerated. If you would like
|
41
|
+
# to enumerate deprecated (deleted) domains you need to pass the
|
42
|
+
# +:deprecated+ option.
|
43
|
+
#
|
44
|
+
# # returns an array of names for all deprecated domains
|
45
|
+
# simple_workflow.domains.deprecated.map(&:name)
|
46
|
+
#
|
47
|
+
# See {AWS::Core::Collection} to see other useful methods you can
|
48
|
+
# call against a domain collection (e.g. #enum, #page, #each_batch).
|
49
|
+
#
|
50
|
+
class DomainCollection
|
51
|
+
|
52
|
+
include OptionFormatters
|
53
|
+
include Core::Collection::Limitable
|
54
|
+
|
55
|
+
def initialize options = {}
|
56
|
+
|
57
|
+
@registration_status = options[:registration_status] ?
|
58
|
+
options[:registration_status].to_s.upcase : 'REGISTERED'
|
59
|
+
|
60
|
+
@reverse_order = options.key?(:reverse_order) ?
|
61
|
+
!!options[:reverse_order] : false
|
62
|
+
|
63
|
+
super(options)
|
64
|
+
|
65
|
+
end
|
66
|
+
|
67
|
+
# Registers a new domain.
|
68
|
+
#
|
69
|
+
# # register a domain named 'domain' that has no expiry on workflow
|
70
|
+
# # execution history
|
71
|
+
# domain = AWS::SimpleWorkflow.new.domains.register('domain', :none)
|
72
|
+
#
|
73
|
+
# @param [String] name Name of the domain to register. The name must
|
74
|
+
# be unique.
|
75
|
+
#
|
76
|
+
# @param [Integer,:none] retention_period A duration (in days)
|
77
|
+
# for which the record (including the history) of workflow
|
78
|
+
# executions in this domain should be kept by the service.
|
79
|
+
# After the retention period, the workflow execution will not be
|
80
|
+
# available in the results of visibility calls.
|
81
|
+
#
|
82
|
+
# If you pass the symbol +:none+ then there is no expiration for
|
83
|
+
# workflow execution history (effectively an infinite rention
|
84
|
+
# period).
|
85
|
+
#
|
86
|
+
# @param [Hash] options
|
87
|
+
#
|
88
|
+
# @option [String] :description (nil) Textual description of the domain.
|
89
|
+
#
|
90
|
+
# @return [Domain] Returns the newly created {Domain} object.
|
91
|
+
#
|
92
|
+
def register name, retention_period, options = {}
|
93
|
+
|
94
|
+
client_opts = {}
|
95
|
+
client_opts[:name] = name
|
96
|
+
client_opts[:workflow_execution_retention_period_in_days] = retention_period
|
97
|
+
client_opts[:description] = options[:description] if options[:description]
|
98
|
+
|
99
|
+
duration_opts(client_opts, :workflow_execution_retention_period_in_days)
|
100
|
+
client.register_domain(client_opts)
|
101
|
+
|
102
|
+
client_opts[:retention_period] = retention_period.to_s =~ /^\d+$/ ?
|
103
|
+
retention_period.to_i : retention_period.to_s.downcase.to_sym
|
104
|
+
|
105
|
+
Domain.new(name, client_opts.merge(:config => config))
|
106
|
+
|
107
|
+
end
|
108
|
+
alias_method :create, :register
|
109
|
+
|
110
|
+
# @return [Domain] Returns the domain with the given name.
|
111
|
+
def [] name
|
112
|
+
Domain.new(name, :config => config)
|
113
|
+
end
|
114
|
+
|
115
|
+
# @return [DomainCollection] Returns a domain collection that
|
116
|
+
# will only enumerate registered domains.
|
117
|
+
def registered
|
118
|
+
collection_with(:registration_status => 'REGISTERED')
|
119
|
+
end
|
120
|
+
|
121
|
+
# @return [DomainCollection] Returns a domain collection that
|
122
|
+
# will only enumerate deprecated (deleted) domains.
|
123
|
+
def deprecated
|
124
|
+
collection_with(:registration_status => 'DEPRECATED')
|
125
|
+
end
|
126
|
+
|
127
|
+
# @return [DomainCollection] Returns a domain collection that
|
128
|
+
# enumerates domains in reverse alphabetical order. Default
|
129
|
+
# ordering is ascending alphabetical.
|
130
|
+
def reverse_order
|
131
|
+
collection_with(:reverse_order => true)
|
132
|
+
end
|
133
|
+
|
134
|
+
protected
|
135
|
+
def collection_with options = {}
|
136
|
+
self.class.new({
|
137
|
+
:registration_status => @registration_status,
|
138
|
+
:reverse_order => @reverse_order,
|
139
|
+
:config => config,
|
140
|
+
}.merge(options))
|
141
|
+
end
|
142
|
+
|
143
|
+
protected
|
144
|
+
def _each_item next_token, limit, options = {}, &block
|
145
|
+
|
146
|
+
options[:maximum_page_size] = limit if limit
|
147
|
+
options[:next_page_token] = next_token if next_token
|
148
|
+
options[:registration_status] ||= @registration_status
|
149
|
+
options[:reverse_order] = @reverse_order unless
|
150
|
+
options.has_key?(:reverse_order)
|
151
|
+
|
152
|
+
response = client.list_domains(options)
|
153
|
+
response.data['domainInfos'].each do |desc|
|
154
|
+
|
155
|
+
domain = Domain.new_from(:list_domains, desc,
|
156
|
+
desc['name'], :config => config)
|
157
|
+
|
158
|
+
yield(domain)
|
159
|
+
|
160
|
+
end
|
161
|
+
|
162
|
+
response.data['nextPageToken']
|
163
|
+
|
164
|
+
end
|
165
|
+
|
166
|
+
end
|
167
|
+
|
168
|
+
end
|
169
|
+
end
|