akkoma/lib/pleroma/web/twitter_api/controllers/util_controller.ex

98 lines
2.9 KiB
Elixir
Raw Normal View History

2017-06-20 14:55:57 +00:00
defmodule Pleroma.Web.TwitterAPI.UtilController do
use Pleroma.Web, :controller
2017-12-12 19:04:41 +00:00
require Logger
2017-06-20 14:55:57 +00:00
alias Pleroma.Web
2017-10-19 19:51:56 +00:00
alias Pleroma.Formatter
2017-12-12 16:35:23 +00:00
alias Pleroma.Web.ActivityPub.ActivityPub
2017-10-19 15:37:24 +00:00
alias Pleroma.{Repo, PasswordResetToken, User}
def show_password_reset(conn, %{"token" => token}) do
with %{used: false} = token <- Repo.get_by(PasswordResetToken, %{token: token}),
%User{} = user <- Repo.get(User, token.user_id) do
render conn, "password_reset.html", %{
token: token,
user: user
}
else
_e -> render conn, "invalid_token.html"
end
end
def password_reset(conn, %{"data" => data}) do
with {:ok, _} <- PasswordResetToken.reset_password(data["token"], data) do
render conn, "password_reset_success.html"
else
_e -> render conn, "password_reset_failed.html"
end
end
2017-06-20 14:55:57 +00:00
def help_test(conn, _params) do
json(conn, "ok")
end
@instance Application.get_env(:pleroma, :instance)
2017-06-20 14:55:57 +00:00
def config(conn, _params) do
2017-08-24 12:07:05 +00:00
case get_format(conn) do
"xml" ->
response = """
<config>
<site>
<name>#{Keyword.get(@instance, :name)}</name>
2017-08-24 12:07:05 +00:00
<site>#{Web.base_url}</site>
<textlimit>#{Keyword.get(@instance, :limit)}</textlimit>
<closed>#{!Keyword.get(@instance, :registrations_open)}</closed>
2017-08-24 12:07:05 +00:00
</site>
</config>
"""
conn
|> put_resp_content_type("application/xml")
|> send_resp(200, response)
_ ->
json(conn, %{
site: %{
name: Keyword.get(@instance, :name),
2017-08-24 12:07:05 +00:00
server: Web.base_url,
textlimit: Keyword.get(@instance, :limit),
closed: if(Keyword.get(@instance, :registrations_open), do: "0", else: "1")
2017-08-24 12:07:05 +00:00
}
})
end
end
def version(conn, _params) do
version = Keyword.get(@instance, :version)
2017-08-24 12:07:05 +00:00
case get_format(conn) do
"xml" ->
response = "<version>#{version}</version>"
2017-08-24 12:07:05 +00:00
conn
|> put_resp_content_type("application/xml")
|> send_resp(200, response)
_ -> json(conn, version)
2017-08-24 12:07:05 +00:00
end
2017-06-20 14:55:57 +00:00
end
2017-10-19 19:51:56 +00:00
def emoji(conn, _params) do
json conn, Enum.into(Formatter.get_custom_emoji(), %{})
2017-10-19 19:51:56 +00:00
end
2017-12-12 16:35:23 +00:00
def follow_import(conn, %{"list" => %Plug.Upload{} = listfile}) do
follow_import(conn, %{"list" => File.read!(listfile.path)})
end
2017-12-12 16:35:23 +00:00
def follow_import(%{assigns: %{user: user}} = conn, %{"list" => list}) do
Task.start(fn ->
2017-12-12 19:04:41 +00:00
String.split(list)
2017-12-12 16:35:23 +00:00
|> Enum.map(fn nick ->
2017-12-12 19:04:41 +00:00
with %User{} = follower <- User.get_cached_by_ap_id(user.ap_id),
%User{} = followed <- User.get_or_fetch_by_nickname(nick),
{:ok, follower} <- User.follow(follower, followed) do
ActivityPub.follow(follower, followed)
else
_e -> Logger.debug "follow_import: following #{nick} failed"
end
end)
2017-12-12 16:35:23 +00:00
end)
2017-12-12 19:04:41 +00:00
json conn, "job started"
2017-12-12 16:35:23 +00:00
end
2017-06-20 14:55:57 +00:00
end