module Locomotive::Coal::Resources::Concerns::Request

Public Instance Methods

delete(endpoint, parameters = {}, raw = false) click to toggle source
# File lib/locomotive/coal/resources/concerns/request.rb, line 18
def delete(endpoint, parameters = {}, raw = false)
  do_request :delete, endpoint, parameters, raw
end
do_request(action, endpoint, parameters = {}, raw = false) click to toggle source
# File lib/locomotive/coal/resources/concerns/request.rb, line 22
def do_request(action, endpoint, parameters = {}, raw = false)
  max_count = 5
  response = begin
    # Just uncomment following line if you want to trace protocol between wagon & engine live
    # puts "#{parameters}"
    _do_request(action, "#{uri.path}/#{endpoint}.json", parameters)
  rescue ::Timeout::Error, ::Errno::ETIMEDOUT, Faraday::Error::TimeoutError => e
    if max_count > 0
      puts "\n Warning => timeout detected, attempts left: #{max_count}\n\n"
      max_count -= 1
      retry
    else
      raise Locomotive::Coal::TimeoutError.new(e)
    end
  rescue HTTPClient::KeepAliveDisconnected => e
    if max_count > 0
      puts "\n Warning => HTTPClient::KeepAliveDisconnected exception detected, attempts left: #{max_count}\n\n"
      max_count -= 1
      retry
    else
      puts "\n Error => HTTPClient::KeepAliveDisconnected exception detected, attempts left zero... raising exception\n\n"
      raise HTTPClient::KeepAliveDisconnected.new(e)
    end
  rescue Locomotive::Coal::Error
    raise
  rescue Exception => e
    raise Locomotive::Coal::BadRequestError.new(e)
  end

  if response.success?
    raw ? response : response.body
  else
    raise Locomotive::Coal::Error.from_response(response)
  end
end
get(endpoint, parameters = {}, raw = false) click to toggle source
# File lib/locomotive/coal/resources/concerns/request.rb, line 6
def get(endpoint, parameters = {}, raw = false)
  do_request :get, endpoint, parameters, raw
end
post(endpoint, parameters = {}, raw = false) click to toggle source
# File lib/locomotive/coal/resources/concerns/request.rb, line 10
def post(endpoint, parameters = {}, raw = false)
  do_request :post, endpoint, parameters, raw
end
put(endpoint, parameters = {}, raw = false) click to toggle source
# File lib/locomotive/coal/resources/concerns/request.rb, line 14
def put(endpoint, parameters = {}, raw = false)
  do_request :put, endpoint, parameters, raw
end
without_authentication() { || ... } click to toggle source
# File lib/locomotive/coal/resources/concerns/request.rb, line 58
def without_authentication(&block)
  @without_token = true
  yield.tap do
    @without_token = false
  end