Add more Mastodon API methods.

This commit is contained in:
Roger Braun 2017-09-09 13:15:01 +02:00
commit be04f725e9
3 changed files with 142 additions and 3 deletions

View file

@ -1,9 +1,11 @@
defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
use Pleroma.Web, :controller
alias Pleroma.{Repo}
alias Pleroma.{Repo, Activity}
alias Pleroma.Web.OAuth.App
alias Pleroma.Web
alias Pleroma.Web.MastodonAPI.AccountView
alias Pleroma.Web.MastodonAPI.{StatusView, AccountView}
alias Pleroma.Web.ActivityPub.ActivityPub
alias Pleroma.Web.TwitterAPI.TwitterAPI
def create_app(conn, params) do
with cs <- App.register_changeset(%App{}, params) |> IO.inspect,
@ -33,4 +35,37 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
json(conn, response)
end
def home_timeline(%{assigns: %{user: user}} = conn, params) do
activities = ActivityPub.fetch_activities([user.ap_id | user.following], Map.put(params, "type", "Create"))
render conn, StatusView, "index.json", %{activities: activities, for: user, as: :activity}
end
def public_timeline(%{assigns: %{user: user}} = conn, params) do
params = params
|> Map.put("type", "Create")
|> Map.put("local_only", !!params["local"])
activities = ActivityPub.fetch_public_activities(params)
render conn, StatusView, "index.json", %{activities: activities, for: user, as: :activity}
end
def get_status(%{assigns: %{user: user}} = conn, %{"id" => id}) do
with %Activity{} = activity <- Repo.get(Activity, id) do
render conn, StatusView, "status.json", %{activity: activity, for: user}
end
end
def post_status(%{assigns: %{user: user}} = conn, %{"status" => status} = params) do
l = status |> String.trim |> String.length
params = params
|> Map.put("in_reply_to_status_id", params["in_reply_to_id"])
if l > 0 && l < 5000 do
{:ok, activity} = TwitterAPI.create_status(user, params)
render conn, StatusView, "status.json", %{activity: activity, for: user, as: :activity}
end
end
end