Class: Checkoff::Internal::AsanaEventEnrichment

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

Overview

Add useful info (like resource task names) into an Asana event/event filters/webhook subscription for human consumption

Instance Method Summary collapse

Methods included from Logging

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

Constructor Details

#initialize(config: Checkoff::Internal::ConfigLoader.load(:asana), workspaces: Checkoff::Workspaces.new(config:), tasks: Checkoff::Tasks.new(config:), sections: Checkoff::Sections.new(config:), projects: Checkoff::Projects.new(config:), resources: Checkoff::Resources.new(config:), clients: Checkoff::Clients.new(config:), client: clients.client) ⇒ AsanaEventEnrichment

Returns a new instance of AsanaEventEnrichment.

Parameters:



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/checkoff/internal/asana_event_enrichment.rb', line 25

def initialize(config: Checkoff::Internal::ConfigLoader.load(:asana),
               workspaces: Checkoff::Workspaces.new(config:),
               tasks: Checkoff::Tasks.new(config:),
               sections: Checkoff::Sections.new(config:),
               projects: Checkoff::Projects.new(config:),
               resources: Checkoff::Resources.new(config:),
               clients: Checkoff::Clients.new(config:),
               client: clients.client)
  @workspaces = workspaces
  @tasks = tasks
  @sections = sections
  @projects = projects
  @resources = resources
  @client = client
end

Instance Method Details

#enrich_event(asana_event) ⇒ Hash

Add useful info (like resource task names) into an event for human consumption

Parameters:

  • asana_event (Hash)

Returns:

  • (Hash)


47
48
49
50
51
52
53
# File 'lib/checkoff/internal/asana_event_enrichment.rb', line 47

def enrich_event(asana_event)
  finer { "Enriching event: #{asana_event}" }
  asana_event = asana_event.dup
  enrich_event_resource!(asana_event)
  enrich_event_parent!(asana_event)
  asana_event
end

#enrich_filter(filter) ⇒ Hash{String => String, Array<String>}

Parameters:

  • filter (Hash{String => String, Array<String>})

Returns:

  • (Hash{String => String, Array<String>})


58
59
60
61
62
63
64
# File 'lib/checkoff/internal/asana_event_enrichment.rb', line 58

def enrich_filter(filter)
  filter = filter.dup
  enrich_filter_section!(filter)
  enrich_filter_resource!(filter)
  enrich_filter_parent_gid!(filter)
  filter
end

#enrich_webhook_subscription!(webhook_subscription) ⇒ void

This method returns an undefined value.

Parameters:



71
72
73
74
75
76
77
78
79
80
# File 'lib/checkoff/internal/asana_event_enrichment.rb', line 71

def enrich_webhook_subscription!(webhook_subscription)
  webhook_subscription&.fetch('filters', nil)&.map! do |filter|
    enrich_filter(filter)
  end
  resource = webhook_subscription&.fetch('resource', nil)
  # @sg-ignore
  name, resource_type = enrich_gid(resource) if resource
  webhook_subscription['checkoff:enriched:name'] = name if name
  webhook_subscription['checkoff:enriched:resource_type'] = resource_type if resource_type
end