Sha256: 03af378102a365f56f8f7ea6d9db5b8a4b8a2627f1d08ec14d0c59ee458b489f

Contents?: true

Size: 810 Bytes

Versions: 4

Compression:

Stored size: 810 Bytes

Contents

# frozen_string_literal: true

module Emailbutler
  module Webhooks
    module Mappers
      class Mailtrap
        DELIVERABILITY_MAPPER = {
          'delivery' => 'delivered',
          'open' => 'delivered',
          'click' => 'delivered'
        }.freeze

        def call(payload:)
          payload['events'].filter_map { |message|
            message.stringify_keys!
            message_uuid = message['message_id']
            status = DELIVERABILITY_MAPPER[message['event']] || Emailbutler::Message::FAILED
            next if message_uuid.nil?

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

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
emailbutler-0.8.8 lib/emailbutler/webhooks/mappers/mailtrap.rb
emailbutler-0.8.7 lib/emailbutler/webhooks/mappers/mailtrap.rb
emailbutler-0.8.6 lib/emailbutler/webhooks/mappers/mailtrap.rb
emailbutler-0.8.5 lib/emailbutler/webhooks/mappers/mailtrap.rb