X-Git-Url: http://git.squeep.com/?a=blobdiff_plain;ds=sidebyside;f=lib%2Fpleroma%2Fweb%2Ftwitter_api%2Ftwitter_api.ex;h=2ef679397afffef6a3c852929b51e06469a22df2;hb=30650e5bc610810d129bf02891a73ac11340710b;hp=da707dd6ebd05348234af6c3e1a29b510776977f;hpb=2db28df4cffa2ef43a84ac68caee6cef24cce19b;p=akkoma diff --git a/lib/pleroma/web/twitter_api/twitter_api.ex b/lib/pleroma/web/twitter_api/twitter_api.ex index da707dd6e..2ef679397 100644 --- a/lib/pleroma/web/twitter_api/twitter_api.ex +++ b/lib/pleroma/web/twitter_api/twitter_api.ex @@ -5,6 +5,7 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPI do alias Pleroma.Web.TwitterAPI.Representers.ActivityRepresenter def create_status(user = %User{}, data = %{}) do + date = DateTime.utc_now() |> DateTime.to_iso8601 activity = %{ "type" => "Create", "to" => [ @@ -14,16 +15,42 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPI do "actor" => User.ap_id(user), "object" => %{ "type" => "Note", - "content" => data["status"] - } + "content" => data["status"], + "published" => date + }, + "published" => date } ActivityPub.insert(activity) end + def fetch_friend_statuses(user, opts \\ %{}) do + ActivityPub.fetch_activities(user.following, opts) + |> activities_to_statuses + end + def fetch_public_statuses(opts \\ %{}) do - activities = ActivityPub.fetch_public_activities(opts) + ActivityPub.fetch_public_activities(opts) + |> activities_to_statuses + end + + def follow(%User{} = follower, followed_id) do + with %User{} = followed <- Repo.get(User, followed_id), + { :ok, follower } <- User.follow(follower, followed) + do + { :ok, follower, followed } + end + end + + def unfollow(%User{} = follower, followed_id) do + with %User{} = followed <- Repo.get(User, followed_id), + { :ok, follower } <- User.unfollow(follower, followed) + do + { :ok, follower, followed } + end + end + defp activities_to_statuses(activities) do Enum.map(activities, fn(activity) -> actor = get_in(activity.data, ["actor"]) user = Repo.get_by!(User, ap_id: actor)