Module: WolfCore::Integrations::WebhooksOperations

Defined in:
lib/wolf_core/application/integrations/webhooks_operations.rb

Instance Method Summary collapse

Instance Method Details

#build_body_from_params(params:, id_key:) ⇒ Object



36
37
38
39
40
# File 'lib/wolf_core/application/integrations/webhooks_operations.rb', line 36

def build_body_from_params(params:, id_key:)
  params.slice(
    'event_name', 'payload'
  ).merge({ id_key => params['object_id'] })
end

#get_event_name(params:) ⇒ Object



14
15
16
17
# File 'lib/wolf_core/application/integrations/webhooks_operations.rb', line 14

def get_event_name(params:)
  message = JSON.parse(params['Message'] || {})
  message['event_name']
end

#get_event_type(params:) ⇒ Object



10
11
12
# File 'lib/wolf_core/application/integrations/webhooks_operations.rb', line 10

def get_event_type(params:)
  params['Type']
end

#get_payload(event_type:, params:) ⇒ Object



4
5
6
7
8
# File 'lib/wolf_core/application/integrations/webhooks_operations.rb', line 4

def get_payload(event_type:, params:)
  return if event_type == 'SubscriptionConfirmation'
  params = JSON.parse(params['Message'] || '{}')
  params['payload'] = JSON.parse(params['payload'] || '{}')
end

#subscription_confirmation_request(url:) ⇒ Object



28
29
30
31
32
33
34
# File 'lib/wolf_core/application/integrations/webhooks_operations.rb', line 28

def subscription_confirmation_request(url:)
  response = safe_http_get(
    url: url,
    error_message: "Can not confirm subscription",
  )
  response
end

#validate_user(event_type:, params:) ⇒ Object



19
20
21
22
23
24
25
26
# File 'lib/wolf_core/application/integrations/webhooks_operations.rb', line 19

def validate_user(event_type:, params:)
  return if event_type == 'SubscriptionConfirmation'

  user_id = params.dig('invoker', 'user_id').to_s
  return unless user_id == ENV['WOLF_ADMIN_ID'].to_s

  raise_service_error("Ignoring event from user id #{user_id}")
end