class TogglAPI::ReportsClient
The Toggl API Client
Constants
- API_URL
Public Instance Methods
fetch_reports(params) { |results_raw| ... }
click to toggle source
@param params [Hash]: Toggl API params
- since - until - workspace_id - ... more params available, see Toggl API documentation for details
# File lib/toggl_api/reports_client.rb, line 17 def fetch_reports(params) raise "Must give a block" unless block_given? page = 1 current_total = 0 loop do results_raw = fetch_reports_details_raw( params.merge(page: page) ) yield(results_raw["data"]) current_total += results_raw["data"].count break if current_total == results_raw["total_count"] page += 1 end end
fetch_reports_details_raw(params)
click to toggle source
# File lib/toggl_api/reports_client.rb, line 33 def fetch_reports_details_raw(params) fetch_reports_raw(api_url(:details), params) end
fetch_reports_summary_raw(params)
click to toggle source
# File lib/toggl_api/reports_client.rb, line 37 def fetch_reports_summary_raw(params) fetch_reports_raw(api_url(:summary), params) end
Private Instance Methods
api_url(resource)
click to toggle source
# File lib/toggl_api/reports_client.rb, line 77 def api_url(resource) "#{API_URL}/#{resource}" end
credentials()
click to toggle source
# File lib/toggl_api/reports_client.rb, line 62 def credentials { username: @api_token, password: "api_token" } end
fetch_reports_raw(url, params)
click to toggle source
@param url [String] @param params [Hash]: Toggl API params
# File lib/toggl_api/reports_client.rb, line 45 def fetch_reports_raw(url, params) logger.info "Fetching Toggl reports for params #{params}" if logger params = { user_agent: @user_agent }.merge(params) response = HTTParty.get( url, headers: headers, query: params, basic_auth: credentials ) handle_response(response) end
handle_response(response)
click to toggle source
# File lib/toggl_api/reports_client.rb, line 69 def handle_response(response) if response.code == 200 || response.code == 201 JSON.parse(response.body) else fail(Error, "Toggl API error #{response.code}: #{response.body}") end end
headers()
click to toggle source
# File lib/toggl_api/reports_client.rb, line 58 def headers { "Content-Type" => "application/json" } end