module Toggl::Request

Constants

ENDPOINT

Attributes

connection_options[W]
user_agent[W]

Public Instance Methods

connection_options() click to toggle source
# File lib/toggl_api/request.rb, line 14
def connection_options
  @connection_options ||= {
    :headers => {
    :accept => 'application/json',
    :user_agent => user_agent,
    'Content-Type' => 'application/json'
    }
  }
end
user_agent() click to toggle source
# File lib/toggl_api/request.rb, line 10
def user_agent
  @user_agent ||= "Toggl Api Ruby Gem #{Toggl::VERSION}"
end

Private Instance Methods

connection() click to toggle source
# File lib/toggl_api/request.rb, line 49
def connection
  @connection ||= Faraday.new(ENDPOINT,connection_options) do |faraday|
    faraday.request :url_encoded  
    faraday.adapter Faraday.default_adapter
    faraday.basic_auth @username, @pass
  end 
end
handle_response(response) click to toggle source
# File lib/toggl_api/request.rb, line 57
def handle_response(response)
  raise_errors(response)
  data = mash(MultiJson.load(response.body))
  (data.is_a?(Hash) && data.key?('data')) ? data['data'] : data
end
make_mash_with_consistent_hash(obj) click to toggle source
# File lib/toggl_api/request.rb, line 91
def make_mash_with_consistent_hash(obj)
  m = Hashie::Mash.new(obj)
  def m.hash
    inspect.hash
  end
  return m
end
mash(obj) click to toggle source
# File lib/toggl_api/request.rb, line 81
def mash(obj)
  if obj.is_a?(Array)
    obj.map { |item| make_mash_with_consistent_hash(item) }
  elsif obj.is_a?(Hash)
    make_mash_with_consistent_hash(obj)
  else
    obj
  end
end
raise_errors(response) click to toggle source
# File lib/toggl_api/request.rb, line 63
def raise_errors(response)
  message = "(#{response.status}): #{response.body}"
  case response.status.to_i
  when 400
    raise BadRequest, message
  when 401
    raise Unauthorized, message
  when 403
    raise Forbidden, message
  when 404
    raise NotFound, message
  when 500
    raise InternalServerError, message
  when 502..503
    raise Unavailable, message
  end
end
request(method, path, params={}) click to toggle source
# File lib/toggl_api/request.rb, line 43
def request(method, path, params={})
  handle_response connection.send(method.to_sym, basic_path(path), params)
rescue Faraday::Error::ClientError
  raise TogglApi::Error
end