diff options
author | Roger Braun <roger@rogerbraun.net> | 2017-03-22 18:36:08 +0100 |
---|---|---|
committer | Roger Braun <roger@rogerbraun.net> | 2017-03-23 12:09:27 +0100 |
commit | 75e51b190d5b4bd4e9cbf6a669bfce7a440e1a5c (patch) | |
tree | 4a0d15872d1fcd8ae64dacd9508e0c3a09aea502 /lib/pleroma/user.ex | |
parent | e2e0cd75b77778cb7adf911cf279d0ccc008dab1 (diff) | |
download | pleroma-75e51b190d5b4bd4e9cbf6a669bfce7a440e1a5c.tar.gz |
Add following TwAPI endpoint.
Diffstat (limited to 'lib/pleroma/user.ex')
-rw-r--r-- | lib/pleroma/user.ex | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index 6d9fe623d..29fd1de8b 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -1,6 +1,7 @@ defmodule Pleroma.User do use Ecto.Schema - alias Pleroma.User + import Ecto.Changeset + alias Pleroma.{Repo, User} schema "users" do field :bio, :string @@ -26,4 +27,20 @@ defmodule Pleroma.User do def ap_followers(%User{} = user) do "#{ap_id(user)}/followers" end + + def follow_changeset(struct, params \\ %{}) do + struct + |> cast(params, [:following]) + |> validate_required([:following]) + end + + def follow(%User{} = follower, %User{} = followed) do + ap_followers = User.ap_followers(followed) + following = [ap_followers | follower.following] + |> Enum.uniq + + follower + |> follow_changeset(%{following: following}) + |> Repo.update + end end |