structure :message do basic :id basic :token expansion(:status) { { :status => o.status, :last_delivery_attempt => o.last_delivery_attempt ? o.last_delivery_attempt.to_f : nil, :held => o.held == 1 ? true : false, :hold_expiry => o.hold_expiry ? o.hold_expiry.to_f : nil } } expansion(:details) { { :rcpt_to => o.rcpt_to, :mail_from => o.mail_from, :subject => o.subject, :message_id => o.message_id, :timestamp => o.timestamp.to_f, :direction => o.scope, :size => o.size, :bounce => o.bounce, :bounce_for_id => o.bounce_for_id, :tag => o.tag, :received_with_ssl => o.received_with_ssl } } expansion(:inspection) { { :inspected => o.inspected == 1 ? true : false, :spam => o.spam == 1 ? true : false, :spam_score => o.spam_score.to_f, :threat => o.threat == 1 ? true : false, :threat_details => o.threat_details } } expansion(:plain_body) { o.plain_body } expansion(:html_body) { o.html_body } expansion(:attachments) { o.attachments.map do |attachment| { :filename => attachment.filename.to_s, :content_type => attachment.mime_type, :data => Base64.encode64(attachment.body.to_s), :size => attachment.body.to_s.bytesize, :hash => Digest::SHA1.hexdigest(attachment.body.to_s) } end } expansion(:headers) { o.headers } expansion(:raw_message) { Base64.encode64(o.raw_message) } end