class HelpScout::API

Constants

BASE_URL

Attributes

access_token[RW]

Public Instance Methods

get(path, params = {}) click to toggle source
# File lib/help_scout/api.rb, line 15
def get(path, params = {})
  send_request(:get, path, params)
end
patch(path, params) click to toggle source
# File lib/help_scout/api.rb, line 19
def patch(path, params)
  send_request(:patch, path, params)
end
post(path, params) click to toggle source
# File lib/help_scout/api.rb, line 23
def post(path, params)
  send_request(:post, path, params)
end
put(path, params) click to toggle source
# File lib/help_scout/api.rb, line 27
def put(path, params)
  send_request(:put, path, params)
end

Private Instance Methods

handle_response(result) click to toggle source
# File lib/help_scout/api.rb, line 33
def handle_response(result) # rubocop:disable AbcSize, Metrics/MethodLength
  if (200...300).include? result.status
    HelpScout::Response.new(result)
  else
    case result.status
    when 400 then raise BadRequest, result.body&.dig('validationErrors')
    when 401 then raise NotAuthorized, result.body&.dig('error_description')
    when 404 then raise NotFound, 'Resource Not Found'
    when 429 then raise ThrottleLimitReached, result.body&.dig('error')
    else raise InternalError, result.body
    end
  end
end
new_connection() click to toggle source
# File lib/help_scout/api.rb, line 47
def new_connection
  HelpScout::API::Client.new.connection
end
send_request(action, path, params) click to toggle source
# File lib/help_scout/api.rb, line 51
def send_request(action, path, params)
  response = new_connection.send(action, path, params.compact)

  if response.status == 401
    access_token&.invalidate!
    response = new_connection.send(action, path, params.compact)
  end

  handle_response(response)
end