class Paubox::EmailDisposition
Parses email dispositions from /v1/message_reciept response to friendly Ruby
Constants
- MessageDelivery
- MessageDeliveryStatus
- MessageMultiDeliveryStatus
- ResponseError
Attributes
errors[R]
message_deliveries[R]
message_id[R]
raw_json_response[R]
response[R]
source_tracking_id[R]
Public Class Methods
new(response)
click to toggle source
# File lib/paubox/email_disposition.rb, line 15 def initialize(response) @response = response @raw_json_response = response.to_json @source_tracking_id = response.dig('sourceTrackingId') @message_data = response.dig('data', 'message') @message_id = @message_data ? @message_data['id'] : nil @message_deliveries ||= build_message_deliveries @errors ||= build_errors end
Public Instance Methods
build_errors()
click to toggle source
# File lib/paubox/email_disposition.rb, line 29 def build_errors return [] unless response['errors'] errors = response['errors'] errors.map { |e| ResponseError.new(e['code'], e['status'], e['title'], e['details']) } end
errors?()
click to toggle source
# File lib/paubox/email_disposition.rb, line 25 def errors? errors.any? end
Private Instance Methods
build_message_deliveries()
click to toggle source
# File lib/paubox/email_disposition.rb, line 38 def build_message_deliveries return [] unless @message_data deliveries = @message_data.fetch('message_deliveries', []) deliveries.map do |delivery| status = build_message_delivery_status(delivery['status']) MessageDelivery.new(delivery['recipient'], status) end end
build_message_delivery_status(stat)
click to toggle source
# File lib/paubox/email_disposition.rb, line 48 def build_message_delivery_status(stat) delivery_status = stat['deliveryStatus'] delivery_time = stat['deliveryTime'].to_s.empty? ? nil : DateTime.parse(stat['deliveryTime']) opened_status = stat['openedStatus'].to_s.empty? ? 'unopened' : stat['openedStatus'] opened_time = stat['openedTime'].to_s.empty? ? nil : DateTime.parse(stat['openedTime']) return MessageMultiDeliveryStatus.new(delivery_status, delivery_time) if multi_recipient? MessageDeliveryStatus.new(delivery_status, delivery_time, opened_status, opened_time) end
multi_recipient?()
click to toggle source
# File lib/paubox/email_disposition.rb, line 58 def multi_recipient? @message_data.fetch('message_deliveries', []).length > 1 end