class Toggl::Reports::Base

Public Class Methods

new(connection, workspace_id, from, to) click to toggle source
# File lib/toggl/reports/base.rb, line 12
def initialize(connection, workspace_id, from, to)
  @connection = connection
  @workspace_id = workspace_id
  @from = from
  @to = to
end
path() click to toggle source
# File lib/toggl/reports/base.rb, line 7
def path
  raise 'Subclass Responsibility'
end

Public Instance Methods

get() click to toggle source
# File lib/toggl/reports/base.rb, line 19
def get
  @response ||= @connection.get(
    self.class.path,
    :workspace_id => @workspace_id,
    :user_agent => 'toggl-reports',
    :since => @from,
    :until => @to
  )
end
hours(time) click to toggle source
# File lib/toggl/reports/base.rb, line 40
def hours(time)
  whole, fraction = (time/3600000.0).divmod(1)
  "%s:%s" % [whole, (fraction * 60).to_i]
end
inspect() click to toggle source
# File lib/toggl/reports/base.rb, line 59
def inspect
  ap projects
end
projects() click to toggle source
# File lib/toggl/reports/base.rb, line 29
def projects
  get['data'].map do |item|
    OpenStruct.new(
      name: item['title']['project'],
      total_time: seconds(item['time']),
      total_time_display: hours(item['time']),
      entries: time_entries(item['items'])
    )
  end
end
seconds(time) click to toggle source
# File lib/toggl/reports/base.rb, line 45
def seconds(time)
  (BigDecimal.new(time) / 1000).to_i
end
time_entries(items) click to toggle source
# File lib/toggl/reports/base.rb, line 49
def time_entries(items)
  items.map do |item|
    OpenStruct.new(
      title: item['title']['time_entry'],
      time: seconds(item['time']),
      time_display: hours(item['time']),
    )
  end
end