Class: Nestful::Request

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(url, options = {}) ⇒ Request

Returns a new instance of Request.



9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/nestful/request.rb', line 9

def initialize(url, options = {})
  @url     = url.to_s

  @options = options
  @options.each do |key, val|
    method = "#{key}="
    send(method, val) if respond_to?(method)
  end

  self.method  ||= :get
  self.params  ||= {}
  self.headers ||= {}
  self.format  ||= :form
end

Instance Attribute Details

#auth_typeObject

Connection options



7
8
9
# File 'lib/nestful/request.rb', line 7

def auth_type
  @auth_type
end

#bodyObject

Returns the value of attribute body.



4
5
6
# File 'lib/nestful/request.rb', line 4

def body
  @body
end

#formatObject

Returns the value of attribute format.



3
4
5
# File 'lib/nestful/request.rb', line 3

def format
  @format
end

#headersObject

Returns the value of attribute headers.



4
5
6
# File 'lib/nestful/request.rb', line 4

def headers
  @headers
end

#methodObject

Returns the value of attribute method.



4
5
6
# File 'lib/nestful/request.rb', line 4

def method
  @method
end

#optionsObject (readonly)

Returns the value of attribute options.



3
4
5
# File 'lib/nestful/request.rb', line 3

def options
  @options
end

#paramsObject

Returns the value of attribute params.



4
5
6
# File 'lib/nestful/request.rb', line 4

def params
  @params
end

#passwordObject

Connection options



7
8
9
# File 'lib/nestful/request.rb', line 7

def password
  @password
end

#proxyObject

Connection options



7
8
9
# File 'lib/nestful/request.rb', line 7

def proxy
  @proxy
end

#ssl_optionsObject

Connection options



7
8
9
# File 'lib/nestful/request.rb', line 7

def ssl_options
  @ssl_options
end

#timeoutObject

Connection options



7
8
9
# File 'lib/nestful/request.rb', line 7

def timeout
  @timeout
end

#urlObject

Returns the value of attribute url.



3
4
5
# File 'lib/nestful/request.rb', line 3

def url
  @url
end

#userObject

Connection options



7
8
9
# File 'lib/nestful/request.rb', line 7

def user
  @user
end

Instance Method Details

#executeObject



55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'lib/nestful/request.rb', line 55

def execute
  if encoded?
    result = connection.send(method, path, encoded, build_headers)
  else
    result = connection.send(method, query_path, build_headers)
  end

  Response.new(result)

rescue Redirection => error
  self.url = error.response['Location']
  execute
end

#pathObject



51
52
53
# File 'lib/nestful/request.rb', line 51

def path
  uri.path
end

#uriObject



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/nestful/request.rb', line 35

def uri
  return @uri if @uri

  url = @url.match(/\Ahttps?:\/\//) ? @url : "http://#{@url}"

  @uri = URI.parse(url)
  @uri.path = '/' if @uri.path.empty?

  if @uri.query
    @params.merge!(Helpers.from_param(@uri.query))
    @uri.query = nil
  end

  @uri
end