class DearInventory::Request
Constants
- ERROR_MESSAGE_PREFIXES
- MAX_RETRIES
- RETRY_DELAY
Public Class Methods
call(parameters, num_previous_records: 0)
click to toggle source
# File lib/dear_inventory/lib/request.rb, line 14 def self.call(parameters, num_previous_records: 0) new(parameters, num_previous_records: num_previous_records).call end
new(parameters, num_previous_records: 0)
click to toggle source
# File lib/dear_inventory/lib/request.rb, line 24 def initialize(parameters, num_previous_records: 0) @parameters = T.let(parameters, DearInventory::Models::Request) @num_previous_records = T.let(num_previous_records, Integer) @retries = T.let(0, Integer) end
Public Instance Methods
call()
click to toggle source
# File lib/dear_inventory/lib/request.rb, line 31 def call options = request_params(@parameters.action, @parameters.params) response = HTTP.headers(headers). public_send(@parameters.action, @parameters.uri, options) DearInventory::Response.new( response: response, request: @parameters, num_previous_records: @num_previous_records ) rescue DearInventory::APILimitError, HTTP::ConnectionError => e retry_request(e) end
Private Instance Methods
headers()
click to toggle source
# File lib/dear_inventory/lib/request.rb, line 48 def headers { "Content-Type": "application/json", "api-auth-accountid": DearInventory.config.require(:account_id), "api-auth-applicationkey": DearInventory.config.require(:key), } end
request_params(action, params)
click to toggle source
# File lib/dear_inventory/lib/request.rb, line 60 def request_params(action, params) if action == :get { params: params.to_h } else { json: params.to_h } end end
retry_request(error)
click to toggle source
# File lib/dear_inventory/lib/request.rb, line 79 def retry_request(error) @retries += 1 raise if @retries >= MAX_RETRIES message_prefix = ERROR_MESSAGE_PREFIXES[error.class] retry_time = @retries * RETRY_DELAY DearInventory.config.logger.warn( "#{message_prefix} while fetching #{@parameters.uri}. " \ "The request will be tried again in #{retry_time} seconds" ) sleep(retry_time) call end