Do not require `description` in `update` action
[akkoma] / lib / pleroma / web / mastodon_api / controllers / media_controller.ex
index 52e0b22d81da5300c953f41b5df0d634be1002ab..a21233393b61e9310b83bff8de6bc53320e9d444 100644 (file)
@@ -19,12 +19,12 @@ defmodule Pleroma.Web.MastodonAPI.MediaController do
   defdelegate open_api_operation(action), to: Pleroma.Web.ApiSpec.MediaOperation
 
   @doc "POST /api/v1/media"
-  def create(%{assigns: %{user: user}} = conn, %{"file" => file} = data) do
+  def create(%{assigns: %{user: user}, body_params: %{file: file} = data} = conn, _) do
     with {:ok, object} <-
            ActivityPub.upload(
              file,
              actor: User.ap_id(user),
-             description: Map.get(data, "description")
+             description: Map.get(data, :description)
            ) do
       attachment_data = Map.put(object.data, "id", object.id)
 
@@ -35,12 +35,12 @@ defmodule Pleroma.Web.MastodonAPI.MediaController do
   def create(_conn, _data), do: {:error, :bad_request}
 
   @doc "POST /api/v2/media"
-  def create2(%{assigns: %{user: user}} = conn, %{"file" => file} = data) do
+  def create2(%{assigns: %{user: user}, body_params: %{file: file} = data} = conn, _) do
     with {:ok, object} <-
            ActivityPub.upload(
              file,
              actor: User.ap_id(user),
-             description: Map.get(data, "description")
+             description: Map.get(data, :description)
            ) do
       attachment_data = Map.put(object.data, "id", object.id)
 
@@ -53,8 +53,7 @@ defmodule Pleroma.Web.MastodonAPI.MediaController do
   def create2(_conn, _data), do: {:error, :bad_request}
 
   @doc "PUT /api/v1/media/:id"
-  def update(%{assigns: %{user: user}} = conn, %{"id" => id, "description" => description})
-      when is_binary(description) do
+  def update(%{assigns: %{user: user}, body_params: %{description: description}} = conn, %{id: id}) do
     with %Object{} = object <- Object.get_by_id(id),
          true <- Object.authorize_mutation(object, user),
          {:ok, %Object{data: data}} <- Object.update_data(object, %{"name" => description}) do
@@ -64,10 +63,10 @@ defmodule Pleroma.Web.MastodonAPI.MediaController do
     end
   end
 
-  def update(_conn, _data), do: {:error, :bad_request}
+  def update(conn, data), do: show(conn, data)
 
   @doc "GET /api/v1/media/:id"
-  def show(conn, %{"id" => id}) do
+  def show(conn, %{id: id}) do
     with %Object{data: data, id: object_id} <- Object.get_by_id(id) do
       attachment_data = Map.put(data, "id", object_id)