Class: Nestful::Request

Inherits:
Object
  • Object
show all
Includes:
Callbacks
Defined in:
lib/nestful/oauth.rb,
lib/nestful/request.rb,
lib/nestful/request.rb,
lib/nestful/request/callbacks.rb

Defined Under Namespace

Modules: Callbacks

Constant Summary

Constants included from Callbacks

Callbacks::CALLBACKS

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Callbacks

included

Constructor Details

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

Returns a new instance of Request.



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

def initialize(url, options = {})
  @url     = url.to_s
  @options = options
  @options.each {|key, val| 
    method = "#{key}="
    send(method, val) if respond_to?(method)
  }
  self.method  ||= :get
  self.format  ||= :blank
  self.headers ||= {}
  self.params  ||= {}
  self.body    ||= ''
  
  if self.uri.query
    populate_query_params
  end
end

Instance Attribute Details

#auth_typeObject

Connection options



13
14
15
# File 'lib/nestful/request.rb', line 13

def auth_type
  @auth_type
end

#bodyObject

Returns the value of attribute body.



10
11
12
# File 'lib/nestful/request.rb', line 10

def body
  @body
end

#bufferObject

Returns the value of attribute buffer.



10
11
12
# File 'lib/nestful/request.rb', line 10

def buffer
  @buffer
end

#callbacks=(value) ⇒ Object

Sets the attribute callbacks

Parameters:

  • value

    the value to set the attribute callbacks to.



10
11
12
# File 'lib/nestful/request.rb', line 10

def callbacks=(value)
  @callbacks = value
end

#formatObject

Returns the value of attribute format.



9
10
11
# File 'lib/nestful/request.rb', line 9

def format
  @format
end

#headersObject

Returns the value of attribute headers.



10
11
12
# File 'lib/nestful/request.rb', line 10

def headers
  @headers
end

#methodObject

Returns the value of attribute method.



10
11
12
# File 'lib/nestful/request.rb', line 10

def method
  @method
end

#oauthObject

Returns the value of attribute oauth.



5
6
7
# File 'lib/nestful/oauth.rb', line 5

def oauth
  @oauth
end

#optionsObject (readonly)

Returns the value of attribute options.



9
10
11
# File 'lib/nestful/request.rb', line 9

def options
  @options
end

#paramsObject

Returns the value of attribute params.



10
11
12
# File 'lib/nestful/request.rb', line 10

def params
  @params
end

#passwordObject

Connection options



13
14
15
# File 'lib/nestful/request.rb', line 13

def password
  @password
end

#proxyObject

Connection options



13
14
15
# File 'lib/nestful/request.rb', line 13

def proxy
  @proxy
end

#ssl_optionsObject

Connection options



13
14
15
# File 'lib/nestful/request.rb', line 13

def ssl_options
  @ssl_options
end

#timeoutObject

Connection options



13
14
15
# File 'lib/nestful/request.rb', line 13

def timeout
  @timeout
end

#urlObject (readonly)

Returns the value of attribute url.



9
10
11
# File 'lib/nestful/request.rb', line 9

def url
  @url
end

#userObject

Connection options



13
14
15
# File 'lib/nestful/request.rb', line 13

def user
  @user
end

Class Method Details

.callbacks(type = nil) ⇒ Object

:nodoc:



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

def self.callbacks(type = nil) #:nodoc:
  @callbacks ||= {}
  return @callbacks unless type
  @callbacks[type] ||= []
end

Instance Method Details

#connectionObject



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

def connection
  conn              = Connection.new(uri, format)
  conn.proxy        = proxy if proxy
  conn.user         = user if user
  conn.password     = password if password
  conn.auth_type    = auth_type if auth_type
  conn.timeout      = timeout if timeout
  conn.ssl_options  = ssl_options if ssl_options
  conn
end

#executeObject



72
73
74
75
76
77
78
79
80
81
82
# File 'lib/nestful/request.rb', line 72

def execute
  callback(:before_request, self)
  result = nil
  if [:post, :put].include?(method)
    connection.send(method, path, encoded, headers) {|res| result = decoded(res) }
  else
    connection.send(method, query_path, headers) {|res| result = decoded(res) }
  end
  callback(:after_request, self, result)
  result
end

#oauth_signObject



7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/nestful/oauth.rb', line 7

def oauth_sign
  return unless oauth
  params = method == :get ? self.params : {}

  signature = ROAuth.header(
    oauth, 
    uri.to_s, 
    params, 
    method
  )

  self.headers ||= {}
  self.headers["Authorization"] = signature
end

#pathObject



59
60
61
# File 'lib/nestful/request.rb', line 59

def path
  uri.path
end

#query_pathObject



63
64
65
66
67
68
69
70
# File 'lib/nestful/request.rb', line 63

def query_path
  query_path = path
  if params.any?
    query_path += "?"
    query_path += params.to_param
  end
  query_path
end

#uriObject



49
50
51
52
53
54
55
56
57
# File 'lib/nestful/request.rb', line 49

def uri
  http_url = url.match(/^http/) ? url : "http://#{url}"
  uri      = URI.parse(http_url)
  uri.path = "/" if uri.path.empty?
  if format && format.extension && !uri.path.match(/\..+/)
    uri.path += ".#{format.extension}" 
  end      
  uri
end