Module: ActiveProject::Adapters::Fizzy::Connection

Includes:
Connections::Rest
Included in:
ActiveProject::Adapters::FizzyAdapter
Defined in:
lib/active_project/adapters/fizzy/connection.rb

Constant Summary collapse

DEFAULT_BASE_URL =
"https://app.fizzy.do"

Constants included from Connections::HttpClient

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

Instance Attribute Summary

Attributes included from Connections::HttpClient

#connection, #last_response

Instance Method Summary collapse

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

Instance Method Details

#initialize(config:) ⇒ Object

Initializes the Fizzy Adapter.

Parameters:

Raises:

  • (ArgumentError)

    if required configuration options are missing.



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/active_project/adapters/fizzy/connection.rb', line 14

def initialize(config:)
  unless config.is_a?(ActiveProject::Configurations::FizzyConfiguration)
    raise ArgumentError, "FizzyAdapter requires a FizzyConfiguration object"
  end

  super(config: config)

   = @config.options.fetch(:account_slug)
  access_token = @config.options.fetch(:access_token)
  base_url = @config.options[:base_url] || DEFAULT_BASE_URL

  # Fizzy uses account_slug in URL path: /:account_slug/boards, etc.
  @base_url = "#{base_url}/#{account_slug}/"

  init_rest(
    base_url: @base_url,
    auth_middleware: ->(conn) { conn.request :authorization, "Bearer", access_token },
    extra_headers: { "Accept" => "application/json", "Content-Type" => "application/json" }
  )

  return if  && !.to_s.empty? && access_token && !access_token.empty?

  raise ArgumentError, "FizzyAdapter configuration requires :account_slug and :access_token"
end