use Pleroma.Web, :controller
alias Pleroma.Web.TwitterAPI.TwitterAPI
alias Pleroma.Web.TwitterAPI.Representers.{UserRepresenter, ActivityRepresenter}
- alias Pleroma.{Repo, Activity}
+ alias Pleroma.{Web, Repo, Activity}
alias Pleroma.Web.ActivityPub.ActivityPub
+ alias Ecto.Changeset
def verify_credentials(%{assigns: %{user: user}} = conn, _params) do
response = user |> UserRepresenter.to_json(%{for: user})
|> json_reply(200, response)
end
- def status_update(conn, %{"status" => ""} = _status_data) do
- empty_status_reply(conn)
- end
-
- def status_update(%{assigns: %{user: user}} = conn, %{"status" => _status_text} = status_data) do
- media_ids = extract_media_ids(status_data)
- {:ok, activity} = TwitterAPI.create_status(user, Map.put(status_data, "media_ids", media_ids ))
- conn
- |> json_reply(200, ActivityRepresenter.to_json(activity, %{user: user}))
+ def status_update(%{assigns: %{user: user}} = conn, %{"status" => status_text} = status_data) do
+ if status_text |> String.trim |> String.length != 0 do
+ media_ids = extract_media_ids(status_data)
+ {:ok, activity} = TwitterAPI.create_status(user, Map.put(status_data, "media_ids", media_ids))
+ conn
+ |> json_reply(200, ActivityRepresenter.to_json(activity, %{user: user}))
+ else
+ empty_status_reply(conn)
+ end
end
def status_update(conn, _status_data) do
end
end
+ def public_and_external_timeline(%{assigns: %{user: user}} = conn, params) do
+ statuses = TwitterAPI.fetch_public_and_external_statuses(user, params)
+ {:ok, json} = Poison.encode(statuses)
+
+ conn
+ |> json_reply(200, json)
+ end
+
def public_timeline(%{assigns: %{user: user}} = conn, params) do
statuses = TwitterAPI.fetch_public_statuses(user, params)
{:ok, json} = Poison.encode(statuses)
def follow(%{assigns: %{user: user}} = conn, params) do
case TwitterAPI.follow(user, params) do
- { :ok, user, followed, _activity } ->
+ {:ok, user, followed, _activity} ->
response = followed |> UserRepresenter.to_json(%{for: user})
conn
|> json_reply(200, response)
- { :error, msg } -> forbidden_json_reply(conn, msg)
+ {:error, msg} -> forbidden_json_reply(conn, msg)
end
end
def unfollow(%{assigns: %{user: user}} = conn, params) do
case TwitterAPI.unfollow(user, params) do
- { :ok, user, unfollowed, } ->
+ {:ok, user, unfollowed} ->
response = unfollowed |> UserRepresenter.to_json(%{for: user})
conn
|> json_reply(200, response)
- { :error, msg } -> forbidden_json_reply(conn, msg)
+ {:error, msg} -> forbidden_json_reply(conn, msg)
end
end
- def fetch_status(%{assigns: %{user: user}} = conn, %{ "id" => id }) do
- response = TwitterAPI.fetch_status(user, id) |> Poison.encode!
+ def fetch_status(%{assigns: %{user: user}} = conn, %{"id" => id}) do
+ response = Poison.encode!(TwitterAPI.fetch_status(user, id))
conn
|> json_reply(200, response)
end
- def fetch_conversation(%{assigns: %{user: user}} = conn, %{ "id" => id }) do
+ def fetch_conversation(%{assigns: %{user: user}} = conn, %{"id" => id}) do
id = String.to_integer(id)
- response = TwitterAPI.fetch_conversation(user, id) |> Poison.encode!
+ response = Poison.encode!(TwitterAPI.fetch_conversation(user, id))
conn
|> json_reply(200, response)
def config(conn, _params) do
response = %{
site: %{
- name: Pleroma.Web.base_url,
- server: Pleroma.Web.base_url,
+ name: Web.base_url,
+ server: Web.base_url,
textlimit: -1
}
}
def retweet(%{assigns: %{user: user}} = conn, %{"id" => id}) do
activity = Repo.get(Activity, id)
- {:ok, status} = TwitterAPI.retweet(user, activity)
- response = Poison.encode!(status)
+ if activity.data["actor"] == user.ap_id do
+ bad_request_reply(conn, "You cannot repeat your own notice.")
+ else
+ {:ok, status} = TwitterAPI.retweet(user, activity)
+ response = Poison.encode!(status)
- conn
- |> json_reply(200, response)
+ conn
+
+ |> json_reply(200, response)
+ end
end
def register(conn, params) do
def update_avatar(%{assigns: %{user: user}} = conn, params) do
{:ok, object} = ActivityPub.upload(params)
- change = Ecto.Changeset.change(user, %{avatar: object.data})
+ change = Changeset.change(user, %{avatar: object.data})
{:ok, user} = Repo.update(change)
- response = UserRepresenter.to_map(user, %{for: user})
- |> Poison.encode!
+ response = Poison.encode!(UserRepresenter.to_map(user, %{for: user}))
conn
|> json_reply(200, response)