Sha256: 31639ca9f60e19db9d799d9d1a623e7913e956fee88d1eb7a72b39bf4846c32b

Contents?: true

Size: 809 Bytes

Versions: 4

Compression:

Stored size: 809 Bytes

Contents

# frozen_string_literal: true

module Emailbutler
  module Webhooks
    module Mappers
      class Mailjet
        DELIVERABILITY_MAPPER = {
          'sent' => 'processed',
          'open' => 'delivered',
          'click' => 'delivered'
        }.freeze

        def call(payload:)
          payload.stringify_keys!
          # message-id contains data like <uuid>
          message_uuid = payload['Message_GUID']
          status = DELIVERABILITY_MAPPER[payload['event']] || Emailbutler::Message::FAILED
          return [] if message_uuid.nil?

          [
            {
              message_uuid: message_uuid,
              status: status,
              timestamp: payload['time'] ? Time.at(payload['time'].to_i).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/mailjet.rb
emailbutler-0.8.7 lib/emailbutler/webhooks/mappers/mailjet.rb
emailbutler-0.8.6 lib/emailbutler/webhooks/mappers/mailjet.rb
emailbutler-0.8.5 lib/emailbutler/webhooks/mappers/mailjet.rb