class Github::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 [Github::API]
path[RW]
Return url
@return [String]
Public Class Methods
new(action, path, api)
click to toggle source
Create a new Request
@return [Github::Request]
@api public
# File lib/github_api/request.rb, line 38 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 current_options [Hash] @param [ParamsHash] params - ParamsHash
to configure the request API
@return [Github::ResponseWrapper]
@api private
# File lib/github_api/request.rb, line 52 def call(current_options, params) unless HTTP_METHODS.include?(action) raise ArgumentError, "unknown http method: #{action}" end puts "EXECUTED: #{action} - #{path} with PARAMS: #{params.request_params}" if ENV['DEBUG'] request_options = params.options connection_options = current_options.merge(request_options) conn = connection(api, connection_options) self.path = Utils::Url.normalize(self.path) 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.key?('data') if params.key?('encoder') request.params.params_encoder(params.encoder) end request.url(self.path, params.request_params) 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