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.



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

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

Instance Attribute Details

#documentObject (readonly)

Returns the value of attribute document.



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

def document
  @document
end

#frozenObject (readonly)

Returns the value of attribute frozen.



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

def frozen
  @frozen
end

#sessionObject (readonly)

Returns the value of attribute session.



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

def session
  @session
end

Class Method Details

.build_from_options(_options = {}) ⇒ Object



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

Instance Method Details

#absolute_uri_for(_url) ⇒ Object



95
96
97
98
99
100
101
102
# 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

#cookiesObject



47
48
49
# File 'lib/pincers/http/client.rb', line 47

def cookies
  @session.cookie_jar.cookies
end

#delete(_url, &_block) ⇒ Object



80
81
82
83
84
# 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) ⇒ Object



86
87
88
89
# 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

#freezeObject



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

def freeze
  @frozen = true
end

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



59
60
61
62
63
64
# 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) ⇒ Object



91
92
93
# File 'lib/pincers/http/client.rb', line 91

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

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



66
67
68
69
70
71
# 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) ⇒ Object



73
74
75
76
77
78
# 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


51
52
53
54
55
56
57
# File 'lib/pincers/http/client.rb', line 51

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



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

def unfreeze
  @frozen = false
end