مراية لـ
https://github.com/postalserver/postal.git
تم المزامنة 2026-01-20 22:59:48 +00:00
refactor: remove moonrope but maintain legacy API actions (#2889)
هذا الالتزام موجود في:
140
app/controllers/legacy_api/messages_controller.rb
Normal file
140
app/controllers/legacy_api/messages_controller.rb
Normal file
@@ -0,0 +1,140 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
module LegacyAPI
|
||||
class MessagesController < BaseController
|
||||
|
||||
# Returns details about a given message
|
||||
#
|
||||
# URL: /api/v1/messages/message
|
||||
#
|
||||
# Parameters: id => REQ: The ID of the message
|
||||
# _expansions => An array of types of details t
|
||||
# to return
|
||||
#
|
||||
# Response: A hash containing message information
|
||||
# OR an error if the message does not exist.
|
||||
#
|
||||
def message
|
||||
if api_params["id"].blank?
|
||||
render_parameter_error "`id` parameter is required but is missing"
|
||||
return
|
||||
end
|
||||
|
||||
message = @current_credential.server.message(api_params["id"])
|
||||
message_hash = { id: message.id, token: message.token }
|
||||
expansions = api_params["_expansions"]
|
||||
|
||||
if expansions.include?("status")
|
||||
message_hash[:status] = {
|
||||
status: message.status,
|
||||
last_delivery_attempt: message.last_delivery_attempt&.to_f,
|
||||
held: message.held,
|
||||
hold_expiry: message.hold_expiry&.to_f
|
||||
}
|
||||
end
|
||||
|
||||
if expansions.include?("details")
|
||||
message_hash[:details] = {
|
||||
rcpt_to: message.rcpt_to,
|
||||
mail_from: message.mail_from,
|
||||
subject: message.subject,
|
||||
message_id: message.message_id,
|
||||
timestamp: message.timestamp.to_f,
|
||||
direction: message.scope,
|
||||
size: message.size,
|
||||
bounce: message.bounce,
|
||||
bounce_for_id: message.bounce_for_id,
|
||||
tag: message.tag,
|
||||
received_with_ssl: message.received_with_ssl
|
||||
}
|
||||
end
|
||||
|
||||
if expansions.include?("inspection")
|
||||
message_hash[:inspection] = {
|
||||
inspected: message.inspected,
|
||||
spam: message.spam,
|
||||
spam_score: message.spam_score.to_f,
|
||||
threat: message.threat,
|
||||
threat_details: message.threat_details
|
||||
}
|
||||
end
|
||||
|
||||
if expansions.include?("plain_body")
|
||||
message_hash[:plain_body] = message.plain_body
|
||||
end
|
||||
|
||||
if expansions.include?("html_body")
|
||||
message_hash[:html_body] = message.html_body
|
||||
end
|
||||
|
||||
if expansions.include?("attachments")
|
||||
message_hash[:attachments] = message.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
|
||||
end
|
||||
|
||||
if expansions.include?("headers")
|
||||
message_hash[:headers] = message.headers
|
||||
end
|
||||
|
||||
if expansions.include?("raw_message")
|
||||
message_hash[:raw_message] = Base64.encode64(message.raw_message)
|
||||
end
|
||||
|
||||
if expansions.include?("activity_entries")
|
||||
message_hash[:activity_entries] = {
|
||||
loads: message.loads,
|
||||
clicks: message.clicks
|
||||
}
|
||||
end
|
||||
|
||||
render_success message_hash
|
||||
rescue Postal::MessageDB::Message::NotFound
|
||||
render_error "MessageNotFound",
|
||||
message: "No message found matching provided ID",
|
||||
id: api_params["id"]
|
||||
end
|
||||
|
||||
# Returns all the deliveries for a given message
|
||||
#
|
||||
# URL: /api/v1/messages/deliveries
|
||||
#
|
||||
# Parameters: id => REQ: The ID of the message
|
||||
#
|
||||
# Response: A array of hashes containing delivery information
|
||||
# OR an error if the message does not exist.
|
||||
#
|
||||
def deliveries
|
||||
if api_params["id"].blank?
|
||||
render_parameter_error "`id` parameter is required but is missing"
|
||||
return
|
||||
end
|
||||
|
||||
message = @current_credential.server.message(api_params["id"])
|
||||
deliveries = message.deliveries.map do |d|
|
||||
{
|
||||
id: d.id,
|
||||
status: d.status,
|
||||
details: d.details,
|
||||
output: d.output&.strip,
|
||||
sent_with_ssl: d.sent_with_ssl,
|
||||
log_id: d.log_id,
|
||||
time: d.time&.to_f,
|
||||
timestamp: d.timestamp.to_f
|
||||
}
|
||||
end
|
||||
render_success deliveries
|
||||
rescue Postal::MessageDB::Message::NotFound
|
||||
render_error "MessageNotFound",
|
||||
message: "No message found matching provided ID",
|
||||
id: api_params["id"]
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
المرجع في مشكلة جديدة
حظر مستخدم