Fix /api/v2/media returning the wrong status code for media processed synchronously
The API should return a 202 only if data cannot be returned yet and a followup GET /api/v1/media/:id should be called to retrieve it. This is something Mastodon does when it needs to transcode large media files. It does not apply to Pleroma and causes apps to waste an API call when posting a status which causes apps to appear to hang on higher latency environments, such as on mobile networks. https://docs.joinmastodon.org/methods/media/#v2
This commit is contained in:
parent
2d591aedae
commit
7d5ef81737
4 changed files with 5 additions and 6 deletions
1
changelog.d/mediav2_status.fix
Normal file
1
changelog.d/mediav2_status.fix
Normal file
|
@ -0,0 +1 @@
|
|||
Fix /api/v2/media returning the wrong status code (202) for media processed synchronously
|
|
@ -121,7 +121,7 @@ def create2_operation do
|
|||
security: [%{"oAuth" => ["write:media"]}],
|
||||
requestBody: Helpers.request_body("Parameters", create_request()),
|
||||
responses: %{
|
||||
202 => Operation.response("Media", "application/json", Attachment),
|
||||
200 => Operation.response("Media", "application/json", Attachment),
|
||||
400 => Operation.response("Media", "application/json", ApiError),
|
||||
422 => Operation.response("Media", "application/json", ApiError),
|
||||
500 => Operation.response("Media", "application/json", ApiError)
|
||||
|
|
|
@ -53,9 +53,7 @@ def create2(
|
|||
) do
|
||||
attachment_data = Map.put(object.data, "id", object.id)
|
||||
|
||||
conn
|
||||
|> put_status(202)
|
||||
|> render("attachment.json", %{attachment: attachment_data})
|
||||
render(conn, "attachment.json", %{attachment: attachment_data})
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -56,7 +56,7 @@ test "/api/v2/media", %{conn: conn, user: user, image: image} do
|
|||
conn
|
||||
|> put_req_header("content-type", "multipart/form-data")
|
||||
|> post("/api/v2/media", %{"file" => image, "description" => desc})
|
||||
|> json_response_and_validate_schema(202)
|
||||
|> json_response_and_validate_schema(200)
|
||||
|
||||
assert media_id = response["id"]
|
||||
|
||||
|
@ -111,7 +111,7 @@ test "/api/v2/media, upload_limit", %{conn: conn, user: user} do
|
|||
"file" => large_binary,
|
||||
"description" => desc
|
||||
})
|
||||
|> json_response_and_validate_schema(202)
|
||||
|> json_response_and_validate_schema(200)
|
||||
|
||||
assert media_id = response["id"]
|
||||
|
||||
|
|
Loading…
Reference in a new issue