Class: Trellodon::APIExecutor

Inherits:
Object
  • Object
show all
Defined in:
lib/trellodon/api_executor.rb

Instance Method Summary collapse

Constructor Details

#initialize(api_key:, api_token:, scheduler:, formatter:, logger: Config.logger) ⇒ APIExecutor

Returns a new instance of APIExecutor.



11
12
13
14
15
16
17
18
19
20
# File 'lib/trellodon/api_executor.rb', line 11

def initialize(api_key:, api_token:, scheduler:, formatter:, logger: Config.logger)
  @api_key = api_key
  @api_token = api_token
  @formatter = formatter
  @logger = logger
  @scheduler = scheduler
  check_credentials!

  @api_client = APIClient.new(api_key: @api_key, api_token: @api_token)
end

Instance Method Details

#download(board_pointer) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/trellodon/api_executor.rb', line 22

def download(board_pointer)
  extract_board_id(board_pointer)

  startup_time = Time.now
  logger.debug "Fetching board 🚀️️"
  board = scheduler.post do
    api_client.fetch_board(board_id).tap { formatter.board_added(_1) }
  end.value

  logger.debug "Fetching cards in board with comments and attachments 🐢"
  board.card_ids.map do |card_id|
    scheduler.post do
      api_client.fetch_card(card_id).tap { formatter.card_added(_1) }
    end
  end.map(&:value)

  formatter.finish
  logger.debug "All Trello API requests finished in #{(Time.now - startup_time).to_i} seconds ⌛"
end