Class: Hookkaido::Request

Inherits:
Object
  • Object
show all
Defined in:
lib/hookkaido/request.rb

Instance Method Summary collapse

Constructor Details

#initialize(url:, verbose: false, headers: {}, timeout: 10) ⇒ Request

Returns a new instance of Request.



9
10
11
12
13
14
# File 'lib/hookkaido/request.rb', line 9

def initialize(url:, verbose: false, headers: {}, timeout: 10)
  @url = url
  @verbose = verbose
  @headers = headers
  @timeout = timeout
end

Instance Method Details

#perform(endpoint, params: {}, method: :get) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/hookkaido/request.rb', line 16

def perform(endpoint, params: {}, method: :get)
  Faraday::Utils.default_space_encoding = '+'
  conn = Faraday.new(url: @url) do |f|
    f.request :url_encoded
    f.response :follow_redirects
    f.response :logger if @verbose
    f.options.timeout = @timeout
    f.use Faraday::TwOntologyErrors::Middleware
    f.adapter Faraday.default_adapter
  end

  conn.headers['Accept'] = 'application/json,*/*'
  conn.headers[:user_agent] = make_user_agent
  conn.headers['X-USER-AGENT'] = make_user_agent
  @headers.each { |k, v| conn.headers[k] = v }
  res = case method
        when :get  then conn.get(endpoint, params)
        when :post then conn.post(endpoint, params)
        else raise ArgumentError, "Unsupported method: #{method}"
        end

  MultiJson.load(res.body)
end