Class: ActiveProject::Adapters::TrelloAdapter

Overview

Adapter for interacting with the Trello REST API. Implements the interface defined in ActiveProject::Adapters::Base. API Docs: developer.atlassian.com/cloud/trello/rest/

Constant Summary

Constants included from ActiveProject::Adapters::Trello::Issues

ActiveProject::Adapters::Trello::Issues::DEFAULT_FIELDS

Constants included from ActiveProject::Adapters::Trello::Connection

ActiveProject::Adapters::Trello::Connection::BASE_URL

Constants included from Connections::HttpClient

Connections::HttpClient::DEFAULT_HEADERS, Connections::HttpClient::DEFAULT_RETRY_OPTS

Instance Attribute Summary collapse

Attributes included from Connections::HttpClient

#connection, #last_response

Class Method Summary collapse

Instance Method Summary collapse

Methods included from ActiveProject::Adapters::Trello::Webhooks

#parse_webhook

Methods included from ActiveProject::Adapters::Trello::Lists

#create_list

Methods included from ActiveProject::Adapters::Trello::Comments

#add_comment, #delete_comment, #update_comment

Methods included from ActiveProject::Adapters::Trello::Issues

#create_issue, #delete_issue, #find_issue, #list_issues, #update_issue

Methods included from ActiveProject::Adapters::Trello::Projects

#create_project, #delete_project, #find_project, #list_projects

Methods included from ActiveProject::Adapters::Trello::Connection

#initialize

Methods included from Connections::Rest

#init_rest, #request_rest

Methods included from Connections::Pagination

#each_edge, #each_page

Methods included from Connections::HttpClient

#build_connection, #request

Methods included from Connections::Base

#parse_link_header

Methods inherited from Base

#add_comment, #create_issue, #create_list, #create_project, #delete_comment, #delete_issue, #delete_project, #denormalize_status, #find_issue, #find_project, #initialize, #list_issues, #list_projects, #normalize_status, #parse_webhook, #status_known?, #supports_webhooks?, #update_comment, #update_issue, #valid_statuses, #verify_webhook_signature, #webhook_type, webhook_type

Instance Attribute Details

#configObject (readonly)

Returns the value of attribute config.



27
28
29
# File 'lib/active_project/adapters/trello_adapter.rb', line 27

def config
  @config
end

Class Method Details

.compute_webhook_signature(callback_url, response_body, api_secret) ⇒ String

Computes the expected Trello webhook signature.

Parameters:

  • callback_url (String)

    The exact URL registered for the webhook.

  • response_body (String)

    The raw response body received from Trello.

  • api_secret (String)

    The Trello API Secret (OAuth Secret or Application Secret).

Returns:

  • (String)

    The Base64 encoded HMAC-SHA1 signature.



21
22
23
24
25
# File 'lib/active_project/adapters/trello_adapter.rb', line 21

def self.compute_webhook_signature(callback_url, response_body, api_secret)
  digest = OpenSSL::Digest.new("sha1")
  hmac = OpenSSL::HMAC.digest(digest, api_secret, response_body + callback_url)
  Base64.strict_encode64(hmac)
end

Instance Method Details

#connected?Boolean

Checks if the adapter can successfully authenticate and connect to the service. Calls #get_current_user internally and catches authentication errors.

Returns:

  • (Boolean)

    true if connection is successful, false otherwise.



62
63
64
65
66
67
# File 'lib/active_project/adapters/trello_adapter.rb', line 62

def connected?
  get_current_user
  true
rescue ActiveProject::AuthenticationError
  false
end

#get_current_userActiveProject::Resources::User

Retrieves details for the currently authenticated user.

Returns:

Raises:



54
55
56
57
# File 'lib/active_project/adapters/trello_adapter.rb', line 54

def get_current_user
  user_data = make_request(:get, "members/me")
  map_user_data(user_data)
end

#issuesResourceFactory<Resources::Issue>

Returns a factory for Issue resources (Cards).



46
47
48
# File 'lib/active_project/adapters/trello_adapter.rb', line 46

def issues
  ResourceFactory.new(adapter: self, resource_class: Resources::Issue)
end

#projectsResourceFactory<Resources::Project>

Returns a factory for Project resources.



40
41
42
# File 'lib/active_project/adapters/trello_adapter.rb', line 40

def projects
  ResourceFactory.new(adapter: self, resource_class: Resources::Project)
end