module BeeswaxAPI::Request
Public Instance Methods
create(**opts, &block)
click to toggle source
# File lib/beeswaxapi/request.rb, line 11 def create(**opts, &block) opts[:method] = :post request_for(opts, &block) end
delete(**opts, &block)
click to toggle source
# File lib/beeswaxapi/request.rb, line 21 def delete(**opts, &block) opts[:method] = :delete request_for(opts, &block) end
retrieve(**opts, &block)
click to toggle source
# File lib/beeswaxapi/request.rb, line 6 def retrieve(**opts, &block) opts[:method] = :get request_for(opts, &block) end
update(**opts, &block)
click to toggle source
# File lib/beeswaxapi/request.rb, line 16 def update(**opts, &block) opts[:method] = :put request_for(opts, &block) end
Private Instance Methods
after_request_log(target_url, opts, response)
click to toggle source
TODO: improve heredoc formatting
# File lib/beeswaxapi/request.rb, line 99 def after_request_log(target_url, opts, response) <<-LOG Finish request #{opts[:method].upcase} #{target_url} with #{response.code} #{response.body} LOG end
before_request_log(target_url, opts)
click to toggle source
TODO: improve heredoc formatting
# File lib/beeswaxapi/request.rb, line 91 def before_request_log(target_url, opts) <<-LOG Start request #{opts[:method].upcase} #{target_url} #{opts[:body] if opts[:body]} LOG end
failure_response_handler(origin_response)
click to toggle source
# File lib/beeswaxapi/request.rb, line 114 def failure_response_handler(origin_response) response = Response.new(parsed_body(origin_response.body)) fail Errors::FailureResponse.new(errors: response.errors) end
parsed_body(body)
click to toggle source
# File lib/beeswaxapi/request.rb, line 106 def parsed_body(body) Yajl.load(body, symbolize_keys: true) end
request_for(**opts)
click to toggle source
# File lib/beeswaxapi/request.rb, line 28 def request_for(**opts) # TODO: better url constructor target_url = [App.config.base_uri, @path].join('/') if opts.has_key? :path target_url = [target_url, opts.delete(:path)].join('/') end case App.config.auth_strategy when 'basic' userpwd = "#{App.config.user_name}:#{App.config.password}" opts[:userpwd] = userpwd when 'cookies' cookie_file_path = App.config.cookie_file if cookie_file_path.nil? || cookie_file_path.empty? fail( Errors::MissingConfiguration, "Path to cookies is missed. Please check configuration." ) end opts = opts.merge( cookiefile: App.config.cookie_file, cookiejar: App.config.cookie_file ) else fail( Errors::MissingConfiguration, "Authencation strategy can't be missed. Please check configuration." ) end if opts.has_key? :body_params opts[:body] = Yajl.dump(opts.delete(:body_params)) end request = Typhoeus::Request.new(target_url, opts) if App.config.logger App.config.logger.info before_request_log(target_url, opts) end request.on_complete do |response| if App.config.logger App.config.logger.info after_request_log(target_url, opts, response) end if response.success? return success_response_handler(response) elsif response.timed_out? return timed_out_response_handler(response) elsif response.code >= 400 && response.code < 500 return failure_response_handler(response) elsif response.code >= 500 && response.code return failure_response_handler(response) end end request.run end
success_response_handler(origin_response)
click to toggle source
# File lib/beeswaxapi/request.rb, line 110 def success_response_handler(origin_response) Response.new(parsed_body(origin_response.body)) end
timed_out_response_handler(origin_response)
click to toggle source
# File lib/beeswaxapi/request.rb, line 119 def timed_out_response_handler(origin_response) fail Errors::TimedOutRequest.new, 'Request skipped by time out' end