class TogglAPI::Client

The Toggl API Client

Constants

API_URL

Public Instance Methods

get_project_tasks(project_id:) click to toggle source
# File lib/toggl_api/client.rb, line 30
def get_project_tasks(project_id:)
  perform_request(
    url: "#{API_URL}/projects/#{project_id}/tasks"
  ) || []
end
get_workspace_projects(workspace_id: default_workspace_id, active: "true") click to toggle source

Get the projects from the specified workspace.

# File lib/toggl_api/client.rb, line 23
def get_workspace_projects(workspace_id: default_workspace_id, active: "true")
  perform_request(
    url: "#{API_URL}/workspaces/#{workspace_id}/projects",
    query: { active: active }
  )
end
update_time_entry(id:, time_entry:) click to toggle source

Update the Toggl time entry with the specified `ìd` using the provided `time_entry` data.

# File lib/toggl_api/client.rb, line 14
def update_time_entry(id:, time_entry:)
  perform_request(
    verb: :put,
    url: "#{API_URL}/time_entries/#{id}",
    body: { time_entry: time_entry }
  )["data"]
end

Private Instance Methods

perform_request(verb: :get, url:, headers: default_headers, query: {}, body: {}) click to toggle source
# File lib/toggl_api/client.rb, line 38
def perform_request(verb: :get, url:, headers: default_headers, query: {}, body: {})
  response = HTTParty.send(
    verb,
    url,
    headers: headers,
    query: { user_agent: default_user_agent }.merge(query),
    body: body.to_json,
    basic_auth: credentials
  )

  begin
    if response.code == 200 || response.code == 201
      return nil if response.body == 'null'
      JSON.parse(response.body)
    else
      logger.error "Error (response code #{response.code}, content '#{response.body.strip}')"
      nil
    end
  # rescue => e
    # TODO: fix this too large rescue
    # logger.error "Exception (#{e})"
  end
end