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