aws-sdk-core 2.0.0.rc1 → 2.0.0.rc2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +1 -0
- data/README.md +6 -3
- data/Rakefile +2 -0
- data/apis/AutoScaling-2011-01-01.json +1 -0
- data/apis/CloudFormation-2010-05-15.json +75 -0
- data/apis/CloudFront-2012-05-05.json +1 -0
- data/apis/CloudFront-2013-05-12.json +1 -0
- data/apis/CloudFront-2013-08-26.json +1 -0
- data/apis/CloudSearch-2011-02-01.json +1 -0
- data/apis/CloudWatch-2010-08-01.json +1 -0
- data/apis/DataPipeline-2012-10-29.json +1 -0
- data/apis/DirectConnect-2012-10-25.json +1 -0
- data/apis/DynamoDB-2011-12-05.json +1 -0
- data/apis/DynamoDB-2012-08-10.json +1 -0
- data/apis/EC2-2013-06-15.json +1 -0
- data/apis/EC2-2013-10-01.json +1 -0
- data/apis/EMR-2009-03-31.json +1 -0
- data/apis/ElastiCache-2012-11-15.json +1 -0
- data/apis/ElastiCache-2013-06-15.json +1 -0
- data/apis/ElasticBeanstalk-2010-12-01.json +1 -0
- data/apis/ElasticLoadBalancing-2012-06-01.json +73 -0
- data/apis/ElasticTranscoder-2012-09-25.json +231 -0
- data/apis/Glacier-2012-06-01.json +2 -0
- data/apis/IAM-2010-05-08.json +1 -0
- data/apis/ImportExport-2010-06-01.json +1 -0
- data/apis/OpsWorks-2013-02-18.json +1 -0
- data/apis/RDS-2013-01-10.json +1 -0
- data/apis/RDS-2013-02-12.json +1 -0
- data/apis/RDS-2013-05-15.json +1 -0
- data/apis/Redshift-2012-12-01.json +1 -0
- data/apis/Route53-2012-12-12.json +1 -0
- data/apis/S3-2006-03-01.json +5 -0
- data/apis/SDB-2009-04-15.json +1 -0
- data/apis/SES-2010-12-01.json +1 -0
- data/apis/SNS-2010-03-31.json +1 -0
- data/apis/SQS-2012-11-05.json +1 -0
- data/apis/STS-2011-06-15.json +1 -0
- data/apis/SWF-2012-01-25.json +1 -0
- data/apis/StorageGateway-2012-06-30.json +1 -0
- data/apis/StorageGateway-2013-06-30.json +2018 -0
- data/apis/Support-2013-04-15.json +1 -0
- data/apis/source/cloudformation-2010-05-15.json +118 -12
- data/apis/source/elasticloadbalancing-2012-06-01.json +347 -220
- data/apis/source/elastictranscoder-2012-09-25.json +315 -5
- data/apis/source/s3-2006-03-01.json +3 -0
- data/apis/source/storagegateway-2013-06-30.json +12560 -0
- data/apis/source/storagegateway-2013-06-30.paginators.json +28 -0
- data/doc-src/plugins/apis.rb +44 -1
- data/doc-src/templates/default/fulldoc/html/setup.rb +1 -1
- data/features/common/step_definitions.rb +3 -5
- data/features/env.rb +2 -0
- data/features/glacier/client.feature +8 -0
- data/features/glacier/step_definitions.rb +7 -7
- data/features/s3/step_definitions.rb +2 -3
- data/lib/aws.rb +75 -69
- data/lib/aws/api/service_translators/glacier.rb +1 -0
- data/lib/aws/api/translator.rb +13 -8
- data/lib/aws/credentials.rb +5 -5
- data/lib/aws/instance_profile_credentials.rb +113 -0
- data/lib/aws/plugins/credentials.rb +2 -1
- data/lib/aws/plugins/glacier_account_id.rb +11 -0
- data/lib/aws/plugins/glacier_checksums.rb +7 -3
- data/lib/aws/plugins/instance_profile_credentials.rb +14 -0
- data/lib/aws/plugins/s3_bucket_dns.rb +17 -14
- data/lib/aws/plugins/s3_md5s.rb +3 -3
- data/lib/aws/service.rb +10 -9
- data/lib/aws/signers/s3.rb +2 -2
- data/lib/aws/signers/v2.rb +1 -1
- data/lib/aws/signers/v4.rb +2 -2
- data/lib/aws/version.rb +1 -1
- data/lib/aws/xml/serializer.rb +1 -1
- data/spec/aws/instance_profile_credentials_spec.rb +94 -0
- data/spec/aws/operations_spec.rb +1 -1
- data/spec/aws/plugins/credentials_spec.rb +2 -2
- data/spec/fixtures/operations/glacier/account_id_param.yml +13 -0
- data/spec/fixtures/operations/glacier/custom_account_id.yml +11 -0
- data/spec/fixtures/operations/glacier/default_account_id.yml +10 -0
- data/spec/fixtures/operations/s3/content_type_header.yml +12 -0
- data/spec/fixtures/operations/s3/md5_checksum_disabled.yml +1 -1
- data/tasks/apis.rake +2 -2
- data/tasks/docs.rake +2 -1
- data/tasks/handlers.rake +30 -0
- data/vendor/seahorse/lib/seahorse/client.rb +1 -0
- data/vendor/seahorse/lib/seahorse/client/base.rb +0 -18
- data/vendor/seahorse/lib/seahorse/client/block_io.rb +0 -7
- data/vendor/seahorse/lib/seahorse/client/configuration.rb +57 -37
- data/vendor/seahorse/lib/seahorse/client/handler_list.rb +115 -78
- data/vendor/seahorse/lib/seahorse/client/http/endpoint.rb +19 -15
- data/vendor/seahorse/lib/seahorse/client/http/request.rb +0 -15
- data/vendor/seahorse/lib/seahorse/client/logging/formatter.rb +0 -7
- data/vendor/seahorse/lib/seahorse/client/managed_file.rb +14 -0
- data/vendor/seahorse/lib/seahorse/client/net_http/handler.rb +1 -3
- data/vendor/seahorse/lib/seahorse/client/plugins/content_length.rb +1 -1
- data/vendor/seahorse/lib/seahorse/client/plugins/endpoint.rb +81 -10
- data/vendor/seahorse/lib/seahorse/client/plugins/restful_bindings.rb +1 -71
- data/vendor/seahorse/lib/seahorse/client/request.rb +26 -3
- data/vendor/seahorse/spec/seahorse/client/base_spec.rb +1 -5
- data/vendor/seahorse/spec/seahorse/client/configuration_spec.rb +1 -10
- data/vendor/seahorse/spec/seahorse/client/handler_list_spec.rb +10 -10
- data/vendor/seahorse/spec/seahorse/client/http/endpoint_spec.rb +46 -14
- data/vendor/seahorse/spec/seahorse/client/http/request_spec.rb +1 -42
- data/vendor/seahorse/spec/seahorse/client/logging/formatter_spec.rb +1 -6
- data/vendor/seahorse/spec/seahorse/client/logging/handler_spec.rb +1 -1
- data/vendor/seahorse/spec/seahorse/client/net_http/handler_spec.rb +5 -4
- data/vendor/seahorse/spec/seahorse/client/param_converter_spec.rb +1 -0
- data/vendor/seahorse/spec/seahorse/client/plugins/{restful_bindings/uri_path_builder_spec.rb → endpoint/request_uri_builder_spec.rb} +3 -3
- data/vendor/seahorse/spec/seahorse/client/plugins/endpoint_spec.rb +1 -11
- data/vendor/seahorse/spec/seahorse/client/request_spec.rb +63 -13
- metadata +21 -3
data/tasks/handlers.rake
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
namespace :handlers do
|
2
|
+
Aws.service_classes.each do |svc_name, svc_class|
|
3
|
+
|
4
|
+
# create a task for each service, e.g. handlers:s3
|
5
|
+
desc "Displays handlers for #{svc_class.name}"
|
6
|
+
task(svc_name) do
|
7
|
+
svc = svc_class.new
|
8
|
+
if operation_name = ENV['OPERATION']
|
9
|
+
print_handlers(svc.build_request(operation_name).handlers)
|
10
|
+
else
|
11
|
+
puts ""
|
12
|
+
puts "Diplaying handlers applied to all #{svc_class.name} operations,"
|
13
|
+
puts " use OPERATION=name to include operation specific handlers"
|
14
|
+
puts ""
|
15
|
+
print_handlers(svc.handlers)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def print_handlers(handlers)
|
23
|
+
row = '%-6s %-11s %-9s %s'
|
24
|
+
puts row % ['Order', 'Step', 'Priority', 'Handler Class']
|
25
|
+
puts '---------------------------------------------------------'
|
26
|
+
entries = handlers.entries.sort.reverse.select{ |e| e.operations.empty? }
|
27
|
+
entries.each_with_index do |entry, n|
|
28
|
+
puts row % [n + 1, entry.step, entry.priority, entry.handler_class]
|
29
|
+
end
|
30
|
+
end
|
@@ -7,6 +7,7 @@ module Seahorse
|
|
7
7
|
autoload :Handler, 'seahorse/client/handler'
|
8
8
|
autoload :HandlerBuilder, 'seahorse/client/handler_builder'
|
9
9
|
autoload :HandlerList, 'seahorse/client/handler_list'
|
10
|
+
autoload :ManagedFile, 'seahorse/client/managed_file'
|
10
11
|
autoload :ParamConverter, 'seahorse/client/param_converter'
|
11
12
|
autoload :ParamValidator, 'seahorse/client/param_validator'
|
12
13
|
autoload :Plugin, 'seahorse/client/plugin'
|
@@ -97,24 +97,6 @@ module Seahorse
|
|
97
97
|
|
98
98
|
class << self
|
99
99
|
|
100
|
-
# @option options [String] :endpoint
|
101
|
-
# Endpoints specify the http scheme, hostname and port to connect
|
102
|
-
# to. You must specify at a minimum the hostname. Endpoints without
|
103
|
-
# a uri scheme will default to https on port 443.
|
104
|
-
#
|
105
|
-
# # defaults to https on port 443
|
106
|
-
# hostname: 'domain.com'
|
107
|
-
#
|
108
|
-
# # defaults to http on port 80
|
109
|
-
# hostname: 'domain.com', ssl_default: false
|
110
|
-
#
|
111
|
-
# # defaults are ignored, as scheme and port are present
|
112
|
-
# hostname: 'http://domain.com:123'
|
113
|
-
#
|
114
|
-
# @option options [Boolean] :ssl_default (true) Specifies the default
|
115
|
-
# scheme for the #endpoint when not specified. Defaults to `true`
|
116
|
-
# which creates https endpoints.
|
117
|
-
#
|
118
100
|
def new(options = {})
|
119
101
|
plugins = build_plugins
|
120
102
|
options = options.dup
|
@@ -51,9 +51,23 @@ module Seahorse
|
|
51
51
|
#
|
52
52
|
class Configuration
|
53
53
|
|
54
|
+
# @api private
|
55
|
+
Defaults = Class.new(Array) do
|
56
|
+
def each(&block)
|
57
|
+
reverse.each(&block)
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
# @api private
|
62
|
+
DynamicDefault = Struct.new(:block) do
|
63
|
+
def call(*args)
|
64
|
+
block.call(*args)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
54
68
|
# @api private
|
55
69
|
def initialize
|
56
|
-
@defaults = {}
|
70
|
+
@defaults = Hash.new { |h,k| h[k] = Defaults.new }
|
57
71
|
end
|
58
72
|
|
59
73
|
# Adds a getter method that returns the named option or a default
|
@@ -84,9 +98,8 @@ module Seahorse
|
|
84
98
|
#
|
85
99
|
# @return [self]
|
86
100
|
def add_option(name, default = nil, &block)
|
87
|
-
|
88
|
-
|
89
|
-
default
|
101
|
+
default = DynamicDefault.new(Proc.new) if block_given?
|
102
|
+
@defaults[name.to_sym] << default
|
90
103
|
self
|
91
104
|
end
|
92
105
|
|
@@ -126,7 +139,19 @@ module Seahorse
|
|
126
139
|
# @param [Hash] options ({}) A hash of configuration options.
|
127
140
|
# @return [Struct] Returns a frozen configuration `Struct`.
|
128
141
|
def build!(options = {})
|
129
|
-
struct =
|
142
|
+
struct = empty_struct
|
143
|
+
apply_options(struct, options)
|
144
|
+
apply_defaults(struct, options)
|
145
|
+
struct
|
146
|
+
end
|
147
|
+
|
148
|
+
private
|
149
|
+
|
150
|
+
def empty_struct
|
151
|
+
Struct.new(*@defaults.keys.sort).new
|
152
|
+
end
|
153
|
+
|
154
|
+
def apply_options(struct, options)
|
130
155
|
options.each do |opt, value|
|
131
156
|
begin
|
132
157
|
struct[opt] = value
|
@@ -135,62 +160,57 @@ module Seahorse
|
|
135
160
|
raise ArgumentError, msg
|
136
161
|
end
|
137
162
|
end
|
138
|
-
OptionBlockResolver.new(struct).struct.freeze
|
139
163
|
end
|
140
164
|
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
# @api private
|
148
|
-
class UnresolvedOption
|
149
|
-
|
150
|
-
def initialize(block)
|
151
|
-
@block = block
|
165
|
+
def apply_defaults(struct, options)
|
166
|
+
@defaults.each do |opt_name, defaults|
|
167
|
+
unless options.key?(opt_name)
|
168
|
+
struct[opt_name] = defaults
|
169
|
+
end
|
152
170
|
end
|
153
|
-
|
154
|
-
attr_reader :block
|
155
|
-
|
171
|
+
DefaultResolver.new(struct).resolve
|
156
172
|
end
|
157
173
|
|
158
174
|
# @api private
|
159
|
-
class
|
175
|
+
class DefaultResolver
|
160
176
|
|
161
177
|
def initialize(struct)
|
162
178
|
@struct = struct
|
163
179
|
@members = Set.new(@struct.members)
|
164
|
-
@struct.members.each do |opt|
|
165
|
-
if struct[opt].is_a?(UnresolvedOption)
|
166
|
-
struct[opt] = struct[opt].block.call(self)
|
167
|
-
end
|
168
|
-
end
|
169
180
|
end
|
170
181
|
|
171
|
-
|
182
|
+
def resolve
|
183
|
+
@members.each { |opt_name| value_at(opt_name) }
|
184
|
+
end
|
172
185
|
|
173
|
-
def respond_to?(method_name)
|
174
|
-
@members.include?(method_name
|
186
|
+
def respond_to?(method_name, *args)
|
187
|
+
@members.include?(method_name) or super
|
175
188
|
end
|
176
189
|
|
177
190
|
private
|
178
191
|
|
192
|
+
def value_at(opt_name)
|
193
|
+
value = @struct[opt_name]
|
194
|
+
value.is_a?(Defaults) ? resolve_defaults(opt_name, value) : value
|
195
|
+
end
|
196
|
+
|
197
|
+
def resolve_defaults(opt_name, defaults)
|
198
|
+
defaults.each do |default|
|
199
|
+
default = default.call(self) if default.is_a?(DynamicDefault)
|
200
|
+
@struct[opt_name] = default
|
201
|
+
break if !default.nil?
|
202
|
+
end
|
203
|
+
@struct[opt_name]
|
204
|
+
end
|
205
|
+
|
179
206
|
def method_missing(method_name, *args)
|
180
207
|
if @members.include?(method_name)
|
181
|
-
|
208
|
+
value_at(method_name)
|
182
209
|
else
|
183
210
|
super
|
184
211
|
end
|
185
212
|
end
|
186
213
|
|
187
|
-
def resolve_blocks(member)
|
188
|
-
if @struct[member].is_a?(UnresolvedOption)
|
189
|
-
@struct[member] = @struct[member].block.call(self)
|
190
|
-
end
|
191
|
-
@struct[member]
|
192
|
-
end
|
193
|
-
|
194
214
|
end
|
195
215
|
end
|
196
216
|
end
|
@@ -20,33 +20,109 @@ module Seahorse
|
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
23
|
-
|
24
|
-
|
23
|
+
class Entry
|
24
|
+
|
25
|
+
# @api private
|
26
|
+
STEPS = {
|
27
|
+
initialize: 400,
|
28
|
+
validate: 300,
|
29
|
+
build: 200,
|
30
|
+
sign: 100,
|
31
|
+
send: 0,
|
32
|
+
}
|
33
|
+
|
34
|
+
def initialize(handler, inserted, options)
|
35
|
+
@handler = handler
|
36
|
+
@inserted = inserted
|
37
|
+
@operations = Set.new((options[:operations] || []).map(&:to_s))
|
38
|
+
@step = :build
|
39
|
+
@priority = 50
|
40
|
+
self.step = options[:step] if options[:step]
|
41
|
+
self.priority = options[:priority] if options[:priority]
|
42
|
+
compute_weight unless @weight
|
43
|
+
end
|
44
|
+
|
45
|
+
# @return [Handler, Class<Handler>] Returns the handler. This may
|
46
|
+
# be a constructed handler object or a handler class.
|
47
|
+
attr_accessor :handler
|
48
|
+
|
49
|
+
# @return [Integer] The insertion order/position. This is used to
|
50
|
+
# determine sort order when two entries have the same priority.
|
51
|
+
# Entries inserted later (with a higher inserted value) have a
|
52
|
+
# lower priority.
|
53
|
+
attr_accessor :inserted
|
54
|
+
|
55
|
+
# @return [Symbol]
|
56
|
+
attr_accessor :step
|
57
|
+
|
58
|
+
# @return [Integer]
|
59
|
+
attr_accessor :priority
|
60
|
+
|
61
|
+
# @return [Set<String>]
|
62
|
+
attr_accessor :operations
|
63
|
+
|
64
|
+
# @return [Integer]
|
65
|
+
attr_accessor :weight
|
66
|
+
|
67
|
+
# @return [Class]
|
68
|
+
def handler_class
|
69
|
+
handler.is_a?(Class) ? handler : handler.class
|
70
|
+
end
|
71
|
+
|
72
|
+
# @param [Symbol] step
|
73
|
+
def step=(step)
|
74
|
+
raise InvalidStepError, step unless STEPS.key?(step)
|
75
|
+
@step = step
|
76
|
+
compute_weight
|
77
|
+
end
|
78
|
+
|
79
|
+
# @param [Integer<0..99>] priority
|
80
|
+
def priority=(priority)
|
81
|
+
raise InvalidPriorityError, priority unless (0..99).include?(priority)
|
82
|
+
@priority = priority
|
83
|
+
compute_weight
|
84
|
+
end
|
85
|
+
|
86
|
+
# @api private
|
87
|
+
def dup
|
88
|
+
duplicate = super
|
89
|
+
duplicate.operations = operations.dup
|
90
|
+
duplicate
|
91
|
+
end
|
92
|
+
|
93
|
+
# @api private
|
25
94
|
def <=>(other)
|
26
|
-
if
|
27
|
-
inserted <=>
|
95
|
+
if weight == other.weight
|
96
|
+
other.inserted <=> inserted
|
28
97
|
else
|
29
|
-
|
98
|
+
weight <=> other.weight
|
30
99
|
end
|
31
100
|
end
|
32
|
-
end
|
33
101
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
102
|
+
private
|
103
|
+
|
104
|
+
def compute_weight
|
105
|
+
@weight = STEPS[@step] + @priority
|
106
|
+
end
|
107
|
+
|
108
|
+
end
|
41
109
|
|
42
110
|
include Enumerable
|
43
111
|
|
44
112
|
# @api private
|
45
113
|
def initialize(options = {})
|
46
114
|
@index = options[:index] || 0
|
47
|
-
@
|
48
|
-
@handlers = options[:handlers] || []
|
115
|
+
@entries = {}
|
49
116
|
@mutex = Mutex.new
|
117
|
+
entries = options[:entries] || []
|
118
|
+
add_entries(entries) unless entries.empty?
|
119
|
+
end
|
120
|
+
|
121
|
+
# @return [Array<Entry>]
|
122
|
+
def entries
|
123
|
+
@mutex.synchronize do
|
124
|
+
@entries.values
|
125
|
+
end
|
50
126
|
end
|
51
127
|
|
52
128
|
# Registers a handler. Handlers are used to build a handler stack.
|
@@ -126,36 +202,23 @@ module Seahorse
|
|
126
202
|
#
|
127
203
|
# @return [Class<Handler>] Returns the handler class that was added.
|
128
204
|
#
|
129
|
-
def add(
|
205
|
+
def add(handler, options = {})
|
130
206
|
@mutex.synchronize do
|
131
|
-
|
132
|
-
@send = handler_class
|
133
|
-
else
|
134
|
-
@handlers << Entry.new(
|
135
|
-
handler_class,
|
136
|
-
options,
|
137
|
-
operations(options),
|
138
|
-
priority(options),
|
139
|
-
next_index,
|
140
|
-
)
|
141
|
-
end
|
207
|
+
add_entry(Entry.new(handler, next_index, options))
|
142
208
|
end
|
143
|
-
|
209
|
+
handler
|
144
210
|
end
|
145
211
|
|
146
212
|
# Copies handlers from the `source_list` onto the current handler list.
|
147
213
|
# @param [HandlerList] source_list
|
148
214
|
# @return [void]
|
149
215
|
def copy_from(source_list)
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
new_handler = handler.dup
|
155
|
-
new_handler.inserted = next_index
|
156
|
-
@handlers << new_handler
|
157
|
-
end
|
216
|
+
entries = source_list.entries.collect do |entry|
|
217
|
+
new_entry = entry.dup
|
218
|
+
new_entry.inserted = next_index
|
219
|
+
new_entry
|
158
220
|
end
|
221
|
+
add_entries(entries)
|
159
222
|
end
|
160
223
|
|
161
224
|
# Returns a handler list for the given operation. The returned
|
@@ -164,22 +227,13 @@ module Seahorse
|
|
164
227
|
# @param [String] operation The name of an operation.
|
165
228
|
# @return [HandlerList]
|
166
229
|
def for(operation)
|
167
|
-
@
|
168
|
-
HandlerList.new(
|
169
|
-
index: @index,
|
170
|
-
send: @send,
|
171
|
-
handlers: filter(operation.to_s),
|
172
|
-
)
|
173
|
-
end
|
230
|
+
HandlerList.new(index: @index, entries: filter(operation.to_s))
|
174
231
|
end
|
175
232
|
|
176
233
|
# Yields the handlers in stack order, which is reverse priority.
|
177
234
|
def each(&block)
|
178
|
-
|
179
|
-
yield(
|
180
|
-
@handlers.sort.each do |handler|
|
181
|
-
yield(handler.klass) if handler.operations.nil?
|
182
|
-
end
|
235
|
+
entries.sort.each do |entry|
|
236
|
+
yield(entry.handler) if entry.operations.empty?
|
183
237
|
end
|
184
238
|
end
|
185
239
|
|
@@ -200,51 +254,34 @@ module Seahorse
|
|
200
254
|
|
201
255
|
private
|
202
256
|
|
203
|
-
def
|
204
|
-
|
257
|
+
def add_entries(entries)
|
258
|
+
@mutex.synchronize do
|
259
|
+
entries.each { |entry| add_entry(entry) }
|
260
|
+
end
|
261
|
+
end
|
262
|
+
|
263
|
+
def add_entry(entry)
|
264
|
+
key = entry.step == :send ? :send : entry.object_id
|
265
|
+
@entries[key] = entry
|
205
266
|
end
|
206
267
|
|
207
268
|
def filter(operation)
|
208
|
-
filtered
|
209
|
-
|
210
|
-
if handler.operations.nil?
|
269
|
+
entries.inject([]) do |filtered, handler|
|
270
|
+
if handler.operations.empty?
|
211
271
|
filtered << handler
|
212
272
|
elsif handler.operations.include?(operation)
|
213
273
|
handler = handler.dup
|
214
|
-
handler.operations
|
274
|
+
handler.operations.clear
|
215
275
|
filtered << handler
|
216
276
|
end
|
277
|
+
filtered
|
217
278
|
end
|
218
|
-
filtered
|
219
279
|
end
|
220
280
|
|
221
281
|
def next_index
|
222
282
|
@index += 1
|
223
283
|
end
|
224
284
|
|
225
|
-
# @return [Integer]
|
226
|
-
def priority(options)
|
227
|
-
step_value(options) + priority_value(options)
|
228
|
-
end
|
229
|
-
|
230
|
-
# @return [Integer]
|
231
|
-
def step_value(options)
|
232
|
-
step = options[:step] || :build
|
233
|
-
raise InvalidStepError, step unless STEPS.key?(step)
|
234
|
-
STEPS[step]
|
235
|
-
end
|
236
|
-
|
237
|
-
# @return [Integer]
|
238
|
-
def priority_value(options)
|
239
|
-
priority = options[:priority] || 50
|
240
|
-
raise InvalidPriorityError, priority unless (0..99).include?(priority)
|
241
|
-
priority
|
242
|
-
end
|
243
|
-
|
244
|
-
def handlers
|
245
|
-
[@send, @handlers]
|
246
|
-
end
|
247
|
-
|
248
285
|
end
|
249
286
|
end
|
250
287
|
end
|