class Assembla::Request
A class responsible for dispatching http requests
A class responsible for dispatching http requests
Constants
- HTTP_METHODS
- METHODS_WITH_BODIES
Attributes
action[R]
Return http verb
@return [Symbol]
api[R]
Return api this request is associated with
@return [Assembla::API]
path[RW]
Return url
@return [String]
Public Class Methods
new(action, path, api)
click to toggle source
Create a new Request
@return [Assembla::Request]
@api public
# File lib/assembla_api/request.rb, line 39 def initialize(action, path, api) @action = action @path = path @api = api end
Public Instance Methods
call(current_options, params)
click to toggle source
Performs a request
@param [Symbol] method - The Symbol the HTTP verb @param [String] path - String relative URL to access @param [ParamsHash] params - ParamsHash
to configure the request API
@return [Assembla::ResponseWrapper]
@api private
# File lib/assembla_api/request.rb, line 54 def call(current_options, params) unless HTTP_METHODS.include?(action) raise ArgumentError, "unknown http method: #{method}" end puts "EXECUTED: #{action} - #{path} with PARAMS: #{params}" if ENV['DEBUG'] request_options = params.options connection_options = current_options.merge(request_options) conn = connection(api, connection_options) if conn.path_prefix != '/' && self.path.index(conn.path_prefix) != 0 self.path = (conn.path_prefix + self.path).gsub(/\/(\/)*/, '/') end response = conn.send(action) do |request| case action.to_sym when *(HTTP_METHODS - METHODS_WITH_BODIES) request.body = params.data if params.has_key?('data') if params.has_key?('encoder') request.params.params_encoder(params.encoder) end request.url(self.path, params.to_hash) when *METHODS_WITH_BODIES request.url(self.path, connection_options[:query] || {}) request.body = params.data unless params.empty? end end ResponseWrapper.new(response, api) end