diff options
| author | feld <feld@feld.me> | 2024-01-30 20:32:32 +0000 | 
|---|---|---|
| committer | feld <feld@feld.me> | 2024-01-30 20:32:32 +0000 | 
| commit | 1bba02863d02583f508fcf0787edd789aa34ef6f (patch) | |
| tree | b006fc685b71dfc8b16f6434a17095b720e93c19 /lib | |
| parent | 251c455b9129b328d3266cc3d68434b0d879f864 (diff) | |
| parent | cfe7438b2f953575eb0cb9e8318f0c39bcad35c6 (diff) | |
| download | pleroma-1bba02863d02583f508fcf0787edd789aa34ef6f.tar.gz pleroma-1bba02863d02583f508fcf0787edd789aa34ef6f.zip  | |
Merge branch 'dialyzer-fixes' into 'develop'
Dialyzer fixes, some reverts
See merge request pleroma/pleroma!4049
Diffstat (limited to 'lib')
48 files changed, 205 insertions, 170 deletions
diff --git a/lib/pleroma/upload.ex b/lib/pleroma/upload.ex index e6c484548..89cd3d920 100644 --- a/lib/pleroma/upload.ex +++ b/lib/pleroma/upload.ex @@ -51,7 +51,6 @@ defmodule Pleroma.Upload do            | {:size_limit, nil | non_neg_integer()}            | {:uploader, module()}            | {:filters, [module()]} -          | {:actor, String.t()}    @type t :: %__MODULE__{            id: String.t(), diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index 8129845b5..0773434c5 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -2559,9 +2559,9 @@ defmodule Pleroma.User do      cast(user, params, [:is_confirmed, :confirmation_token])    end -  @spec approval_changeset(User.t(), keyword()) :: Ecto.Changeset.t() -  def approval_changeset(user, set_approval: approved?) do -    cast(user, %{is_approved: approved?}, [:is_approved]) +  @spec approval_changeset(Ecto.Changeset.t(), keyword()) :: Ecto.Changeset.t() +  def approval_changeset(changeset, set_approval: approved?) do +    cast(changeset, %{is_approved: approved?}, [:is_approved])    end    @spec add_pinned_object_id(User.t(), String.t()) :: {:ok, User.t()} | {:error, term()} diff --git a/lib/pleroma/web/admin_api/controllers/config_controller.ex b/lib/pleroma/web/admin_api/controllers/config_controller.ex index 989316041..a03318c0e 100644 --- a/lib/pleroma/web/admin_api/controllers/config_controller.ex +++ b/lib/pleroma/web/admin_api/controllers/config_controller.ex @@ -128,7 +128,7 @@ defmodule Pleroma.Web.AdminAPI.ConfigController do      end    end -  def update(%{body_params: %{"configs" => configs}} = conn, _) do +  def update(%{body_params: %{configs: configs}} = conn, _) do      with :ok <- configurable_from_database() do        results =          configs diff --git a/lib/pleroma/web/admin_api/controllers/instance_document_controller.ex b/lib/pleroma/web/admin_api/controllers/instance_document_controller.ex index a35878926..990a94313 100644 --- a/lib/pleroma/web/admin_api/controllers/instance_document_controller.ex +++ b/lib/pleroma/web/admin_api/controllers/instance_document_controller.ex @@ -27,7 +27,7 @@ defmodule Pleroma.Web.AdminAPI.InstanceDocumentController do      end    end -  def update(%{body_params: %{"file" => file}} = conn, %{name: document_name}) do +  def update(%{body_params: %{file: file}} = conn, %{name: document_name}) do      with {:ok, url} <- InstanceDocument.put(document_name, file.path) do        json(conn, %{"url" => url})      end diff --git a/lib/pleroma/web/admin_api/controllers/invite_controller.ex b/lib/pleroma/web/admin_api/controllers/invite_controller.ex index 229b39909..c5d759bb5 100644 --- a/lib/pleroma/web/admin_api/controllers/invite_controller.ex +++ b/lib/pleroma/web/admin_api/controllers/invite_controller.ex @@ -40,7 +40,7 @@ defmodule Pleroma.Web.AdminAPI.InviteController do    end    @doc "Revokes invite by token" -  def revoke(%{body_params: %{"token" => token}} = conn, _) do +  def revoke(%{body_params: %{token: token}} = conn, _) do      with {:ok, invite} <- UserInviteToken.find_by_token(token),           {:ok, updated_invite} = UserInviteToken.update_invite(invite, %{used: true}) do        render(conn, "show.json", invite: updated_invite) @@ -51,7 +51,7 @@ defmodule Pleroma.Web.AdminAPI.InviteController do    end    @doc "Sends registration invite via email" -  def email(%{assigns: %{user: user}, body_params: %{"email" => email} = params} = conn, _) do +  def email(%{assigns: %{user: user}, body_params: %{email: email} = params} = conn, _) do      with {_, false} <- {:registrations_open, Config.get([:instance, :registrations_open])},           {_, true} <- {:invites_enabled, Config.get([:instance, :invites_enabled])},           {:ok, invite_token} <- UserInviteToken.create_invite(), @@ -60,7 +60,7 @@ defmodule Pleroma.Web.AdminAPI.InviteController do             |> Pleroma.Emails.UserEmail.user_invitation_email(               invite_token,               email, -             params["name"] +             params[:name]             )             |> Pleroma.Emails.Mailer.deliver() do        json_response(conn, :no_content, "") diff --git a/lib/pleroma/web/admin_api/controllers/media_proxy_cache_controller.ex b/lib/pleroma/web/admin_api/controllers/media_proxy_cache_controller.ex index c615422cd..4d53f5451 100644 --- a/lib/pleroma/web/admin_api/controllers/media_proxy_cache_controller.ex +++ b/lib/pleroma/web/admin_api/controllers/media_proxy_cache_controller.ex @@ -59,12 +59,12 @@ defmodule Pleroma.Web.AdminAPI.MediaProxyCacheController do      Enum.slice(entries, offset, page_size)    end -  def delete(%{assigns: %{user: _}, body_params: %{"urls" => urls}} = conn, _) do +  def delete(%{assigns: %{user: _}, body_params: %{urls: urls}} = conn, _) do      MediaProxy.remove_from_banned_urls(urls)      json(conn, %{})    end -  def purge(%{assigns: %{user: _}, body_params: %{"urls" => urls, "ban" => ban}} = conn, _) do +  def purge(%{assigns: %{user: _}, body_params: %{urls: urls, ban: ban}} = conn, _) do      MediaProxy.Invalidation.purge(urls)      if ban do diff --git a/lib/pleroma/web/admin_api/controllers/relay_controller.ex b/lib/pleroma/web/admin_api/controllers/relay_controller.ex index 664011b06..2e83fe139 100644 --- a/lib/pleroma/web/admin_api/controllers/relay_controller.ex +++ b/lib/pleroma/web/admin_api/controllers/relay_controller.ex @@ -31,7 +31,7 @@ defmodule Pleroma.Web.AdminAPI.RelayController do      end    end -  def follow(%{assigns: %{user: admin}, body_params: %{"relay_url" => target}} = conn, _) do +  def follow(%{assigns: %{user: admin}, body_params: %{relay_url: target}} = conn, _) do      with {:ok, _message} <- Relay.follow(target) do        ModerationLog.insert_log(%{action: "relay_follow", actor: admin, target: target}) @@ -44,11 +44,8 @@ defmodule Pleroma.Web.AdminAPI.RelayController do      end    end -  def unfollow( -        %{assigns: %{user: admin}, body_params: %{"relay_url" => target} = params} = conn, -        _ -      ) do -    with {:ok, _message} <- Relay.unfollow(target, %{force: params["force"]}) do +  def unfollow(%{assigns: %{user: admin}, body_params: %{relay_url: target} = params} = conn, _) do +    with {:ok, _message} <- Relay.unfollow(target, %{force: params[:force]}) do        ModerationLog.insert_log(%{action: "relay_unfollow", actor: admin, target: target})        json(conn, target) diff --git a/lib/pleroma/web/admin_api/controllers/report_controller.ex b/lib/pleroma/web/admin_api/controllers/report_controller.ex index f667e7003..15cbbcc3e 100644 --- a/lib/pleroma/web/admin_api/controllers/report_controller.ex +++ b/lib/pleroma/web/admin_api/controllers/report_controller.ex @@ -45,7 +45,7 @@ defmodule Pleroma.Web.AdminAPI.ReportController do      end    end -  def update(%{assigns: %{user: admin}, body_params: %{"reports" => reports}} = conn, _) do +  def update(%{assigns: %{user: admin}, body_params: %{reports: reports}} = conn, _) do      result =        Enum.map(reports, fn report ->          case CommonAPI.update_report_state(report.id, report.state) do @@ -73,7 +73,7 @@ defmodule Pleroma.Web.AdminAPI.ReportController do      end    end -  def notes_create(%{assigns: %{user: user}, body_params: %{"content" => content}} = conn, %{ +  def notes_create(%{assigns: %{user: user}, body_params: %{content: content}} = conn, %{          id: report_id        }) do      with {:ok, _} <- ReportNote.create(user.id, report_id, content), diff --git a/lib/pleroma/web/admin_api/controllers/user_controller.ex b/lib/pleroma/web/admin_api/controllers/user_controller.ex index cca7d8c2f..ed93af11c 100644 --- a/lib/pleroma/web/admin_api/controllers/user_controller.ex +++ b/lib/pleroma/web/admin_api/controllers/user_controller.ex @@ -53,11 +53,11 @@ defmodule Pleroma.Web.AdminAPI.UserController do    def delete(conn, %{nickname: nickname}) do      conn -    |> Map.put(:body_params, %{"nicknames" => [nickname]}) +    |> Map.put(:body_params, %{nicknames: [nickname]})      |> delete(%{})    end -  def delete(%{assigns: %{user: admin}, body_params: %{"nicknames" => nicknames}} = conn, _) do +  def delete(%{assigns: %{user: admin}, body_params: %{nicknames: nicknames}} = conn, _) do      users = Enum.map(nicknames, &User.get_cached_by_nickname/1)      Enum.each(users, fn user -> @@ -78,8 +78,8 @@ defmodule Pleroma.Web.AdminAPI.UserController do          %{            assigns: %{user: admin},            body_params: %{ -            "follower" => follower_nick, -            "followed" => followed_nick +            follower: follower_nick, +            followed: followed_nick            }          } = conn,          _ @@ -103,8 +103,8 @@ defmodule Pleroma.Web.AdminAPI.UserController do          %{            assigns: %{user: admin},            body_params: %{ -            "follower" => follower_nick, -            "followed" => followed_nick +            follower: follower_nick, +            followed: followed_nick            }          } = conn,          _ @@ -124,7 +124,7 @@ defmodule Pleroma.Web.AdminAPI.UserController do      json(conn, "ok")    end -  def create(%{assigns: %{user: admin}, body_params: %{"users" => users}} = conn, _) do +  def create(%{assigns: %{user: admin}, body_params: %{users: users}} = conn, _) do      changesets =        users        |> Enum.map(fn %{nickname: nickname, email: email, password: password} -> @@ -202,7 +202,7 @@ defmodule Pleroma.Web.AdminAPI.UserController do      render(conn, "show.json", user: updated_user)    end -  def activate(%{assigns: %{user: admin}, body_params: %{"nicknames" => nicknames}} = conn, _) do +  def activate(%{assigns: %{user: admin}, body_params: %{nicknames: nicknames}} = conn, _) do      users = Enum.map(nicknames, &User.get_cached_by_nickname/1)      {:ok, updated_users} = User.set_activation(users, true) @@ -215,7 +215,7 @@ defmodule Pleroma.Web.AdminAPI.UserController do      render(conn, "index.json", users: updated_users)    end -  def deactivate(%{assigns: %{user: admin}, body_params: %{"nicknames" => nicknames}} = conn, _) do +  def deactivate(%{assigns: %{user: admin}, body_params: %{nicknames: nicknames}} = conn, _) do      users = Enum.map(nicknames, &User.get_cached_by_nickname/1)      {:ok, updated_users} = User.set_activation(users, false) @@ -228,7 +228,7 @@ defmodule Pleroma.Web.AdminAPI.UserController do      render(conn, "index.json", users: updated_users)    end -  def approve(%{assigns: %{user: admin}, body_params: %{"nicknames" => nicknames}} = conn, _) do +  def approve(%{assigns: %{user: admin}, body_params: %{nicknames: nicknames}} = conn, _) do      users = Enum.map(nicknames, &User.get_cached_by_nickname/1)      {:ok, updated_users} = User.approve(users) @@ -241,7 +241,7 @@ defmodule Pleroma.Web.AdminAPI.UserController do      render(conn, "index.json", users: updated_users)    end -  def suggest(%{assigns: %{user: admin}, body_params: %{"nicknames" => nicknames}} = conn, _) do +  def suggest(%{assigns: %{user: admin}, body_params: %{nicknames: nicknames}} = conn, _) do      users = Enum.map(nicknames, &User.get_cached_by_nickname/1)      {:ok, updated_users} = User.set_suggestion(users, true) @@ -254,7 +254,7 @@ defmodule Pleroma.Web.AdminAPI.UserController do      render(conn, "index.json", users: updated_users)    end -  def unsuggest(%{assigns: %{user: admin}, body_params: %{"nicknames" => nicknames}} = conn, _) do +  def unsuggest(%{assigns: %{user: admin}, body_params: %{nicknames: nicknames}} = conn, _) do      users = Enum.map(nicknames, &User.get_cached_by_nickname/1)      {:ok, updated_users} = User.set_suggestion(users, false) diff --git a/lib/pleroma/web/api_spec/cast_and_validate.ex b/lib/pleroma/web/api_spec/cast_and_validate.ex index add59eb88..f3e8e093e 100644 --- a/lib/pleroma/web/api_spec/cast_and_validate.ex +++ b/lib/pleroma/web/api_spec/cast_and_validate.ex @@ -27,10 +27,12 @@ defmodule Pleroma.Web.ApiSpec.CastAndValidate do    @impl Plug -  def call(conn, %{operation_id: operation_id, render_error: render_error}) do +  def call(conn, %{operation_id: operation_id, render_error: render_error} = opts) do      {spec, operation_lookup} = PutApiSpec.get_spec_and_operation_lookup(conn)      operation = operation_lookup[operation_id] +    cast_opts = opts |> Map.take([:replace_params]) |> Map.to_list() +      content_type =        case Conn.get_req_header(conn, "content-type") do          [header_value | _] -> @@ -44,7 +46,7 @@ defmodule Pleroma.Web.ApiSpec.CastAndValidate do      conn = Conn.put_private(conn, :operation_id, operation_id) -    case cast_and_validate(spec, operation, conn, content_type, strict?()) do +    case cast_and_validate(spec, operation, conn, content_type, strict?(), cast_opts) do        {:ok, conn} ->          conn @@ -94,11 +96,11 @@ defmodule Pleroma.Web.ApiSpec.CastAndValidate do    def call(conn, opts), do: OpenApiSpex.Plug.CastAndValidate.call(conn, opts) -  defp cast_and_validate(spec, operation, conn, content_type, true = _strict) do -    OpenApiSpex.cast_and_validate(spec, operation, conn, content_type) +  defp cast_and_validate(spec, operation, conn, content_type, true = _strict, cast_opts) do +    OpenApiSpex.cast_and_validate(spec, operation, conn, content_type, cast_opts)    end -  defp cast_and_validate(spec, operation, conn, content_type, false = _strict) do +  defp cast_and_validate(spec, operation, conn, content_type, false = _strict, cast_opts) do      case OpenApiSpex.cast_and_validate(spec, operation, conn, content_type) do        {:ok, conn} ->          {:ok, conn} @@ -123,7 +125,7 @@ defmodule Pleroma.Web.ApiSpec.CastAndValidate do            end)          conn = %Conn{conn | query_params: query_params} -        OpenApiSpex.cast_and_validate(spec, operation, conn, content_type) +        OpenApiSpex.cast_and_validate(spec, operation, conn, content_type, cast_opts)      end    end diff --git a/lib/pleroma/web/api_spec/helpers.ex b/lib/pleroma/web/api_spec/helpers.ex index f20a9163d..7257253ba 100644 --- a/lib/pleroma/web/api_spec/helpers.ex +++ b/lib/pleroma/web/api_spec/helpers.ex @@ -62,7 +62,7 @@ defmodule Pleroma.Web.ApiSpec.Helpers do      Operation.parameter(        :with_relationships,        :query, -      BooleanLike, +      BooleanLike.schema(),        "Embed relationships into accounts. **If this parameter is not set account's `pleroma.relationship` is going to be `null`.**"      )    end diff --git a/lib/pleroma/web/api_spec/operations/account_operation.ex b/lib/pleroma/web/api_spec/operations/account_operation.ex index 5d8d16e98..36025e47a 100644 --- a/lib/pleroma/web/api_spec/operations/account_operation.ex +++ b/lib/pleroma/web/api_spec/operations/account_operation.ex @@ -122,22 +122,27 @@ defmodule Pleroma.Web.ApiSpec.AccountOperation do        parameters:          [            %Reference{"$ref": "#/components/parameters/accountIdOrNickname"}, -          Operation.parameter(:pinned, :query, BooleanLike, "Include only pinned statuses"), +          Operation.parameter( +            :pinned, +            :query, +            BooleanLike.schema(), +            "Include only pinned statuses" +          ),            Operation.parameter(:tagged, :query, :string, "With tag"),            Operation.parameter(              :only_media,              :query, -            BooleanLike, +            BooleanLike.schema(),              "Include only statuses with media attached"            ),            Operation.parameter(              :with_muted,              :query, -            BooleanLike, +            BooleanLike.schema(),              "Include statuses from muted accounts."            ), -          Operation.parameter(:exclude_reblogs, :query, BooleanLike, "Exclude reblogs"), -          Operation.parameter(:exclude_replies, :query, BooleanLike, "Exclude replies"), +          Operation.parameter(:exclude_reblogs, :query, BooleanLike.schema(), "Exclude reblogs"), +          Operation.parameter(:exclude_replies, :query, BooleanLike.schema(), "Exclude replies"),            Operation.parameter(              :exclude_visibilities,              :query, @@ -147,7 +152,7 @@ defmodule Pleroma.Web.ApiSpec.AccountOperation do            Operation.parameter(              :with_muted,              :query, -            BooleanLike, +            BooleanLike.schema(),              "Include reactions from muted accounts."            )          ] ++ pagination_params(), @@ -882,9 +887,9 @@ defmodule Pleroma.Web.ApiSpec.AccountOperation do        description: "POST body for muting an account",        type: :object,        properties: %{ -        "uri" => %Schema{type: :string, nullable: true, format: :uri} +        uri: %Schema{type: :string, nullable: true, format: :uri}        }, -      required: ["uri"] +      required: [:uri]      }    end @@ -925,7 +930,7 @@ defmodule Pleroma.Web.ApiSpec.AccountOperation do        description: "POST body for adding a note for an account",        type: :object,        properties: %{ -        "comment" => %Schema{ +        comment: %Schema{            type: :string,            description: "Account note body"          } diff --git a/lib/pleroma/web/api_spec/operations/admin/config_operation.ex b/lib/pleroma/web/api_spec/operations/admin/config_operation.ex index c528cacf2..487dd5cda 100644 --- a/lib/pleroma/web/api_spec/operations/admin/config_operation.ex +++ b/lib/pleroma/web/api_spec/operations/admin/config_operation.ex @@ -47,7 +47,7 @@ defmodule Pleroma.Web.ApiSpec.Admin.ConfigOperation do          request_body("Parameters", %Schema{            type: :object,            properties: %{ -            "configs" => %Schema{ +            configs: %Schema{                type: :array,                items: %Schema{                  type: :object, diff --git a/lib/pleroma/web/api_spec/operations/admin/instance_document_operation.ex b/lib/pleroma/web/api_spec/operations/admin/instance_document_operation.ex index b2a1ba8ad..fc0de499b 100644 --- a/lib/pleroma/web/api_spec/operations/admin/instance_document_operation.ex +++ b/lib/pleroma/web/api_spec/operations/admin/instance_document_operation.ex @@ -61,9 +61,9 @@ defmodule Pleroma.Web.ApiSpec.Admin.InstanceDocumentOperation do        title: "UpdateRequest",        description: "POST body for uploading the file",        type: :object, -      required: ["file"], +      required: [:file],        properties: %{ -        "file" => %Schema{ +        file: %Schema{            type: :string,            format: :binary,            description: "The file to be uploaded, using multipart form data." diff --git a/lib/pleroma/web/api_spec/operations/admin/invite_operation.ex b/lib/pleroma/web/api_spec/operations/admin/invite_operation.ex index 3b084f3b8..e4a9ffaeb 100644 --- a/lib/pleroma/web/api_spec/operations/admin/invite_operation.ex +++ b/lib/pleroma/web/api_spec/operations/admin/invite_operation.ex @@ -79,9 +79,9 @@ defmodule Pleroma.Web.ApiSpec.Admin.InviteOperation do            "Parameters",            %Schema{              type: :object, -            required: ["token"], +            required: [:token],              properties: %{ -              "token" => %Schema{type: :string} +              token: %Schema{type: :string}              }            },            required: true @@ -106,10 +106,10 @@ defmodule Pleroma.Web.ApiSpec.Admin.InviteOperation do            "Parameters",            %Schema{              type: :object, -            required: ["email"], +            required: [:email],              properties: %{ -              "email" => %Schema{type: :string, format: :email}, -              "name" => %Schema{type: :string} +              email: %Schema{type: :string, format: :email}, +              name: %Schema{type: :string}              }            },            required: true diff --git a/lib/pleroma/web/api_spec/operations/admin/media_proxy_cache_operation.ex b/lib/pleroma/web/api_spec/operations/admin/media_proxy_cache_operation.ex index 79363d4cd..0b1eb3946 100644 --- a/lib/pleroma/web/api_spec/operations/admin/media_proxy_cache_operation.ex +++ b/lib/pleroma/web/api_spec/operations/admin/media_proxy_cache_operation.ex @@ -78,9 +78,9 @@ defmodule Pleroma.Web.ApiSpec.Admin.MediaProxyCacheOperation do            "Parameters",            %Schema{              type: :object, -            required: ["urls"], +            required: [:urls],              properties: %{ -              "urls" => %Schema{type: :array, items: %Schema{type: :string, format: :uri}} +              urls: %Schema{type: :array, items: %Schema{type: :string, format: :uri}}              }            },            required: true @@ -104,10 +104,10 @@ defmodule Pleroma.Web.ApiSpec.Admin.MediaProxyCacheOperation do            "Parameters",            %Schema{              type: :object, -            required: ["urls"], +            required: [:urls],              properties: %{ -              "urls" => %Schema{type: :array, items: %Schema{type: :string, format: :uri}}, -              "ban" => %Schema{type: :boolean, default: true} +              urls: %Schema{type: :array, items: %Schema{type: :string, format: :uri}}, +              ban: %Schema{type: :boolean, default: true}              }            },            required: true diff --git a/lib/pleroma/web/api_spec/operations/admin/relay_operation.ex b/lib/pleroma/web/api_spec/operations/admin/relay_operation.ex index ca9080fb3..8b241bd49 100644 --- a/lib/pleroma/web/api_spec/operations/admin/relay_operation.ex +++ b/lib/pleroma/web/api_spec/operations/admin/relay_operation.ex @@ -87,7 +87,7 @@ defmodule Pleroma.Web.ApiSpec.Admin.RelayOperation do      %Schema{        type: :object,        properties: %{ -        "relay_url" => %Schema{type: :string, format: :uri} +        relay_url: %Schema{type: :string, format: :uri}        }      }    end @@ -96,8 +96,8 @@ defmodule Pleroma.Web.ApiSpec.Admin.RelayOperation do      %Schema{        type: :object,        properties: %{ -        "relay_url" => %Schema{type: :string, format: :uri}, -        "force" => %Schema{type: :boolean, default: false} +        relay_url: %Schema{type: :string, format: :uri}, +        force: %Schema{type: :boolean, default: false}        }      }    end diff --git a/lib/pleroma/web/api_spec/operations/admin/report_operation.ex b/lib/pleroma/web/api_spec/operations/admin/report_operation.ex index 3902f12f1..fbb6896a9 100644 --- a/lib/pleroma/web/api_spec/operations/admin/report_operation.ex +++ b/lib/pleroma/web/api_spec/operations/admin/report_operation.ex @@ -107,7 +107,7 @@ defmodule Pleroma.Web.ApiSpec.Admin.ReportOperation do          request_body("Parameters", %Schema{            type: :object,            properties: %{ -            "content" => %Schema{type: :string, description: "The message"} +            content: %Schema{type: :string, description: "The message"}            }          }),        security: [%{"oAuth" => ["admin:write:reports"]}], @@ -141,7 +141,7 @@ defmodule Pleroma.Web.ApiSpec.Admin.ReportOperation do    end    def id_param do -    Operation.parameter(:id, :path, FlakeID, "Report ID", +    Operation.parameter(:id, :path, FlakeID.schema(), "Report ID",        example: "9umDrYheeY451cQnEe",        required: true      ) @@ -199,9 +199,9 @@ defmodule Pleroma.Web.ApiSpec.Admin.ReportOperation do    defp update_request do      %Schema{        type: :object, -      required: ["reports"], +      required: [:reports],        properties: %{ -        "reports" => %Schema{ +        reports: %Schema{            type: :array,            items: %Schema{              type: :object, diff --git a/lib/pleroma/web/api_spec/operations/admin/user_operation.ex b/lib/pleroma/web/api_spec/operations/admin/user_operation.ex index 49f5a4786..a5179ac39 100644 --- a/lib/pleroma/web/api_spec/operations/admin/user_operation.ex +++ b/lib/pleroma/web/api_spec/operations/admin/user_operation.ex @@ -50,7 +50,7 @@ defmodule Pleroma.Web.ApiSpec.Admin.UserOperation do              %Schema{                type: :object,                properties: %{ -                "users" => %Schema{type: :array, items: user()}, +                users: %Schema{type: :array, items: user()},                  count: %Schema{type: :integer},                  page_size: %Schema{type: :integer}                } @@ -75,7 +75,7 @@ defmodule Pleroma.Web.ApiSpec.Admin.UserOperation do              description: "POST body for creating users",              type: :object,              properties: %{ -              "users" => %Schema{ +              users: %Schema{                  type: :array,                  items: %Schema{                    type: :object, @@ -168,8 +168,8 @@ defmodule Pleroma.Web.ApiSpec.Admin.UserOperation do            %Schema{              type: :object,              properties: %{ -              "follower" => %Schema{type: :string, description: "Follower nickname"}, -              "followed" => %Schema{type: :string, description: "Followed nickname"} +              follower: %Schema{type: :string, description: "Follower nickname"}, +              followed: %Schema{type: :string, description: "Followed nickname"}              }            }          ), @@ -193,8 +193,8 @@ defmodule Pleroma.Web.ApiSpec.Admin.UserOperation do            %Schema{              type: :object,              properties: %{ -              "follower" => %Schema{type: :string, description: "Follower nickname"}, -              "followed" => %Schema{type: :string, description: "Followed nickname"} +              follower: %Schema{type: :string, description: "Follower nickname"}, +              followed: %Schema{type: :string, description: "Followed nickname"}              }            }          ), @@ -219,7 +219,7 @@ defmodule Pleroma.Web.ApiSpec.Admin.UserOperation do              description: "POST body for approving multiple users",              type: :object,              properties: %{ -              "nicknames" => %Schema{ +              nicknames: %Schema{                  type: :array,                  items: %Schema{type: :string}                } @@ -251,7 +251,7 @@ defmodule Pleroma.Web.ApiSpec.Admin.UserOperation do              description: "POST body for adding multiple suggested users",              type: :object,              properties: %{ -              "nicknames" => %Schema{ +              nicknames: %Schema{                  type: :array,                  items: %Schema{type: :string}                } @@ -283,7 +283,7 @@ defmodule Pleroma.Web.ApiSpec.Admin.UserOperation do              description: "POST body for removing multiple suggested users",              type: :object,              properties: %{ -              "nicknames" => %Schema{ +              nicknames: %Schema{                  type: :array,                  items: %Schema{type: :string}                } @@ -332,7 +332,7 @@ defmodule Pleroma.Web.ApiSpec.Admin.UserOperation do              description: "POST body for deleting multiple users",              type: :object,              properties: %{ -              "nicknames" => %Schema{ +              nicknames: %Schema{                  type: :array,                  items: %Schema{type: :string}                } @@ -364,7 +364,7 @@ defmodule Pleroma.Web.ApiSpec.Admin.UserOperation do              description: "POST body for deleting multiple users",              type: :object,              properties: %{ -              "nicknames" => %Schema{ +              nicknames: %Schema{                  type: :array,                  items: %Schema{type: :string}                } @@ -404,7 +404,7 @@ defmodule Pleroma.Web.ApiSpec.Admin.UserOperation do              description: "POST body for deleting multiple users",              type: :object,              properties: %{ -              "nicknames" => %Schema{ +              nicknames: %Schema{                  type: :array,                  items: %Schema{type: :string}                } diff --git a/lib/pleroma/web/api_spec/operations/chat_operation.ex b/lib/pleroma/web/api_spec/operations/chat_operation.ex index cee39f9d3..f56e57a41 100644 --- a/lib/pleroma/web/api_spec/operations/chat_operation.ex +++ b/lib/pleroma/web/api_spec/operations/chat_operation.ex @@ -137,7 +137,12 @@ defmodule Pleroma.Web.ApiSpec.ChatOperation do          "Deprecated due to no support for pagination. Using [/api/v2/pleroma/chats](#operation/ChatController.index2) instead is recommended.",        operationId: "ChatController.index",        parameters: [ -        Operation.parameter(:with_muted, :query, BooleanLike, "Include chats from muted users") +        Operation.parameter( +          :with_muted, +          :query, +          BooleanLike.schema(), +          "Include chats from muted users" +        )        ],        responses: %{          200 => Operation.response("The chats of the user", "application/json", chats_response()) @@ -156,7 +161,12 @@ defmodule Pleroma.Web.ApiSpec.ChatOperation do        summary: "Retrieve list of chats",        operationId: "ChatController.index2",        parameters: [ -        Operation.parameter(:with_muted, :query, BooleanLike, "Include chats from muted users") +        Operation.parameter( +          :with_muted, +          :query, +          BooleanLike.schema(), +          "Include chats from muted users" +        )          | pagination_params()        ],        responses: %{ @@ -368,9 +378,9 @@ defmodule Pleroma.Web.ApiSpec.ChatOperation do        title: "MarkAsReadRequest",        description: "POST body for marking a number of chat messages as read",        type: :object, -      required: ["last_read_id"], +      required: [:last_read_id],        properties: %{ -        "last_read_id" => %Schema{ +        last_read_id: %Schema{            type: :string,            description: "The content of your message."          } diff --git a/lib/pleroma/web/api_spec/operations/directory_operation.ex b/lib/pleroma/web/api_spec/operations/directory_operation.ex index 23fa84dff..2eca17664 100644 --- a/lib/pleroma/web/api_spec/operations/directory_operation.ex +++ b/lib/pleroma/web/api_spec/operations/directory_operation.ex @@ -29,7 +29,7 @@ defmodule Pleroma.Web.ApiSpec.DirectoryOperation do              "Order by recent activity or account creation",              required: nil            ), -          Operation.parameter(:local, :query, BooleanLike, "Include local users only") +          Operation.parameter(:local, :query, BooleanLike.schema(), "Include local users only")          ] ++ pagination_params(),        responses: %{          200 => diff --git a/lib/pleroma/web/api_spec/operations/emoji_reaction_operation.ex b/lib/pleroma/web/api_spec/operations/emoji_reaction_operation.ex index 74341d64f..8d6be89a7 100644 --- a/lib/pleroma/web/api_spec/operations/emoji_reaction_operation.ex +++ b/lib/pleroma/web/api_spec/operations/emoji_reaction_operation.ex @@ -21,7 +21,7 @@ defmodule Pleroma.Web.ApiSpec.EmojiReactionOperation do        summary:          "Get an object of emoji to account mappings with accounts that reacted to the post",        parameters: [ -        Operation.parameter(:id, :path, FlakeID, "Status ID", required: true), +        Operation.parameter(:id, :path, FlakeID.schema(), "Status ID", required: true),          Operation.parameter(:emoji, :path, :string, "Filter by a single unicode emoji",            required: nil          ), @@ -45,7 +45,7 @@ defmodule Pleroma.Web.ApiSpec.EmojiReactionOperation do        tags: ["Emoji reactions"],        summary: "React to a post with a unicode emoji",        parameters: [ -        Operation.parameter(:id, :path, FlakeID, "Status ID", required: true), +        Operation.parameter(:id, :path, FlakeID.schema(), "Status ID", required: true),          Operation.parameter(:emoji, :path, :string, "A single character unicode emoji",            required: true          ) @@ -64,7 +64,7 @@ defmodule Pleroma.Web.ApiSpec.EmojiReactionOperation do        tags: ["Emoji reactions"],        summary: "Remove a reaction to a post with a unicode emoji",        parameters: [ -        Operation.parameter(:id, :path, FlakeID, "Status ID", required: true), +        Operation.parameter(:id, :path, FlakeID.schema(), "Status ID", required: true),          Operation.parameter(:emoji, :path, :string, "A single character unicode emoji",            required: true          ) diff --git a/lib/pleroma/web/api_spec/operations/notification_operation.ex b/lib/pleroma/web/api_spec/operations/notification_operation.ex index 56aa129d2..757429d12 100644 --- a/lib/pleroma/web/api_spec/operations/notification_operation.ex +++ b/lib/pleroma/web/api_spec/operations/notification_operation.ex @@ -62,7 +62,7 @@ defmodule Pleroma.Web.ApiSpec.NotificationOperation do            Operation.parameter(              :with_muted,              :query, -            BooleanLike, +            BooleanLike.schema(),              "Include the notifications from muted users"            )          ] ++ pagination_params(), diff --git a/lib/pleroma/web/api_spec/operations/pleroma_account_operation.ex b/lib/pleroma/web/api_spec/operations/pleroma_account_operation.ex index 5375c5b15..7340653fb 100644 --- a/lib/pleroma/web/api_spec/operations/pleroma_account_operation.ex +++ b/lib/pleroma/web/api_spec/operations/pleroma_account_operation.ex @@ -142,7 +142,7 @@ defmodule Pleroma.Web.ApiSpec.PleromaAccountOperation do    end    defp id_param do -    Operation.parameter(:id, :path, FlakeID, "Account ID", +    Operation.parameter(:id, :path, FlakeID.schema(), "Account ID",        example: "9umDrYheeY451cQnEe",        required: true      ) diff --git a/lib/pleroma/web/api_spec/operations/pleroma_emoji_file_operation.ex b/lib/pleroma/web/api_spec/operations/pleroma_emoji_file_operation.ex index ebb32f448..b05bad197 100644 --- a/lib/pleroma/web/api_spec/operations/pleroma_emoji_file_operation.ex +++ b/lib/pleroma/web/api_spec/operations/pleroma_emoji_file_operation.ex @@ -36,9 +36,9 @@ defmodule Pleroma.Web.ApiSpec.PleromaEmojiFileOperation do    defp create_request do      %Schema{        type: :object, -      required: ["file"], +      required: [:file],        properties: %{ -        "file" => %Schema{ +        file: %Schema{            description:              "File needs to be uploaded with the multipart request or link to remote file",            anyOf: [ @@ -46,12 +46,12 @@ defmodule Pleroma.Web.ApiSpec.PleromaEmojiFileOperation do              %Schema{type: :string, format: :uri}            ]          }, -        "shortcode" => %Schema{ +        shortcode: %Schema{            type: :string,            description:              "Shortcode for new emoji, must be unique for all emoji. If not sended, shortcode will be taken from original filename."          }, -        "filename" => %Schema{ +        filename: %Schema{            type: :string,            description:              "New emoji file name. If not specified will be taken from original filename." @@ -81,21 +81,21 @@ defmodule Pleroma.Web.ApiSpec.PleromaEmojiFileOperation do    defp update_request do      %Schema{        type: :object, -      required: ["shortcode", "new_shortcode", "new_filename"], +      required: [:shortcode, :new_shortcode, :new_filename],        properties: %{ -        "shortcode" => %Schema{ +        shortcode: %Schema{            type: :string,            description: "Emoji file shortcode"          }, -        "new_shortcode" => %Schema{ +        new_shortcode: %Schema{            type: :string,            description: "New emoji file shortcode"          }, -        "new_filename" => %Schema{ +        new_filename: %Schema{            type: :string,            description: "New filename for emoji file"          }, -        "force" => %Schema{ +        force: %Schema{            type: :boolean,            description: "With true value to overwrite existing emoji with new shortcode",            default: false diff --git a/lib/pleroma/web/api_spec/operations/pleroma_emoji_pack_operation.ex b/lib/pleroma/web/api_spec/operations/pleroma_emoji_pack_operation.ex index 1c2b2c2b7..efa36ffdc 100644 --- a/lib/pleroma/web/api_spec/operations/pleroma_emoji_pack_operation.ex +++ b/lib/pleroma/web/api_spec/operations/pleroma_emoji_pack_operation.ex @@ -130,15 +130,15 @@ defmodule Pleroma.Web.ApiSpec.PleromaEmojiPackOperation do    defp download_request do      %Schema{        type: :object, -      required: ["url", "name"], +      required: [:url, :name],        properties: %{ -        "url" => %Schema{ +        url: %Schema{            type: :string,            format: :uri,            description: "URL of the instance to download from"          }, -        "name" => %Schema{type: :string, format: :uri, description: "Pack Name"}, -        "as" => %Schema{type: :string, format: :uri, description: "Save as"} +        name: %Schema{type: :string, format: :uri, description: "Pack Name"}, +        as: %Schema{type: :string, format: :uri, description: "Save as"}        }      }    end @@ -302,7 +302,27 @@ defmodule Pleroma.Web.ApiSpec.PleromaEmojiPackOperation do    defp update_request do      %Schema{        type: :object, -      properties: %{"metadata" => metadata()} +      properties: %{ +        metadata: %Schema{ +          type: :object, +          description: "Metadata to replace the old one", +          properties: %{ +            license: %Schema{type: :string}, +            homepage: %Schema{type: :string, format: :uri}, +            description: %Schema{type: :string}, +            "fallback-src": %Schema{ +              type: :string, +              format: :uri, +              description: "Fallback url to download pack from" +            }, +            "fallback-src-sha256": %Schema{ +              type: :string, +              description: "SHA256 encoded for fallback pack archive" +            }, +            "share-files": %Schema{type: :boolean, description: "Is pack allowed for sharing?"} +          } +        } +      }      }    end diff --git a/lib/pleroma/web/api_spec/operations/pleroma_mascot_operation.ex b/lib/pleroma/web/api_spec/operations/pleroma_mascot_operation.ex index 49c50751b..775e27219 100644 --- a/lib/pleroma/web/api_spec/operations/pleroma_mascot_operation.ex +++ b/lib/pleroma/web/api_spec/operations/pleroma_mascot_operation.ex @@ -39,7 +39,7 @@ defmodule Pleroma.Web.ApiSpec.PleromaMascotOperation do            %Schema{              type: :object,              properties: %{ -              "file" => %Schema{type: :string, format: :binary} +              file: %Schema{type: :string, format: :binary}              }            },            required: true diff --git a/lib/pleroma/web/api_spec/operations/pleroma_notification_operation.ex b/lib/pleroma/web/api_spec/operations/pleroma_notification_operation.ex index 79990cb78..a994345db 100644 --- a/lib/pleroma/web/api_spec/operations/pleroma_notification_operation.ex +++ b/lib/pleroma/web/api_spec/operations/pleroma_notification_operation.ex @@ -24,11 +24,8 @@ defmodule Pleroma.Web.ApiSpec.PleromaNotificationOperation do          request_body("Parameters", %Schema{            type: :object,            properties: %{ -            "id" => %Schema{type: :integer, description: "A single notification ID to read"}, -            "max_id" => %Schema{ -              type: :integer, -              description: "Read all notifications up to this ID" -            } +            id: %Schema{type: :integer, description: "A single notification ID to read"}, +            max_id: %Schema{type: :integer, description: "Read all notifications up to this ID"}            }          }),        security: [%{"oAuth" => ["write:notifications"]}], diff --git a/lib/pleroma/web/api_spec/operations/pleroma_status_operation.ex b/lib/pleroma/web/api_spec/operations/pleroma_status_operation.ex index 6e69c5269..77c604952 100644 --- a/lib/pleroma/web/api_spec/operations/pleroma_status_operation.ex +++ b/lib/pleroma/web/api_spec/operations/pleroma_status_operation.ex @@ -37,7 +37,7 @@ defmodule Pleroma.Web.ApiSpec.PleromaStatusOperation do    end    def id_param do -    Operation.parameter(:id, :path, FlakeID, "Status ID", +    Operation.parameter(:id, :path, FlakeID.schema(), "Status ID",        example: "9umDrYheeY451cQnEe",        required: true      ) diff --git a/lib/pleroma/web/api_spec/operations/poll_operation.ex b/lib/pleroma/web/api_spec/operations/poll_operation.ex index efd784f03..6dd251743 100644 --- a/lib/pleroma/web/api_spec/operations/poll_operation.ex +++ b/lib/pleroma/web/api_spec/operations/poll_operation.ex @@ -47,7 +47,7 @@ defmodule Pleroma.Web.ApiSpec.PollOperation do    end    defp id_param do -    Operation.parameter(:id, :path, FlakeID, "Poll ID", +    Operation.parameter(:id, :path, FlakeID.schema(), "Poll ID",        example: "123",        required: true      ) diff --git a/lib/pleroma/web/api_spec/operations/scheduled_activity_operation.ex b/lib/pleroma/web/api_spec/operations/scheduled_activity_operation.ex index 802d3b6dd..c7ed02ff3 100644 --- a/lib/pleroma/web/api_spec/operations/scheduled_activity_operation.ex +++ b/lib/pleroma/web/api_spec/operations/scheduled_activity_operation.ex @@ -88,7 +88,7 @@ defmodule Pleroma.Web.ApiSpec.ScheduledActivityOperation do    end    defp id_param do -    Operation.parameter(:id, :path, FlakeID, "Poll ID", +    Operation.parameter(:id, :path, FlakeID.schema(), "Poll ID",        example: "123",        required: true      ) diff --git a/lib/pleroma/web/api_spec/operations/search_operation.ex b/lib/pleroma/web/api_spec/operations/search_operation.ex index 1a7e49be4..539743ba3 100644 --- a/lib/pleroma/web/api_spec/operations/search_operation.ex +++ b/lib/pleroma/web/api_spec/operations/search_operation.ex @@ -70,7 +70,7 @@ defmodule Pleroma.Web.ApiSpec.SearchOperation do          Operation.parameter(            :account_id,            :query, -          FlakeID, +          FlakeID.schema(),            "If provided, statuses returned will be authored only by this account"          ),          Operation.parameter( @@ -116,7 +116,7 @@ defmodule Pleroma.Web.ApiSpec.SearchOperation do          Operation.parameter(            :account_id,            :query, -          FlakeID, +          FlakeID.schema(),            "If provided, statuses returned will be authored only by this account"          ),          Operation.parameter( diff --git a/lib/pleroma/web/api_spec/operations/status_operation.ex b/lib/pleroma/web/api_spec/operations/status_operation.ex index f52372c18..ef4e34044 100644 --- a/lib/pleroma/web/api_spec/operations/status_operation.ex +++ b/lib/pleroma/web/api_spec/operations/status_operation.ex @@ -39,7 +39,7 @@ defmodule Pleroma.Web.ApiSpec.StatusOperation do          Operation.parameter(            :with_muted,            :query, -          BooleanLike, +          BooleanLike.schema(),            "Include reactions from muted acccounts."          )        ], @@ -82,7 +82,7 @@ defmodule Pleroma.Web.ApiSpec.StatusOperation do          Operation.parameter(            :with_muted,            :query, -          BooleanLike, +          BooleanLike.schema(),            "Include reactions from muted acccounts."          )        ], @@ -685,7 +685,7 @@ defmodule Pleroma.Web.ApiSpec.StatusOperation do    end    def id_param do -    Operation.parameter(:id, :path, FlakeID, "Status ID", +    Operation.parameter(:id, :path, FlakeID.schema(), "Status ID",        example: "9umDrYheeY451cQnEe",        required: true      ) diff --git a/lib/pleroma/web/api_spec/operations/timeline_operation.ex b/lib/pleroma/web/api_spec/operations/timeline_operation.ex index fbe3f763a..f55e59805 100644 --- a/lib/pleroma/web/api_spec/operations/timeline_operation.ex +++ b/lib/pleroma/web/api_spec/operations/timeline_operation.ex @@ -176,7 +176,12 @@ defmodule Pleroma.Web.ApiSpec.TimelineOperation do    end    defp with_muted_param do -    Operation.parameter(:with_muted, :query, BooleanLike, "Include activities by muted users") +    Operation.parameter( +      :with_muted, +      :query, +      BooleanLike.schema(), +      "Include activities by muted users" +    )    end    defp exclude_visibilities_param do diff --git a/lib/pleroma/web/api_spec/operations/twitter_util_operation.ex b/lib/pleroma/web/api_spec/operations/twitter_util_operation.ex index b536bb6c1..724d873c0 100644 --- a/lib/pleroma/web/api_spec/operations/twitter_util_operation.ex +++ b/lib/pleroma/web/api_spec/operations/twitter_util_operation.ex @@ -146,13 +146,13 @@ defmodule Pleroma.Web.ApiSpec.TwitterUtilOperation do          Operation.parameter(            :block_from_strangers,            :query, -          BooleanLike, +          BooleanLike.schema(),            "blocks notifications from accounts you do not follow"          ),          Operation.parameter(            :hide_notification_contents,            :query, -          BooleanLike, +          BooleanLike.schema(),            "removes the contents of a message from the push notification"          )        ], @@ -404,10 +404,10 @@ defmodule Pleroma.Web.ApiSpec.TwitterUtilOperation do        title: "RemoteInteractionRequest",        description: "POST body for remote interaction",        type: :object, -      required: ["ap_id", "profile"], +      required: [:ap_id, :profile],        properties: %{ -        "ap_id" => %Schema{type: :string, description: "Profile or status ActivityPub ID"}, -        "profile" => %Schema{type: :string, description: "Remote profile webfinger"} +        ap_id: %Schema{type: :string, description: "Profile or status ActivityPub ID"}, +        profile: %Schema{type: :string, description: "Remote profile webfinger"}        }      }    end diff --git a/lib/pleroma/web/api_spec/operations/user_import_operation.ex b/lib/pleroma/web/api_spec/operations/user_import_operation.ex index d12ebd968..e99e6e648 100644 --- a/lib/pleroma/web/api_spec/operations/user_import_operation.ex +++ b/lib/pleroma/web/api_spec/operations/user_import_operation.ex @@ -61,9 +61,9 @@ defmodule Pleroma.Web.ApiSpec.UserImportOperation do    defp import_request do      %Schema{        type: :object, -      required: ["list"], +      required: [:list],        properties: %{ -        "list" => %Schema{ +        list: %Schema{            description:              "STRING or FILE containing a whitespace-separated list of accounts to import.",            anyOf: [ diff --git a/lib/pleroma/web/controller_helper.ex b/lib/pleroma/web/controller_helper.ex index 0c7fc17f4..36f7442b3 100644 --- a/lib/pleroma/web/controller_helper.ex +++ b/lib/pleroma/web/controller_helper.ex @@ -93,10 +93,7 @@ defmodule Pleroma.Web.ControllerHelper do    end    def try_render(conn, target, params) when is_binary(target) do -    case render(conn, target, params) do -      nil -> render_error(conn, :not_implemented, "Can't display this activity") -      res -> res -    end +    render(conn, target, params)    end    def try_render(conn, _, _) do diff --git a/lib/pleroma/web/mastodon_api/controllers/account_controller.ex b/lib/pleroma/web/mastodon_api/controllers/account_controller.ex index fdf9d2dfb..1b5de4b45 100644 --- a/lib/pleroma/web/mastodon_api/controllers/account_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/account_controller.ex @@ -472,7 +472,7 @@ defmodule Pleroma.Web.MastodonAPI.AccountController do    @doc "POST /api/v1/accounts/:id/note"    def note( -        %{assigns: %{user: noter, account: target}, body_params: %{"comment" => comment}} = conn, +        %{assigns: %{user: noter, account: target}, body_params: %{comment: comment}} = conn,          _params        ) do      with {:ok, _user_note} <- UserNote.create(noter, target, comment) do @@ -513,7 +513,7 @@ defmodule Pleroma.Web.MastodonAPI.AccountController do    end    @doc "POST /api/v1/follows" -  def follow_by_uri(%{body_params: %{"uri" => uri}} = conn, _) do +  def follow_by_uri(%{body_params: %{uri: uri}} = conn, _) do      case User.get_cached_by_nickname(uri) do        %User{} = user ->          conn diff --git a/lib/pleroma/web/mastodon_api/controllers/domain_block_controller.ex b/lib/pleroma/web/mastodon_api/controllers/domain_block_controller.ex index b2e347ed9..4615794a1 100644 --- a/lib/pleroma/web/mastodon_api/controllers/domain_block_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/domain_block_controller.ex @@ -8,7 +8,7 @@ defmodule Pleroma.Web.MastodonAPI.DomainBlockController do    alias Pleroma.User    alias Pleroma.Web.Plugs.OAuthScopesPlug -  plug(Pleroma.Web.ApiSpec.CastAndValidate) +  plug(Pleroma.Web.ApiSpec.CastAndValidate, replace_params: false)    defdelegate open_api_operation(action), to: Pleroma.Web.ApiSpec.DomainBlockOperation    plug( @@ -27,23 +27,31 @@ defmodule Pleroma.Web.MastodonAPI.DomainBlockController do    end    @doc "POST /api/v1/domain_blocks" -  def create(%{assigns: %{user: blocker}, body_params: %{domain: domain}} = conn, _params) do +  def create( +        %{assigns: %{user: blocker}, private: %{open_api_spex: %{body_params: %{domain: domain}}}} = +          conn, +        _params +      ) do      User.block_domain(blocker, domain)      json(conn, %{})    end -  def create(%{assigns: %{user: blocker}} = conn, %{domain: domain}) do +  def create(%{assigns: %{user: blocker}} = conn, %{"domain" => domain}) do      User.block_domain(blocker, domain)      json(conn, %{})    end    @doc "DELETE /api/v1/domain_blocks" -  def delete(%{assigns: %{user: blocker}, body_params: %{domain: domain}} = conn, _params) do +  def delete( +        %{assigns: %{user: blocker}, private: %{open_api_spex: %{body_params: %{domain: domain}}}} = +          conn, +        _params +      ) do      User.unblock_domain(blocker, domain)      json(conn, %{})    end -  def delete(%{assigns: %{user: blocker}} = conn, %{domain: domain}) do +  def delete(%{assigns: %{user: blocker}} = conn, %{"domain" => domain}) do      User.unblock_domain(blocker, domain)      json(conn, %{})    end diff --git a/lib/pleroma/web/mastodon_api/views/status_view.ex b/lib/pleroma/web/mastodon_api/views/status_view.ex index 0e2e604f5..6303e72ce 100644 --- a/lib/pleroma/web/mastodon_api/views/status_view.ex +++ b/lib/pleroma/web/mastodon_api/views/status_view.ex @@ -796,8 +796,6 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do      URI.merge(page_url_data, image_url_data) |> to_string    end -  defp build_image_url(_, _), do: nil -    defp get_source_text(%{"content" => content} = _source) do      content    end diff --git a/lib/pleroma/web/media_proxy/media_proxy_controller.ex b/lib/pleroma/web/media_proxy/media_proxy_controller.ex index bda5b36ed..c11484ecb 100644 --- a/lib/pleroma/web/media_proxy/media_proxy_controller.ex +++ b/lib/pleroma/web/media_proxy/media_proxy_controller.ex @@ -56,7 +56,7 @@ defmodule Pleroma.Web.MediaProxy.MediaProxyController do      media_proxy_url = MediaProxy.url(url)      with {:ok, %{status: status} = head_response} when status in 200..299 <- -           Pleroma.HTTP.request("HEAD", media_proxy_url, [], [], pool: :media) do +           Pleroma.HTTP.request(:head, media_proxy_url, "", [], pool: :media) do        content_type = Tesla.get_header(head_response, "content-type")        content_length = Tesla.get_header(head_response, "content-length")        content_length = content_length && String.to_integer(content_length) diff --git a/lib/pleroma/web/pleroma_api/controllers/chat_controller.ex b/lib/pleroma/web/pleroma_api/controllers/chat_controller.ex index dc0f2cfe3..6158af60e 100644 --- a/lib/pleroma/web/pleroma_api/controllers/chat_controller.ex +++ b/lib/pleroma/web/pleroma_api/controllers/chat_controller.ex @@ -120,7 +120,7 @@ defmodule Pleroma.Web.PleromaAPI.ChatController do    end    def mark_as_read( -        %{body_params: %{"last_read_id" => last_read_id}, assigns: %{user: user}} = conn, +        %{body_params: %{last_read_id: last_read_id}, assigns: %{user: user}} = conn,          %{id: id}        ) do      with {:ok, chat} <- Chat.get_by_user_and_id(user, id), diff --git a/lib/pleroma/web/pleroma_api/controllers/emoji_file_controller.ex b/lib/pleroma/web/pleroma_api/controllers/emoji_file_controller.ex index 618b924a0..f854cf9c1 100644 --- a/lib/pleroma/web/pleroma_api/controllers/emoji_file_controller.ex +++ b/lib/pleroma/web/pleroma_api/controllers/emoji_file_controller.ex @@ -23,11 +23,11 @@ defmodule Pleroma.Web.PleromaAPI.EmojiFileController do    defdelegate open_api_operation(action), to: ApiSpec.PleromaEmojiFileOperation    def create(%{body_params: params} = conn, %{name: pack_name}) do -    filename = params["filename"] || get_filename(params["file"]) -    shortcode = params["shortcode"] || Path.basename(filename, Path.extname(filename)) +    filename = params[:filename] || get_filename(params[:file]) +    shortcode = params[:shortcode] || Path.basename(filename, Path.extname(filename))      with {:ok, pack} <- Pack.load_pack(pack_name), -         {:ok, file} <- get_file(params["file"]), +         {:ok, file} <- get_file(params[:file]),           {:ok, pack} <- Pack.add_file(pack, shortcode, filename, file) do        json(conn, pack.files)      else @@ -49,10 +49,10 @@ defmodule Pleroma.Web.PleromaAPI.EmojiFileController do      end    end -  def update(%{body_params: %{"shortcode" => shortcode} = params} = conn, %{name: pack_name}) do -    new_shortcode = params["new_shortcode"] -    new_filename = params["new_filename"] -    force = params["force"] +  def update(%{body_params: %{shortcode: shortcode} = params} = conn, %{name: pack_name}) do +    new_shortcode = params[:new_shortcode] +    new_filename = params[:new_filename] +    force = params[:force]      with {:ok, pack} <- Pack.load_pack(pack_name),           {:ok, pack} <- Pack.update_file(pack, shortcode, new_shortcode, new_filename, force) do @@ -128,9 +128,9 @@ defmodule Pleroma.Web.PleromaAPI.EmojiFileController do    defp get_filename(%Plug.Upload{filename: filename}), do: filename    defp get_filename(url) when is_binary(url), do: Path.basename(url) -  defp get_file(%Plug.Upload{} = file), do: {:ok, file} +  def get_file(%Plug.Upload{} = file), do: {:ok, file} -  defp get_file(url) when is_binary(url) do +  def get_file(url) when is_binary(url) do      with {:ok, %Tesla.Env{body: body, status: code, headers: headers}}           when code in 200..299 <- Pleroma.HTTP.get(url) do        path = Plug.Upload.random_file!("emoji") diff --git a/lib/pleroma/web/pleroma_api/controllers/emoji_pack_controller.ex b/lib/pleroma/web/pleroma_api/controllers/emoji_pack_controller.ex index 64fd95759..420fea12c 100644 --- a/lib/pleroma/web/pleroma_api/controllers/emoji_pack_controller.ex +++ b/lib/pleroma/web/pleroma_api/controllers/emoji_pack_controller.ex @@ -109,8 +109,8 @@ defmodule Pleroma.Web.PleromaAPI.EmojiPackController do      end    end -  def download(%{body_params: %{"url" => url, "name" => name} = params} = conn, _) do -    with {:ok, _pack} <- Pack.download(name, url, params["as"]) do +  def download(%{body_params: %{url: url, name: name} = params} = conn, _) do +    with {:ok, _pack} <- Pack.download(name, url, params[:as]) do        json(conn, "ok")      else        {:error, :not_shareable} -> @@ -184,7 +184,7 @@ defmodule Pleroma.Web.PleromaAPI.EmojiPackController do      end    end -  def update(%{body_params: %{"metadata" => metadata}} = conn, %{name: name}) do +  def update(%{body_params: %{metadata: metadata}} = conn, %{name: name}) do      with {:ok, pack} <- Pack.update_metadata(name, metadata) do        json(conn, pack.pack)      else diff --git a/lib/pleroma/web/pleroma_api/controllers/mascot_controller.ex b/lib/pleroma/web/pleroma_api/controllers/mascot_controller.ex index 0533c348c..2b6093753 100644 --- a/lib/pleroma/web/pleroma_api/controllers/mascot_controller.ex +++ b/lib/pleroma/web/pleroma_api/controllers/mascot_controller.ex @@ -22,9 +22,9 @@ defmodule Pleroma.Web.PleromaAPI.MascotController do    end    @doc "PUT /api/v1/pleroma/mascot" -  def update(%{assigns: %{user: user}, body_params: %{"file" => file}} = conn, _) do -    with {_, "image" <> _} <- {:content_type, file.content_type}, -         {_, {:ok, object}} <- {:upload, ActivityPub.upload(file, actor: User.ap_id(user))} do +  def update(%{assigns: %{user: user}, body_params: %{file: file}} = conn, _) do +    with {:content_type, "image" <> _} <- {:content_type, file.content_type}, +         {:ok, object} <- ActivityPub.upload(file, actor: User.ap_id(user)) do        attachment = render_attachment(object)        {:ok, _user} = User.mascot_update(user, attachment) diff --git a/lib/pleroma/web/pleroma_api/controllers/notification_controller.ex b/lib/pleroma/web/pleroma_api/controllers/notification_controller.ex index 0c6ec29f5..87ea81cef 100644 --- a/lib/pleroma/web/pleroma_api/controllers/notification_controller.ex +++ b/lib/pleroma/web/pleroma_api/controllers/notification_controller.ex @@ -16,7 +16,7 @@ defmodule Pleroma.Web.PleromaAPI.NotificationController do    defdelegate open_api_operation(action), to: Pleroma.Web.ApiSpec.PleromaNotificationOperation -  def mark_as_read(%{assigns: %{user: user}, body_params: %{"id" => notification_id}} = conn, _) do +  def mark_as_read(%{assigns: %{user: user}, body_params: %{id: notification_id}} = conn, _) do      with {:ok, notification} <- Notification.read_one(user, notification_id) do        render(conn, "show.json", notification: notification, for: user)      else @@ -27,7 +27,7 @@ defmodule Pleroma.Web.PleromaAPI.NotificationController do      end    end -  def mark_as_read(%{assigns: %{user: user}, body_params: %{"max_id" => max_id}} = conn, _) do +  def mark_as_read(%{assigns: %{user: user}, body_params: %{max_id: max_id}} = conn, _) do      notifications =        user        |> Notification.set_read_up_to(max_id) diff --git a/lib/pleroma/web/pleroma_api/controllers/user_import_controller.ex b/lib/pleroma/web/pleroma_api/controllers/user_import_controller.ex index d0ae6d6e5..90428a532 100644 --- a/lib/pleroma/web/pleroma_api/controllers/user_import_controller.ex +++ b/lib/pleroma/web/pleroma_api/controllers/user_import_controller.ex @@ -18,11 +18,11 @@ defmodule Pleroma.Web.PleromaAPI.UserImportController do    plug(Pleroma.Web.ApiSpec.CastAndValidate)    defdelegate open_api_operation(action), to: ApiSpec.UserImportOperation -  def follow(%{body_params: %{"list" => %Plug.Upload{path: path}}} = conn, _) do -    follow(%Plug.Conn{conn | body_params: %{"list" => File.read!(path)}}, %{}) +  def follow(%{body_params: %{list: %Plug.Upload{path: path}}} = conn, _) do +    follow(%Plug.Conn{conn | body_params: %{list: File.read!(path)}}, %{})    end -  def follow(%{assigns: %{user: follower}, body_params: %{"list" => list}} = conn, _) do +  def follow(%{assigns: %{user: follower}, body_params: %{list: list}} = conn, _) do      identifiers =        list        |> String.split("\n") @@ -35,20 +35,20 @@ defmodule Pleroma.Web.PleromaAPI.UserImportController do      json(conn, "job started")    end -  def blocks(%{body_params: %{"list" => %Plug.Upload{path: path}}} = conn, _) do -    blocks(%Plug.Conn{conn | body_params: %{"list" => File.read!(path)}}, %{}) +  def blocks(%{body_params: %{list: %Plug.Upload{path: path}}} = conn, _) do +    blocks(%Plug.Conn{conn | body_params: %{list: File.read!(path)}}, %{})    end -  def blocks(%{assigns: %{user: blocker}, body_params: %{"list" => list}} = conn, _) do +  def blocks(%{assigns: %{user: blocker}, body_params: %{list: list}} = conn, _) do      User.Import.blocks_import(blocker, prepare_user_identifiers(list))      json(conn, "job started")    end -  def mutes(%{body_params: %{"list" => %Plug.Upload{path: path}}} = conn, _) do -    mutes(%Plug.Conn{conn | body_params: %{"list" => File.read!(path)}}, %{}) +  def mutes(%{body_params: %{list: %Plug.Upload{path: path}}} = conn, _) do +    mutes(%Plug.Conn{conn | body_params: %{list: File.read!(path)}}, %{})    end -  def mutes(%{assigns: %{user: user}, body_params: %{"list" => list}} = conn, _) do +  def mutes(%{assigns: %{user: user}, body_params: %{list: list}} = conn, _) do      User.Import.mutes_import(user, prepare_user_identifiers(list))      json(conn, "job started")    end diff --git a/lib/pleroma/web/twitter_api/controllers/util_controller.ex b/lib/pleroma/web/twitter_api/controllers/util_controller.ex index a74c806a6..c8ecf5eff 100644 --- a/lib/pleroma/web/twitter_api/controllers/util_controller.ex +++ b/lib/pleroma/web/twitter_api/controllers/util_controller.ex @@ -150,10 +150,7 @@ defmodule Pleroma.Web.TwitterAPI.UtilController do      end    end -  def remote_interaction( -        %{body_params: %{"ap_id" => ap_id, "profile" => profile}} = conn, -        _params -      ) do +  def remote_interaction(%{body_params: %{ap_id: ap_id, profile: profile}} = conn, _params) do      with {:ok, %{"subscribe_address" => template}} <- WebFinger.finger(profile) do        conn        |> json(%{url: String.replace(template, "{uri}", ap_id)})  | 
