class TimeLogRobot::Toggl::Report

Public Class Methods

fetch(since: nil) click to toggle source
# File lib/time_log_robot/toggl/report.rb, line 10
def fetch(since: nil)
  since = since_or_default(since)
  response = get('/details', basic_auth: auth, query: query(since))
  if response.success?
    pages = number_of_pages(response['total_count'])
    aggregate_entries(response['data'], pages, since)
  else
    raise FetchError, response['error']
  end
end
since_or_default(since) click to toggle source
# File lib/time_log_robot/toggl/report.rb, line 22
def since_or_default(since)
  since || default_since
end

Private Class Methods

aggregate_entries(entries, pages, since) click to toggle source
# File lib/time_log_robot/toggl/report.rb, line 44
def aggregate_entries(entries, pages, since)
  2.upto(pages) do |page|
    entries += get_entries_from_next_page(since, page)
  end
  { service: 'Toggl', entries: entries }
end
auth() click to toggle source
# File lib/time_log_robot/toggl/report.rb, line 64
def auth
  {
    username: token,
    password: "api_token"
  }
end
default_since() click to toggle source
# File lib/time_log_robot/toggl/report.rb, line 28
def default_since
  # DAYNAMES structure:
  #  ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]
  # Therefore saturday index is 6, calculate it anyways incase it changes
  saturday_index = Date::DAYNAMES.index("Saturday")
  today_index = Date.today.wday

  # Return today if it is Saturday (this is what the previous
  # implementation would do)
  return Date.today.to_time if today_index == saturday_index

  # Otherwise, subtract the index + 1 (to account
  # for indecies starting at 0)
  (Date.today - (today_index + 1)).to_time
end
get_entries_from_next_page(since, page) click to toggle source
# File lib/time_log_robot/toggl/report.rb, line 51
def get_entries_from_next_page(since, page)
  built_query = query(since).merge(page: page)
  response = get('/details', basic_auth: auth, query: built_query)
  response['data']
end
number_of_pages(count) click to toggle source
# File lib/time_log_robot/toggl/report.rb, line 57
def number_of_pages(count)
  remaining_entries = count % 50
  pages = count / 50
  pages += 1 if remaining_entries > 0
  return pages
end
query(since) click to toggle source
# File lib/time_log_robot/toggl/report.rb, line 83
def query(since)
  {
    workspace_id: workspace_id,
    user_agent: user_agent,
    since: since
  }
end
token() click to toggle source
# File lib/time_log_robot/toggl/report.rb, line 71
def token
  ENV['TOGGL_TOKEN']
end
user_agent() click to toggle source
# File lib/time_log_robot/toggl/report.rb, line 79
def user_agent
  ENV['TOGGL_USER_AGENT']
end
workspace_id() click to toggle source
# File lib/time_log_robot/toggl/report.rb, line 75
def workspace_id
  ENV['TOGGL_WORKSPACE_ID']
end