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

45 lines
1.2 KiB
Elixir
Raw Normal View History

2017-03-21 10:53:20 -06:00
defmodule Pleroma.Web.TwitterAPI.TwitterAPI do
alias Pleroma.User
alias Pleroma.Web.ActivityPub.ActivityPub
alias Pleroma.Repo
alias Pleroma.Web.TwitterAPI.Representers.ActivityRepresenter
def create_status(user = %User{}, data = %{}) do
2017-03-22 09:51:20 -06:00
date = DateTime.utc_now() |> DateTime.to_iso8601
2017-03-21 10:53:20 -06:00
activity = %{
2017-03-21 11:17:35 -06:00
"type" => "Create",
"to" => [
2017-03-21 10:53:20 -06:00
User.ap_followers(user),
"https://www.w3.org/ns/activitystreams#Public"
],
2017-03-21 11:17:35 -06:00
"actor" => User.ap_id(user),
"object" => %{
"type" => "Note",
2017-03-22 09:51:20 -06:00
"content" => data["status"],
"published" => date
},
"published" => date
2017-03-21 10:53:20 -06:00
}
ActivityPub.insert(activity)
end
2017-03-22 09:51:20 -06:00
def fetch_friend_statuses(user, opts \\ %{}) do
ActivityPub.fetch_activities(user.following, opts)
|> activities_to_statuses
end
2017-03-21 14:09:20 -06:00
def fetch_public_statuses(opts \\ %{}) do
2017-03-22 09:51:20 -06:00
ActivityPub.fetch_public_activities(opts)
|> activities_to_statuses
end
2017-03-21 10:53:20 -06:00
2017-03-22 09:51:20 -06:00
defp activities_to_statuses(activities) do
2017-03-21 10:53:20 -06:00
Enum.map(activities, fn(activity) ->
actor = get_in(activity.data, ["actor"])
user = Repo.get_by!(User, ap_id: actor)
ActivityRepresenter.to_map(activity, %{user: user})
end)
end
end