Class: Checkoff::Internal::AsanaEventFilter

Inherits:
Object
  • Object
show all
Includes:
Logging
Defined in:
lib/checkoff/internal/asana_event_filter.rb

Overview

Uses an enhanced version of Asana event filter configuration

See developers.asana.com/reference/createwebhook | body params | data | filters for a general description of the scheme.

Additional supported filter keys:

  • ‘checkoff:parent.gid’ - requires that the ‘gid’ key in the ‘parent’ object match the given value

Instance Method Summary collapse

Methods included from Logging

#debug, #error, #finer, #info, #logger, #warn

Constructor Details

#initialize(filters:) ⇒ AsanaEventFilter

Returns a new instance of AsanaEventFilter.

Parameters:

  • filters (Array<Hash>, nil)

    The filters to match against



20
21
22
# File 'lib/checkoff/internal/asana_event_filter.rb', line 20

def initialize(filters:)
  @filters = filters
end

Instance Method Details

#matches?(asana_event) ⇒ Boolean

Parameters:

  • asana_event (Hash)

    The event that Asana sent

Returns:

  • (Boolean)


25
26
27
28
29
30
31
32
33
34
# File 'lib/checkoff/internal/asana_event_filter.rb', line 25

def matches?(asana_event)
  logger.debug { "Filtering using #{@filters.inspect}" }
  return true if @filters.nil?

  @filters.any? do |filter|
    out = filter_matches_asana_event?(filter, asana_event)
    logger.debug { "Filter #{filter.inspect} matched? #{out} against event #{asana_event.inspect}" }
    out
  end
end