This commit is contained in:
parent
8a3b7a3757
commit
4940a49a50
4 changed files with 50 additions and 3 deletions
|
@ -69,6 +69,10 @@ def get_by_user_and_frontend_name_and_profile_name(
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def delete_profile(profile) do
|
||||||
|
Repo.delete(profile)
|
||||||
|
end
|
||||||
|
|
||||||
defp validate_settings_length(
|
defp validate_settings_length(
|
||||||
%Ecto.Changeset{changes: %{settings: settings}} = changeset,
|
%Ecto.Changeset{changes: %{settings: settings}} = changeset,
|
||||||
max_length
|
max_length
|
||||||
|
|
|
@ -18,7 +18,7 @@ defmodule Pleroma.Web.AkkomaAPI.FrontendSettingsController do
|
||||||
OAuthScopesPlug,
|
OAuthScopesPlug,
|
||||||
%{@unauthenticated_access | scopes: ["write:accounts"]}
|
%{@unauthenticated_access | scopes: ["write:accounts"]}
|
||||||
when action in [
|
when action in [
|
||||||
:update_profile
|
:update_profile, :delete_profile
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -60,6 +60,21 @@ def list_profiles(conn, %{frontend_name: frontend_name}) do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@doc "DELETE /api/v1/akkoma/frontend_settings/:frontend_name/:profile_name"
|
||||||
|
def delete_profile(conn, %{frontend_name: frontend_name, profile_name: profile_name}) do
|
||||||
|
with %FrontendSettingsProfile{} = profile <-
|
||||||
|
FrontendSettingsProfile.get_by_user_and_frontend_name_and_profile_name(
|
||||||
|
conn.assigns.user,
|
||||||
|
frontend_name,
|
||||||
|
profile_name
|
||||||
|
),
|
||||||
|
{:ok, _} <- FrontendSettingsProfile.delete_profile(profile) do
|
||||||
|
json(conn, %{})
|
||||||
|
else
|
||||||
|
nil -> {:error, :not_found}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
@doc "PUT /api/v1/akkoma/frontend_settings/:frontend_name/:profile_name"
|
@doc "PUT /api/v1/akkoma/frontend_settings/:frontend_name/:profile_name"
|
||||||
def update_profile(%{body_params: %{settings: settings, version: version}} = conn, %{
|
def update_profile(%{body_params: %{settings: settings, version: version}} = conn, %{
|
||||||
frontend_name: frontend_name,
|
frontend_name: frontend_name,
|
||||||
|
|
|
@ -22,7 +22,10 @@ def list_profiles_operation() do
|
||||||
200 =>
|
200 =>
|
||||||
Operation.response("Profiles", "application/json", %Schema{
|
Operation.response("Profiles", "application/json", %Schema{
|
||||||
type: :array,
|
type: :array,
|
||||||
items: %Schema{type: :string}
|
items: %Schema{type: :object, properties: %{
|
||||||
|
name: %Schema{type: :string},
|
||||||
|
version: %Schema{type: :integer}
|
||||||
|
}}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -38,7 +41,26 @@ def get_profile_operation() do
|
||||||
security: [%{"oAuth" => ["read:accounts"]}],
|
security: [%{"oAuth" => ["read:accounts"]}],
|
||||||
parameters: [frontend_name_param(), profile_name_param()],
|
parameters: [frontend_name_param(), profile_name_param()],
|
||||||
responses: %{
|
responses: %{
|
||||||
200 => Operation.response("Translation", "application/json", %Schema{type: :object}),
|
200 => Operation.response("Profile", "application/json", %Schema{type: :object, properties: %{
|
||||||
|
"version" => %Schema{type: :integer},
|
||||||
|
"settings" => %Schema{type: :object, additionalProperties: true}
|
||||||
|
}}),
|
||||||
|
404 => Operation.response("Not Found", "application/json", %Schema{type: :object})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
@spec delete_profile_operation() :: Operation.t()
|
||||||
|
def delete_profile_operation() do
|
||||||
|
%Operation{
|
||||||
|
tags: ["Delete frontend setting profile"],
|
||||||
|
summary: "Delete frontend Settings Profile",
|
||||||
|
description: "Delete frontend setting profile",
|
||||||
|
operationId: "AkkomaAPI.FrontendSettingsController.delete_profile",
|
||||||
|
security: [%{"oAuth" => ["write:accounts"]}],
|
||||||
|
parameters: [frontend_name_param(), profile_name_param()],
|
||||||
|
responses: %{
|
||||||
|
200 => Operation.response("Empty", "application/json", %Schema{type: :string}),
|
||||||
404 => Operation.response("Not Found", "application/json", %Schema{type: :object})
|
404 => Operation.response("Not Found", "application/json", %Schema{type: :object})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -480,6 +480,12 @@ defmodule Pleroma.Web.Router do
|
||||||
FrontendSettingsController,
|
FrontendSettingsController,
|
||||||
:update_profile
|
:update_profile
|
||||||
)
|
)
|
||||||
|
|
||||||
|
delete(
|
||||||
|
"/frontend_settings/:frontend_name/:profile_name",
|
||||||
|
FrontendSettingsController,
|
||||||
|
:delete_profile
|
||||||
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
scope "/api/v1", Pleroma.Web.MastodonAPI do
|
scope "/api/v1", Pleroma.Web.MastodonAPI do
|
||||||
|
|
Loading…
Reference in a new issue