Sha256: 0a2e4578bed3a8b7b30067a79e7962e3d49182b8a1918a7c1f3c653c76d42df1

Contents?: true

Size: 1.63 KB

Versions: 4

Compression:

Stored size: 1.63 KB

Contents

# frozen_string_literal: true
require "uri"
require "httparty"
require "toggl_api/base_client"

module TogglAPI

  # The Toggl API Client
  class Client < BaseClient
    API_URL = "https://www.toggl.com/api/v8"

    # Update the Toggl time entry with the specified `ìd` using
    # the provided `time_entry` data.
    def update_time_entry(id:, time_entry:)
      perform_request(
        verb: :put,
        url: "#{API_URL}/time_entries/#{id}",
        body: { time_entry: time_entry }
      )["data"]
    end

    # Get the projects from the specified workspace.
    def get_workspace_projects(workspace_id: default_workspace_id, active: "true")
      perform_request(
        url: "#{API_URL}/workspaces/#{workspace_id}/projects",
        query: { active: active }
      )
    end

    def get_project_tasks(project_id:)
      perform_request(
        url: "#{API_URL}/projects/#{project_id}/tasks"
      ) || []
    end

    private

    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
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
toggl_cache-0.2.1 lib/toggl_api/client.rb
toggl_cache-0.2.0 lib/toggl_api/client.rb
toggl_cache-0.1.1 lib/toggl_api/client.rb
toggl_cache-0.1.0 lib/toggl_api/client.rb