aws-sdk-core 2.0.0.rc1 → 2.0.0.rc2
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.
- 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
|