Class: Emailbutler::Webhooks::Mappers::Sendgrid

Inherits:
Object
  • Object
show all
Defined in:
lib/emailbutler/webhooks/mappers/sendgrid.rb

Constant Summary collapse

DELIVERABILITY_MAPPER =
{
  'processed' => 'processed',
  'delivered' => 'delivered',
  'open' => 'opened',
  'click' => 'opened'
}.freeze

Instance Method Summary collapse

Instance Method Details

#call(payload:) ⇒ Object

rubocop: disable Metrics/AbcSize, Metrics/CyclomaticComplexity



14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/emailbutler/webhooks/mappers/sendgrid.rb', line 14

def call(payload:) # rubocop: disable Metrics/AbcSize, Metrics/CyclomaticComplexity
  payload['_json'].filter_map { |message|
    message.stringify_keys!
    message_uuid = message['smtp-id'] || message['sg_message_id']
    message_uuid = message_uuid[1..-2] if message_uuid.starts_with?('<') && message_uuid.ends_with?('>')
    next if message_uuid.nil?

    {
      message_uuid: message_uuid,
      status: transform_status(message['event']),
      timestamp: message['timestamp'] ? Time.at(message['timestamp'].to_i).utc.to_datetime : nil
    }
  }
end