class Abt::Providers::Asana::Api

Constants

API_ENDPOINT
VERBS

Attributes

access_token[R]

Public Class Methods

new(access_token:) click to toggle source
# File lib/abt/providers/asana/api.rb, line 12
def initialize(access_token:)
  @access_token = access_token
end

Public Instance Methods

connection() click to toggle source
# File lib/abt/providers/asana/api.rb, line 48
def connection
  @connection ||= Faraday.new(API_ENDPOINT) do |connection|
    connection.headers["Authorization"] = "Bearer #{access_token}"
    connection.headers["Content-Type"] = "application/json"
  end
end
get_paged(path, query = {}) click to toggle source
# File lib/abt/providers/asana/api.rb, line 22
def get_paged(path, query = {})
  records = []

  loop do
    result = request(:get, path, query.merge(limit: 100))
    records += result["data"]
    break if result["next_page"].nil?

    path = result["next_page"]["path"][1..-1]
  end

  records
end
request(*args) click to toggle source
# File lib/abt/providers/asana/api.rb, line 36
def request(*args)
  response = connection.public_send(*args)

  if response.success?
    Oj.load(response.body)
  else
    error_class = Abt::HttpError.error_class_for_status(response.status)
    encoded_response_body = response.body.force_encoding("utf-8")
    raise error_class, "Code: #{response.status}, body: #{encoded_response_body}"
  end
end