Class: Pincers::Chenso::HtmlPageRequest

Inherits:
Object
  • Object
show all
Defined in:
lib/pincers/chenso/html_page_request.rb

Direct Known Subclasses

HtmlFormRequest

Constant Summary collapse

DEFAULT_HEADERS =
{
  'Accept' => 'text/html,application/xhtml+xml,application/xml',
  'Cache-Control' => 'no-cache'
}

Instance Method Summary collapse

Constructor Details

#initialize(_url, _method = :get, _data = nil, _encoding = nil) ⇒ HtmlPageRequest

Returns a new instance of HtmlPageRequest.



12
13
14
15
16
17
# File 'lib/pincers/chenso/html_page_request.rb', line 12

def initialize(_url, _method=:get, _data=nil, _encoding=nil)
  @url =  _url
  @method = _method
  @data = _data
  @encoding = _encoding
end

Instance Method Details

#execute(_client) ⇒ Object



35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/pincers/chenso/html_page_request.rb', line 35

def execute(_client)
  response = begin
    _client.send(@method, @uri) do |request|
      request.headers.merge DEFAULT_HEADERS
      request.set_form_data(@data, @encoding) unless @data.nil?
    end

    _client
  rescue Pincers::Http::RequestError => exc
    exc
  end

  BrowsingState.new response.uri, ::Nokogiri::HTML(response.content)
end

#fix_uri(_current_state) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/pincers/chenso/html_page_request.rb', line 19

def fix_uri(_current_state)
  @uri = Pincers::Http::Utils.parse_uri @url
  if _current_state
    base = _current_state.document.at_css 'base'
    base = if base and base[:href]
      URI.join _current_state.uri, base[:href]
    else
      _current_state.uri
    end

    @uri = URI.join(base, @uri)
  elsif @uri.relative?
    raise ArgumentError, 'Absolute uri required'
  end
end