class Pincers::Http::Client
Constants
- SUPPORTED_MODES
Attributes
document[R]
frozen[R]
session[R]
Public Class Methods
build_from_options(_options = {})
click to toggle source
# File lib/pincers/http/client.rb, line 13 def self.build_from_options(_options = {}) session = Session.new session.proxy = _options[:proxy] if _options.key? :proxy session.proxy_auth = _options[:proxy_auth] if _options.key? :proxy_auth session.headers.merge! _options[:headers] if _options.key? :headers session.redirect_limit = _options[:redirect_limit] if _options.key? :redirect_limit if _options.key? :ssl_cert session.ssl_cert = _options[:ssl_cert] session.ssl_key = _options[:ssl_key] end client = self.new session, _options[:document] client.freeze if _options[:freeze] client end
new(_session, _document={})
click to toggle source
# File lib/pincers/http/client.rb, line 33 def initialize(_session, _document={}) @session = _session @document = _document @frozen = false end
Public Instance Methods
absolute_uri_for(_url)
click to toggle source
# File lib/pincers/http/client.rb, line 95 def absolute_uri_for(_url) uri = _url.is_a?(URI) ? _url : Utils.parse_uri(_url) if uri.relative? raise ArgumentError, 'Absolute url was required' if @document.nil? uri = URI.join(@document.uri, uri) end uri end
delete(_url, &_block)
click to toggle source
# File lib/pincers/http/client.rb, line 80 def delete(_url, &_block) request = build_request :delete, _url _block.call request unless _block.nil? perform_in_session request end
fork(_keep_session = false)
click to toggle source
# File lib/pincers/http/client.rb, line 86 def fork(_keep_session = false) fork_session = _keep_session ? @session : @session.clone self.class.new fork_session, @document end
freeze()
click to toggle source
# File lib/pincers/http/client.rb, line 39 def freeze @frozen = true end
get(_url, _query = nil, &_block)
click to toggle source
# File lib/pincers/http/client.rb, line 59 def get(_url, _query = nil, &_block) request = build_request :get, _url request.set_query _query unless _query.nil? _block.call request unless _block.nil? perform_in_session request end
join(_other_client)
click to toggle source
# File lib/pincers/http/client.rb, line 91 def join(_other_client) @session.sync _other_client.session end
post(_url, _data = nil, &_block)
click to toggle source
# File lib/pincers/http/client.rb, line 66 def post(_url, _data = nil, &_block) request = build_request :post, _url load_data_in_request request, _data unless _data.nil? _block.call request unless _block.nil? perform_in_session request end
put(_url, _data = nil, &_block)
click to toggle source
# File lib/pincers/http/client.rb, line 73 def put(_url, _data = nil, &_block) request = build_request :put, _url load_data_in_request request, _data unless _data.nil? _block.call request unless _block.nil? perform_in_session request end
unfreeze()
click to toggle source
# File lib/pincers/http/client.rb, line 43 def unfreeze @frozen = false end
Private Instance Methods
build_request(_type, _url)
click to toggle source
# File lib/pincers/http/client.rb, line 108 def build_request(_type, _url) Request.new _type, absolute_uri_for(_url) end
load_data_in_request(_request, _data)
click to toggle source
# File lib/pincers/http/client.rb, line 112 def load_data_in_request(_request, _data) if _data.is_a? Hash mode = :form if _data.keys.length == 1 and SUPPORTED_MODES.include? _data.keys.first mode = _data.keys.first _data = _data[mode] end case mode when :form _request.set_form_data _data when :urlencoded _request.set_form_data _data, Utils::FORM_URLENCODED when :multipart _request.set_form_data _data, Utils::FORM_MULTIPART end else _request.data = _data.to_s end end
perform_in_session(_request)
click to toggle source
# File lib/pincers/http/client.rb, line 133 def perform_in_session(_request) begin new_document = @session.perform _request rescue @document = nil unless frozen raise end if frozen self.class.new @session, @document else @document = new_document self end end