Class: Facile::Request

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

Defined Under Namespace

Classes: RequestError

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}, &block) ⇒ Request

Returns a new instance of Request.



15
16
17
18
19
20
21
22
23
# File 'lib/facile/request.rb', line 15

def initialize(options = {}, &block)
  options.merge!({ :method => :get }) unless options.has_key?(:method)

  options.each do |k, v|
    self.send("#{k}=", v) if respond_to?("#{k}=")
  end

  instance_eval(&block) if block_given?
end

Instance Attribute Details

#bodyObject

Returns the value of attribute body.



53
54
55
# File 'lib/facile/request.rb', line 53

def body
  @body
end

#headersObject

Returns the value of attribute headers.



53
54
55
# File 'lib/facile/request.rb', line 53

def headers
  @headers
end

#methodObject

Returns the value of attribute method.



53
54
55
# File 'lib/facile/request.rb', line 53

def method
  @method
end

#optionsObject

Returns the value of attribute options.



53
54
55
# File 'lib/facile/request.rb', line 53

def options
  @options
end

#paramsObject

Returns the value of attribute params.



53
54
55
# File 'lib/facile/request.rb', line 53

def params
  @params
end

#urlObject

Returns the value of attribute url.



53
54
55
# File 'lib/facile/request.rb', line 53

def url
  @url
end

Class Method Details

.method_missing(method, *args, &block) ⇒ Object

Raises:

  • (NoMethodError)


4
5
6
7
8
9
10
11
12
13
# File 'lib/facile/request.rb', line 4

def self.method_missing(method, *args, &block)
  supported_methods = [:get, :post, :delete, :options, :patch, :put]

  raise NoMethodError, "undefined method '#{method}'" if !supported_methods.include?(method)

  args = args.count == 0 ? {} : args
  args.merge!({:method => method || :get })

  new(args, &block).go
end

Instance Method Details

#goObject



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/facile/request.rb', line 25

def go
  begin
    conn = Faraday.new(options || {})

    res = conn.send(method) do |req|
      req.url url

      headers.map { |k,v| req.headers[k] = v } if !headers.nil?
      params.map { |k,v| req.params[k] = v } if !params.nil?
      req.body = body if !body.nil?
    end
  rescue => e
    raise e
  end

  parse_response(res)
end

#parse_response(res) ⇒ Object



43
44
45
46
47
48
49
50
51
# File 'lib/facile/request.rb', line 43

def parse_response(res)
  ::Facile::Response.new({
    :request => self,
    :response => res,
    :status => res.status,
    :headers => res.headers,
    :raw_body => res.body,
  })
end