class Asana::Client

Public: A client to interact with the Asana API. It exposes all the available resources of the Asana API in idiomatic Ruby.

Examples

# Authentication with a personal access token
Asana::Client.new do |client|
  client.authentication :access_token, '...'
end

# OAuth2 with a plain bearer token (doesn't support auto-refresh)
Asana::Client.new do |client|
  client.authentication :oauth2, bearer_token: '...'
end

# OAuth2 with a plain refresh token and client credentials
Asana::Client.new do |client|
  client.authentication :oauth2,
                        refresh_token: '...',
                        client_id: '...',
                        client_secret: '...',
                        redirect_uri: '...'
end

# OAuth2 with an ::OAuth2::AccessToken object
Asana::Client.new do |client|
  client.authentication :oauth2, my_oauth2_access_token_object
end

# Use a custom Faraday network adapter
Asana::Client.new do |client|
  client.authentication ...
  client.adapter :typhoeus
end

# Use a custom user agent string
Asana::Client.new do |client|
  client.authentication ...
  client.user_agent '...'
end

# Pass in custom configuration to the Faraday connection
Asana::Client.new do |client|
  client.authentication ...
  client.configure_faraday { |conn| conn.use MyMiddleware }
end

Public Class Methods

new() { |c| ... } click to toggle source

Public: Initializes a new client.

Yields a {Asana::Client::Configuration} object as a configuration DSL. See {Asana::Client} for usage examples.

# File lib/asana/client.rb, line 75
def initialize
  config = Configuration.new.tap { |c| yield c }.to_h
  @http_client =
    HttpClient.new(authentication: config.fetch(:authentication),
                   adapter:        config[:faraday_adapter],
                   user_agent:     config[:user_agent],
                   debug_mode:     config[:debug_mode],
                   &config[:faraday_config])
end

Public Instance Methods

delete(url, *args) click to toggle source

Public: Performs a DELETE request against an arbitrary Asana URL. Allows for the user to interact with the API in ways that haven't been reflected/foreseen in this library.

# File lib/asana/client.rb, line 109
def delete(url, *args)
  @http_client.delete(url, *args)
end
get(url, *args) click to toggle source

Public: Performs a GET request against an arbitrary Asana URL. Allows for the user to interact with the API in ways that haven't been reflected/foreseen in this library.

# File lib/asana/client.rb, line 88
def get(url, *args)
  @http_client.get(url, *args)
end
post(url, *args) click to toggle source

Public: Performs a POST request against an arbitrary Asana URL. Allows for the user to interact with the API in ways that haven't been reflected/foreseen in this library.

# File lib/asana/client.rb, line 95
def post(url, *args)
  @http_client.post(url, *args)
end
put(url, *args) click to toggle source

Public: Performs a PUT request against an arbitrary Asana URL. Allows for the user to interact with the API in ways that haven't been reflected/foreseen in this library.

# File lib/asana/client.rb, line 102
def put(url, *args)
  @http_client.put(url, *args)
end