Class: HTTPX::Session
Constant Summary
Constants included
from Loggable
Loggable::COLORS
Class Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Methods included from Chainable
#accept, #headers, #plugin, #timeout, #with
Methods included from Loggable
#log, #log_exception
Constructor Details
#initialize(options = {}, &blk) ⇒ Session
Returns a new instance of Session.
8
9
10
11
12
13
|
# File 'lib/httpx/session.rb', line 8
def initialize(options = {}, &blk)
@options = self.class.default_options.merge(options)
@responses = {}
@persistent = @options.persistent
wrap(&blk) if block_given?
end
|
Class Attribute Details
.default_options ⇒ Object
Returns the value of attribute default_options.
198
199
200
|
# File 'lib/httpx/session.rb', line 198
def default_options
@default_options
end
|
Class Method Details
.inherited(klass) ⇒ Object
200
201
202
203
204
|
# File 'lib/httpx/session.rb', line 200
def inherited(klass)
super
klass.instance_variable_set(:@default_options, @default_options)
klass.instance_variable_set(:@plugins, @plugins.dup)
end
|
.plugin(pl, *args, &block) ⇒ Object
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
|
# File 'lib/httpx/session.rb', line 206
def plugin(pl, *args, &block)
pl = Plugins.load_plugin(pl) if pl.is_a?(Symbol)
unless @plugins.include?(pl)
@plugins << pl
pl.load_dependencies(self, *args, &block) if pl.respond_to?(:load_dependencies)
@default_options = @default_options.dup
@default_options = pl.(@default_options) if pl.respond_to?(:extra_options)
include(pl::InstanceMethods) if defined?(pl::InstanceMethods)
extend(pl::ClassMethods) if defined?(pl::ClassMethods)
opts = @default_options
opts.request_class.__send__(:include, pl::RequestMethods) if defined?(pl::RequestMethods)
opts.request_class.extend(pl::RequestClassMethods) if defined?(pl::RequestClassMethods)
opts.response_class.__send__(:include, pl::ResponseMethods) if defined?(pl::ResponseMethods)
opts.response_class.extend(pl::ResponseClassMethods) if defined?(pl::ResponseClassMethods)
opts..__send__(:include, pl::HeadersMethods) if defined?(pl::HeadersMethods)
opts..extend(pl::HeadersClassMethods) if defined?(pl::HeadersClassMethods)
opts.request_body_class.__send__(:include, pl::RequestBodyMethods) if defined?(pl::RequestBodyMethods)
opts.request_body_class.extend(pl::RequestBodyClassMethods) if defined?(pl::RequestBodyClassMethods)
opts.response_body_class.__send__(:include, pl::ResponseBodyMethods) if defined?(pl::ResponseBodyMethods)
opts.response_body_class.extend(pl::ResponseBodyClassMethods) if defined?(pl::ResponseBodyClassMethods)
opts.connection_class.__send__(:include, pl::ConnectionMethods) if defined?(pl::ConnectionMethods)
pl.configure(self, *args, &block) if pl.respond_to?(:configure)
@default_options.freeze
end
self
end
|
.plugins(pls) ⇒ Object
237
238
239
240
241
242
|
# File 'lib/httpx/session.rb', line 237
def plugins(pls)
pls.each do |pl, *args|
plugin(pl, *args)
end
self
end
|
Instance Method Details
#close(*args) ⇒ Object
27
28
29
|
# File 'lib/httpx/session.rb', line 27
def close(*args)
pool.close(*args)
end
|
#request(*args, **options) ⇒ Object
31
32
33
34
35
36
37
|
# File 'lib/httpx/session.rb', line 31
def request(*args, **options)
requests = build_requests(*args, options)
responses = send_requests(*requests, options)
return responses.first if responses.size == 1
responses
end
|
#wrap ⇒ Object
15
16
17
18
19
20
21
22
23
24
25
|
# File 'lib/httpx/session.rb', line 15
def wrap
return unless block_given?
begin
prev_persistent = @persistent
@persistent = true
yield self
ensure
@persistent = prev_persistent
end
end
|