forked from AkkomaGang/akkoma
Pleroma.Web.ControllerHelper.truthy_param?/1 --> Pleroma.Web.Params.truthy_param?/1
Breaks cycle in lib/pleroma/web/api_spec/operations/status_operation.ex
This commit is contained in:
parent
99f8605582
commit
0877b120c3
7 changed files with 27 additions and 21 deletions
|
@ -34,7 +34,7 @@ defmodule Pleroma.Web.ApiSpec.Schemas.BooleanLike do
|
||||||
|
|
||||||
def cast(%Cast{value: value} = context) do
|
def cast(%Cast{value: value} = context) do
|
||||||
context
|
context
|
||||||
|> Map.put(:value, Pleroma.Web.ControllerHelper.truthy_param?(value))
|
|> Map.put(:value, Pleroma.Web.Params.truthy_param?(value))
|
||||||
|> Cast.ok()
|
|> Cast.ok()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -223,7 +223,7 @@ defp object(draft) do
|
||||||
end
|
end
|
||||||
|
|
||||||
defp preview?(draft) do
|
defp preview?(draft) do
|
||||||
preview? = Pleroma.Web.ControllerHelper.truthy_param?(draft.params[:preview])
|
preview? = Pleroma.Web.Params.truthy_param?(draft.params[:preview])
|
||||||
%__MODULE__{draft | preview?: preview?}
|
%__MODULE__{draft | preview?: preview?}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,6 @@
|
||||||
|
|
||||||
defmodule Pleroma.Web.CommonAPI.Utils do
|
defmodule Pleroma.Web.CommonAPI.Utils do
|
||||||
import Pleroma.Web.Gettext
|
import Pleroma.Web.Gettext
|
||||||
import Pleroma.Web.ControllerHelper, only: [truthy_param?: 1]
|
|
||||||
|
|
||||||
alias Calendar.Strftime
|
alias Calendar.Strftime
|
||||||
alias Pleroma.Activity
|
alias Pleroma.Activity
|
||||||
|
@ -18,6 +17,7 @@ defmodule Pleroma.Web.CommonAPI.Utils do
|
||||||
alias Pleroma.Web.ActivityPub.Visibility
|
alias Pleroma.Web.ActivityPub.Visibility
|
||||||
alias Pleroma.Web.CommonAPI.ActivityDraft
|
alias Pleroma.Web.CommonAPI.ActivityDraft
|
||||||
alias Pleroma.Web.MediaProxy
|
alias Pleroma.Web.MediaProxy
|
||||||
|
alias Pleroma.Web.Params
|
||||||
alias Pleroma.Web.Plugs.AuthenticationPlug
|
alias Pleroma.Web.Plugs.AuthenticationPlug
|
||||||
|
|
||||||
require Logger
|
require Logger
|
||||||
|
@ -160,7 +160,7 @@ def make_poll_data(%{poll: %{options: options, expires_in: expires_in}} = data)
|
||||||
|> DateTime.add(expires_in)
|
|> DateTime.add(expires_in)
|
||||||
|> DateTime.to_iso8601()
|
|> DateTime.to_iso8601()
|
||||||
|
|
||||||
key = if truthy_param?(data.poll[:multiple]), do: "anyOf", else: "oneOf"
|
key = if Params.truthy_param?(data.poll[:multiple]), do: "anyOf", else: "oneOf"
|
||||||
poll = %{"type" => "Question", key => option_notes, "closed" => end_time}
|
poll = %{"type" => "Question", key => option_notes, "closed" => end_time}
|
||||||
|
|
||||||
{:ok, {poll, emoji}}
|
{:ok, {poll, emoji}}
|
||||||
|
@ -203,7 +203,7 @@ def make_content_html(%ActivityDraft{} = draft) do
|
||||||
attachment_links =
|
attachment_links =
|
||||||
draft.params
|
draft.params
|
||||||
|> Map.get("attachment_links", Config.get([:instance, :attachment_links]))
|
|> Map.get("attachment_links", Config.get([:instance, :attachment_links]))
|
||||||
|> truthy_param?()
|
|> Params.truthy_param?()
|
||||||
|
|
||||||
content_type = get_content_type(draft.params[:content_type])
|
content_type = get_content_type(draft.params[:content_type])
|
||||||
|
|
||||||
|
|
|
@ -6,17 +6,7 @@ defmodule Pleroma.Web.ControllerHelper do
|
||||||
use Pleroma.Web, :controller
|
use Pleroma.Web, :controller
|
||||||
|
|
||||||
alias Pleroma.Pagination
|
alias Pleroma.Pagination
|
||||||
|
alias Pleroma.Web.Params
|
||||||
# As in Mastodon API, per https://api.rubyonrails.org/classes/ActiveModel/Type/Boolean.html
|
|
||||||
@falsy_param_values [false, 0, "0", "f", "F", "false", "False", "FALSE", "off", "OFF"]
|
|
||||||
|
|
||||||
def explicitly_falsy_param?(value), do: value in @falsy_param_values
|
|
||||||
|
|
||||||
# Note: `nil` and `""` are considered falsy values in Pleroma
|
|
||||||
def falsy_param?(value),
|
|
||||||
do: explicitly_falsy_param?(value) or value in [nil, ""]
|
|
||||||
|
|
||||||
def truthy_param?(value), do: not falsy_param?(value)
|
|
||||||
|
|
||||||
def json_response(conn, status, _) when status in [204, :no_content] do
|
def json_response(conn, status, _) when status in [204, :no_content] do
|
||||||
conn
|
conn
|
||||||
|
@ -123,6 +113,6 @@ def embed_relationships?(params) do
|
||||||
# To do once OpenAPI transition mess is over: just `truthy_param?(params[:with_relationships])`
|
# To do once OpenAPI transition mess is over: just `truthy_param?(params[:with_relationships])`
|
||||||
params
|
params
|
||||||
|> Map.get(:with_relationships, params["with_relationships"])
|
|> Map.get(:with_relationships, params["with_relationships"])
|
||||||
|> truthy_param?()
|
|> Params.truthy_param?()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -8,7 +8,6 @@ defmodule Pleroma.Web.MastodonAPI.AccountController do
|
||||||
import Pleroma.Web.ControllerHelper,
|
import Pleroma.Web.ControllerHelper,
|
||||||
only: [
|
only: [
|
||||||
add_link_headers: 2,
|
add_link_headers: 2,
|
||||||
truthy_param?: 1,
|
|
||||||
assign_account_by_id: 2,
|
assign_account_by_id: 2,
|
||||||
embed_relationships?: 1,
|
embed_relationships?: 1,
|
||||||
json_response: 3
|
json_response: 3
|
||||||
|
@ -25,6 +24,7 @@ defmodule Pleroma.Web.MastodonAPI.AccountController do
|
||||||
alias Pleroma.Web.MastodonAPI.MastodonAPIController
|
alias Pleroma.Web.MastodonAPI.MastodonAPIController
|
||||||
alias Pleroma.Web.MastodonAPI.StatusView
|
alias Pleroma.Web.MastodonAPI.StatusView
|
||||||
alias Pleroma.Web.OAuth.OAuthController
|
alias Pleroma.Web.OAuth.OAuthController
|
||||||
|
alias Pleroma.Web.Params
|
||||||
alias Pleroma.Web.Plugs.EnsurePublicOrAuthenticatedPlug
|
alias Pleroma.Web.Plugs.EnsurePublicOrAuthenticatedPlug
|
||||||
alias Pleroma.Web.Plugs.OAuthScopesPlug
|
alias Pleroma.Web.Plugs.OAuthScopesPlug
|
||||||
alias Pleroma.Web.Plugs.RateLimiter
|
alias Pleroma.Web.Plugs.RateLimiter
|
||||||
|
@ -188,7 +188,7 @@ def update_credentials(%{assigns: %{user: user}, body_params: params} = conn, _p
|
||||||
:accepts_chat_messages
|
:accepts_chat_messages
|
||||||
]
|
]
|
||||||
|> Enum.reduce(%{}, fn key, acc ->
|
|> Enum.reduce(%{}, fn key, acc ->
|
||||||
Maps.put_if_present(acc, key, params[key], &{:ok, truthy_param?(&1)})
|
Maps.put_if_present(acc, key, params[key], &{:ok, Params.truthy_param?(&1)})
|
||||||
end)
|
end)
|
||||||
|> Maps.put_if_present(:name, params[:display_name])
|
|> Maps.put_if_present(:name, params[:display_name])
|
||||||
|> Maps.put_if_present(:bio, params[:note])
|
|> Maps.put_if_present(:bio, params[:note])
|
||||||
|
|
|
@ -13,7 +13,6 @@ defmodule Pleroma.Web.OAuth.OAuthController do
|
||||||
alias Pleroma.Repo
|
alias Pleroma.Repo
|
||||||
alias Pleroma.User
|
alias Pleroma.User
|
||||||
alias Pleroma.Web.Auth.WrapperAuthenticator, as: Authenticator
|
alias Pleroma.Web.Auth.WrapperAuthenticator, as: Authenticator
|
||||||
alias Pleroma.Web.ControllerHelper
|
|
||||||
alias Pleroma.Web.OAuth.App
|
alias Pleroma.Web.OAuth.App
|
||||||
alias Pleroma.Web.OAuth.Authorization
|
alias Pleroma.Web.OAuth.Authorization
|
||||||
alias Pleroma.Web.OAuth.MFAController
|
alias Pleroma.Web.OAuth.MFAController
|
||||||
|
@ -23,6 +22,7 @@ defmodule Pleroma.Web.OAuth.OAuthController do
|
||||||
alias Pleroma.Web.OAuth.Token
|
alias Pleroma.Web.OAuth.Token
|
||||||
alias Pleroma.Web.OAuth.Token.Strategy.RefreshToken
|
alias Pleroma.Web.OAuth.Token.Strategy.RefreshToken
|
||||||
alias Pleroma.Web.OAuth.Token.Strategy.Revoke, as: RevokeToken
|
alias Pleroma.Web.OAuth.Token.Strategy.Revoke, as: RevokeToken
|
||||||
|
alias Pleroma.Web.Params
|
||||||
alias Pleroma.Web.Plugs.RateLimiter
|
alias Pleroma.Web.Plugs.RateLimiter
|
||||||
|
|
||||||
require Logger
|
require Logger
|
||||||
|
@ -50,7 +50,7 @@ def authorize(%Plug.Conn{} = conn, %{"authorization" => _} = params) do
|
||||||
end
|
end
|
||||||
|
|
||||||
def authorize(%Plug.Conn{assigns: %{token: %Token{}}} = conn, %{"force_login" => _} = params) do
|
def authorize(%Plug.Conn{assigns: %{token: %Token{}}} = conn, %{"force_login" => _} = params) do
|
||||||
if ControllerHelper.truthy_param?(params["force_login"]) do
|
if Params.truthy_param?(params["force_login"]) do
|
||||||
do_authorize(conn, params)
|
do_authorize(conn, params)
|
||||||
else
|
else
|
||||||
handle_existing_authorization(conn, params)
|
handle_existing_authorization(conn, params)
|
||||||
|
|
16
lib/pleroma/web/params.ex
Normal file
16
lib/pleroma/web/params.ex
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
# Pleroma: A lightweight social networking server
|
||||||
|
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
||||||
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
|
defmodule Pleroma.Web.Params do
|
||||||
|
# As in Mastodon API, per https://api.rubyonrails.org/classes/ActiveModel/Type/Boolean.html
|
||||||
|
@falsy_param_values [false, 0, "0", "f", "F", "false", "False", "FALSE", "off", "OFF"]
|
||||||
|
|
||||||
|
defp explicitly_falsy_param?(value), do: value in @falsy_param_values
|
||||||
|
|
||||||
|
# Note: `nil` and `""` are considered falsy values in Pleroma
|
||||||
|
defp falsy_param?(value),
|
||||||
|
do: explicitly_falsy_param?(value) or value in [nil, ""]
|
||||||
|
|
||||||
|
def truthy_param?(value), do: not falsy_param?(value)
|
||||||
|
end
|
Loading…
Reference in a new issue