مراية لـ
https://github.com/postalserver/postal.git
تم المزامنة 2025-12-01 05:43:04 +00:00
fix(legacy-api): allow _expansions to be provided as true to return all expansions
closes #2932
هذا الالتزام موجود في:
@@ -24,7 +24,7 @@ module LegacyAPI
|
|||||||
message_hash = { id: message.id, token: message.token }
|
message_hash = { id: message.id, token: message.token }
|
||||||
expansions = api_params["_expansions"]
|
expansions = api_params["_expansions"]
|
||||||
|
|
||||||
if expansions.include?("status")
|
if expansions == true || (expansions.is_a?(Array) && expansions.include?("status"))
|
||||||
message_hash[:status] = {
|
message_hash[:status] = {
|
||||||
status: message.status,
|
status: message.status,
|
||||||
last_delivery_attempt: message.last_delivery_attempt&.to_f,
|
last_delivery_attempt: message.last_delivery_attempt&.to_f,
|
||||||
@@ -33,7 +33,7 @@ module LegacyAPI
|
|||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
if expansions.include?("details")
|
if expansions == true || (expansions.is_a?(Array) && expansions.include?("details"))
|
||||||
message_hash[:details] = {
|
message_hash[:details] = {
|
||||||
rcpt_to: message.rcpt_to,
|
rcpt_to: message.rcpt_to,
|
||||||
mail_from: message.mail_from,
|
mail_from: message.mail_from,
|
||||||
@@ -49,7 +49,7 @@ module LegacyAPI
|
|||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
if expansions.include?("inspection")
|
if expansions == true || (expansions.is_a?(Array) && expansions.include?("inspection"))
|
||||||
message_hash[:inspection] = {
|
message_hash[:inspection] = {
|
||||||
inspected: message.inspected,
|
inspected: message.inspected,
|
||||||
spam: message.spam,
|
spam: message.spam,
|
||||||
@@ -59,15 +59,15 @@ module LegacyAPI
|
|||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
if expansions.include?("plain_body")
|
if expansions == true || (expansions.is_a?(Array) && expansions.include?("plain_body"))
|
||||||
message_hash[:plain_body] = message.plain_body
|
message_hash[:plain_body] = message.plain_body
|
||||||
end
|
end
|
||||||
|
|
||||||
if expansions.include?("html_body")
|
if expansions == true || (expansions.is_a?(Array) && expansions.include?("html_body"))
|
||||||
message_hash[:html_body] = message.html_body
|
message_hash[:html_body] = message.html_body
|
||||||
end
|
end
|
||||||
|
|
||||||
if expansions.include?("attachments")
|
if expansions == true || (expansions.is_a?(Array) && expansions.include?("attachments"))
|
||||||
message_hash[:attachments] = message.attachments.map do |attachment|
|
message_hash[:attachments] = message.attachments.map do |attachment|
|
||||||
{
|
{
|
||||||
filename: attachment.filename.to_s,
|
filename: attachment.filename.to_s,
|
||||||
@@ -79,15 +79,15 @@ module LegacyAPI
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if expansions.include?("headers")
|
if expansions == true || (expansions.is_a?(Array) && expansions.include?("headers"))
|
||||||
message_hash[:headers] = message.headers
|
message_hash[:headers] = message.headers
|
||||||
end
|
end
|
||||||
|
|
||||||
if expansions.include?("raw_message")
|
if expansions == true || (expansions.is_a?(Array) && expansions.include?("raw_message"))
|
||||||
message_hash[:raw_message] = Base64.encode64(message.raw_message)
|
message_hash[:raw_message] = Base64.encode64(message.raw_message)
|
||||||
end
|
end
|
||||||
|
|
||||||
if expansions.include?("activity_entries")
|
if expansions == true || (expansions.is_a?(Array) && expansions.include?("activity_entries"))
|
||||||
message_hash[:activity_entries] = {
|
message_hash[:activity_entries] = {
|
||||||
loads: message.loads,
|
loads: message.loads,
|
||||||
clicks: message.clicks
|
clicks: message.clicks
|
||||||
|
|||||||
@@ -88,6 +88,49 @@ RSpec.describe "Legacy Messages API", type: :request do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context "when all expansions are requested" do
|
||||||
|
let(:expansions) { true }
|
||||||
|
|
||||||
|
it "returns details about the message" do
|
||||||
|
expect(response.status).to eq 200
|
||||||
|
parsed_body = JSON.parse(response.body)
|
||||||
|
expect(parsed_body["status"]).to eq "success"
|
||||||
|
expect(parsed_body["data"]).to match({
|
||||||
|
"id" => message.id,
|
||||||
|
"token" => message.token,
|
||||||
|
"status" => { "held" => false,
|
||||||
|
"hold_expiry" => nil,
|
||||||
|
"last_delivery_attempt" => nil,
|
||||||
|
"status" => "Pending" },
|
||||||
|
"details" => { "bounce" => false,
|
||||||
|
"bounce_for_id" => 0,
|
||||||
|
"direction" => "outgoing",
|
||||||
|
"mail_from" => "test@example.com",
|
||||||
|
"message_id" => message.message_id,
|
||||||
|
"rcpt_to" => "john@example.com",
|
||||||
|
"received_with_ssl" => nil,
|
||||||
|
"size" => kind_of(String),
|
||||||
|
"subject" => "An example message",
|
||||||
|
"tag" => nil,
|
||||||
|
"timestamp" => kind_of(Float) },
|
||||||
|
"inspection" => { "inspected" => false,
|
||||||
|
"spam" => false,
|
||||||
|
"spam_score" => 0.0,
|
||||||
|
"threat" => false,
|
||||||
|
"threat_details" => nil },
|
||||||
|
"plain_body" => message.plain_body,
|
||||||
|
"html_body" => message.html_body,
|
||||||
|
"attachments" => [],
|
||||||
|
"headers" => message.headers,
|
||||||
|
"raw_message" => Base64.encode64(message.raw_message),
|
||||||
|
"activity_entries" => {
|
||||||
|
"loads" => [],
|
||||||
|
"clicks" => []
|
||||||
|
}
|
||||||
|
})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
context "when the status expansion is requested" do
|
context "when the status expansion is requested" do
|
||||||
let(:expansions) { ["status"] }
|
let(:expansions) { ["status"] }
|
||||||
|
|
||||||
|
|||||||
المرجع في مشكلة جديدة
حظر مستخدم