Class: Pincers::Http::Client

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Defined in:
lib/pincers/http/client.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(_session, _document = {}) ⇒ Client

Returns a new instance of Client.



28
29
30
31
32
# File 'lib/pincers/http/client.rb', line 28

def initialize(_session, _document={})
  @session = _session
  @document = _document
  @frozen = false
end

Instance Attribute Details

#documentObject (readonly)

Returns the value of attribute document.



25
26
27
# File 'lib/pincers/http/client.rb', line 25

def document
  @document
end

#frozenObject (readonly)

Returns the value of attribute frozen.



25
26
27
# File 'lib/pincers/http/client.rb', line 25

def frozen
  @frozen
end

#sessionObject (readonly)

Returns the value of attribute session.



25
26
27
# File 'lib/pincers/http/client.rb', line 25

def session
  @session
end

Class Method Details

.build_from_options(_options = {}) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
# 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

  client = self.new session, _options[:document]
  client.freeze if _options[:freeze]
  client
end

Instance Method Details

#absolute_uri_for(_url) ⇒ Object



90
91
92
93
94
95
96
97
# File 'lib/pincers/http/client.rb', line 90

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

#cookiesObject



42
43
44
# File 'lib/pincers/http/client.rb', line 42

def cookies
  @session.cookie_jar.cookies
end

#delete(_url, &_block) ⇒ Object



75
76
77
78
79
# File 'lib/pincers/http/client.rb', line 75

def delete(_url, &_block)
  request = build_request :delete, _url
  _block.call request unless _block.nil?
  perform_in_session request
end

#fork(_keep_session = false) ⇒ Object



81
82
83
84
# File 'lib/pincers/http/client.rb', line 81

def fork(_keep_session = false)
  fork_session = _keep_session ? @session : @session.clone
  self.class.new fork_session, @document
end

#freezeObject



34
35
36
# File 'lib/pincers/http/client.rb', line 34

def freeze
  @frozen = true
end

#get(_url, _query = nil, &_block) ⇒ Object



54
55
56
57
58
59
# File 'lib/pincers/http/client.rb', line 54

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) ⇒ Object



86
87
88
# File 'lib/pincers/http/client.rb', line 86

def join(_other_client)
  @session.sync _other_client.session
end

#post(_url, _data = nil, &_block) ⇒ Object



61
62
63
64
65
66
# File 'lib/pincers/http/client.rb', line 61

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) ⇒ Object



68
69
70
71
72
73
# File 'lib/pincers/http/client.rb', line 68

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


46
47
48
49
50
51
52
# File 'lib/pincers/http/client.rb', line 46

def set_cookie(_cookie)
  if _cookie.is_a? Hash
    _cookie = Cookie.new(_cookie[:name], _cookie[:value], _cookie[:domain], _cookie[:path])
  end

  @session.cookie_jar.set _cookie
end

#unfreezeObject



38
39
40
# File 'lib/pincers/http/client.rb', line 38

def unfreeze
  @frozen = false
end