Sha256: 18b6009e229d08d1138c0e41b66b76f51d62e79fb785dca00e5644983ac8657d
Contents?: true
Size: 996 Bytes
Versions: 4
Compression:
Stored size: 996 Bytes
Contents
# frozen_string_literal: true module Emailbutler module Webhooks module Mappers class Sendgrid DELIVERABILITY_MAPPER = { 'processed' => 'processed', 'delivered' => 'delivered', 'open' => 'delivered', 'click' => 'delivered', 'deferred' => 'failed', 'bounce' => 'failed', 'dropped' => 'failed', 'spamreport' => 'failed' }.freeze def call(payload:) payload['_json'].filter_map { |message| message.stringify_keys! message_uuid = message['smtp-id'] || message['sg_message_id'] status = DELIVERABILITY_MAPPER[message['event']] next if message_uuid.nil? || status.nil? { message_uuid: message_uuid, status: status, timestamp: message['timestamp'] ? Time.at(message['timestamp'].to_i).utc.to_datetime : nil } } end end end end end
Version data entries
4 entries across 4 versions & 1 rubygems