Class: Juknife::Agent

Inherits:
Object
  • Object
show all
Defined in:
lib/juknife/agent.rb

Overview

The agent to execute request and scraping to web page.

Class Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Class Attribute Details

.request_dslObject (readonly)

Returns the value of attribute request_dsl.



33
34
35
# File 'lib/juknife/agent.rb', line 33

def request_dsl
  @request_dsl
end

.scraping_dslObject (readonly)

Returns the value of attribute scraping_dsl.



33
34
35
# File 'lib/juknife/agent.rb', line 33

def scraping_dsl
  @scraping_dsl
end

Class Method Details

.request(&block) ⇒ Object



35
36
37
# File 'lib/juknife/agent.rb', line 35

def request(&block)
  @request_dsl = block
end

.scraping(&block) ⇒ Object



39
40
41
# File 'lib/juknife/agent.rb', line 39

def scraping(&block)
  @scraping_dsl = block
end

Instance Method Details

#connection(params) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/juknife/agent.rb', line 16

def connection(params)
  @connection ||= Faraday.new do |b|
    # request middlewares
    b.use Middleware::RequestDSL, params, &self.class.request_dsl
    b.use Faraday::Request::UrlEncoded

    # response middlewares
    b.use Middleware::ScrapingDSL, params, &self.class.scraping_dsl
    b.use Middleware::HTMLParser
    b.use Middleware::HTTPErrorHandler
    b.use FaradayMiddleware::FollowRedirects

    b.adapter :net_http
  end
end

#response(params) ⇒ Object



12
13
14
# File 'lib/juknife/agent.rb', line 12

def response(params)
  connection(params).get
end

#scrape(params = {}) ⇒ Object



8
9
10
# File 'lib/juknife/agent.rb', line 8

def scrape(params = {})
  response(params).body
end