class SmartcatSDK::REST::BaseRequest
Public Class Methods
new(*args)
click to toggle source
# File lib/smartcat_sdk/rest/base_request.rb, line 4 def initialize(*args) options = args.last.is_a?(Hash) ? args.pop : {} @config = SmartcatSDK::Util::ClientConfig.new options @user = args[0] || nil @password = args[1] || nil raise ArgumentError, 'Account ID is required' unless @user raise ArgumentError, 'API key is required' unless @password set_up_connection end
Protected Instance Methods
prepare_request(method, path, params: {}, headers: {})
click to toggle source
Prepare http request :reek: TooManyStatements { enabled: false }
# File lib/smartcat_sdk/rest/base_request.rb, line 19 def prepare_request(method, path, params: {}, headers: {}) request_path = @config.host request_path += "/api/integration/v1/#{path}" uri = URI.parse(request_path) uri.query = URI.encode_www_form(params) if %w[get delete].include?(method.to_s) request = SmartcatSDK::Util::Request.prepare(headers, method, params, uri) request.basic_auth(@user, @password) connect_and_send(request) end
Private Instance Methods
connect_and_send(request, type: :json)
click to toggle source
Send an HTTP request using the cached @http
object and return the JSON response body parsed into a hash. Also save the raw Net::HTTP::Request and Net::HTTP::Response objects as @last_request
and @last_response
to allow for inspection later. :reek: TooManyStatements { enabled: false }
# File lib/smartcat_sdk/rest/base_request.rb, line 66 def connect_and_send(request, type: :json) @last_request = request retries_left = @config.retry_limit begin response = @http.request request @last_response = response raise SmartcatSDK::REST::ServerError if response.is_a?(Net::HTTPServerError) rescue StandardError => _error raise if request.class == Net::HTTP::Post raise if retries_left <= 0 retries_left -= 1 retry end Builder.handle(type, response) end
set_up_connection()
click to toggle source
Set up and cache a Net::HTTP object to use when making requests. rubocop:disable Metrics/AbcSize rubocop:disable Metrics/MethodLength :reek: TooManyStatements { enabled: false }
# File lib/smartcat_sdk/rest/base_request.rb, line 36 def set_up_connection uri = URI.parse(@config.host) @http = Net::HTTP.new( uri.host, uri.port, @config.proxy_addr, @config.proxy_port, @config.proxy_user, @config.proxy_pass ) @http.verify_mode = OpenSSL::SSL::VERIFY_NONE @http.use_ssl = @config.use_ssl if @config.ssl_verify_peer @http.verify_mode = OpenSSL::SSL::VERIFY_PEER @http.ca_file = @config.ssl_ca_file else @http.verify_mode = OpenSSL::SSL::VERIFY_NONE end @http.open_timeout = @config.timeout @http.read_timeout = @config.timeout end