follow works on pleroma now
This commit is contained in:
parent
60456cc0ba
commit
fcbd2e9472
|
@ -11,10 +11,15 @@ defmodule Vonbraun.ActivityPub.Handler.Follow do
|
|||
def type, do: @verb
|
||||
|
||||
def handle(
|
||||
%{"type" => @verb, "actor" => follow_requester_id, "object" => follow_target},
|
||||
%{
|
||||
"id" => activity_id,
|
||||
"type" => @verb,
|
||||
"actor" => follow_requester_id,
|
||||
"object" => follow_target
|
||||
},
|
||||
actor = %{}
|
||||
)
|
||||
when is_binary(follow_requester_id) and is_binary(follow_target) do
|
||||
when is_binary(follow_requester_id) and is_binary(follow_target) and is_binary(activity_id) do
|
||||
with {:valid_target, true} <- {:valid_target, Object.my_id() == follow_target},
|
||||
{:add, {:ok, %Actor{:blocked => nil, :follows_me_state => follows_me_state}}}
|
||||
when not is_nil(follows_me_state) <-
|
||||
|
@ -33,7 +38,8 @@ defmodule Vonbraun.ActivityPub.Handler.Follow do
|
|||
|
||||
if activity_type do
|
||||
payload =
|
||||
Object.accept_follow_activity(follow_requester_id, activity_type) |> Jason.encode!()
|
||||
Object.accept_follow_activity(follow_requester_id, activity_id, activity_type)
|
||||
|> Jason.encode!()
|
||||
|
||||
Logger.debug("Replying to follow request with: #{activity_type}")
|
||||
Logger.debug("And payload: `#{payload}`")
|
||||
|
|
|
@ -56,8 +56,8 @@ defmodule Vonbraun.ActivityPub.Object do
|
|||
def follow_activity(to_follow_id) when is_binary(to_follow_id),
|
||||
do: activity("Follow", my_follow_activity_id(to_follow_id), to_follow_id, to: to_follow_id)
|
||||
|
||||
def accept_follow_activity(followee_id, type \\ :accept)
|
||||
when is_binary(followee_id) and type in [:accept, :reject] do
|
||||
def accept_follow_activity(followee_id, activity_id, type \\ :accept)
|
||||
when is_binary(followee_id) and is_binary(activity_id) and type in [:accept, :reject] do
|
||||
activity_type =
|
||||
if type == :accept do
|
||||
"Accept"
|
||||
|
@ -66,6 +66,7 @@ defmodule Vonbraun.ActivityPub.Object do
|
|||
end
|
||||
|
||||
object = %{
|
||||
"id" => activity_id,
|
||||
"type" => "Follow",
|
||||
"actor" => followee_id
|
||||
}
|
||||
|
|
|
@ -28,7 +28,8 @@ defmodule Vonbraun.ActivityPubReq do
|
|||
when is_binary(body) do
|
||||
headers = %{
|
||||
"host" => host,
|
||||
"accept" => "application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\""
|
||||
"accept" => "application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\"",
|
||||
"content-type" => "application/activity+json"
|
||||
}
|
||||
|
||||
target =
|
||||
|
|
|
@ -15,7 +15,8 @@ defmodule Vonbraun.Ecto.Schema.Pair do
|
|||
|> Changeset.cast(params, [:value])
|
||||
end
|
||||
|
||||
def set(key, value) do
|
||||
@spec set(String.t(), String.t()) :: {:ok, String.t() | nil} | {:error, any()}
|
||||
def set(key, value) when is_binary(key) and (is_binary(value) or is_nil(value)) do
|
||||
case Repo.get(__MODULE__, key) do
|
||||
nil ->
|
||||
changeset(%__MODULE__{key: key}, %{value: value})
|
||||
|
@ -27,7 +28,17 @@ defmodule Vonbraun.Ecto.Schema.Pair do
|
|||
end
|
||||
end
|
||||
|
||||
def get(key) do
|
||||
Repo.get(__MODULE__, key)
|
||||
@spec get(String.t()) :: String.t() | nil
|
||||
def get(key) when is_binary(key) do
|
||||
case Repo.get(__MODULE__, key) do
|
||||
%__MODULE__{:value => value} -> value
|
||||
_ -> nil
|
||||
end
|
||||
end
|
||||
|
||||
@spec delete(String.t()) :: any()
|
||||
def delete(key) when is_binary(key) do
|
||||
Repo.delete(%__MODULE__{key: key})
|
||||
:ok
|
||||
end
|
||||
end
|
||||
|
|
|
@ -220,7 +220,7 @@ defmodule Vonbraun.MyRouter do
|
|||
nil ->
|
||||
send_resp(conn, 404, "fuck off")
|
||||
|
||||
%{:value => value} ->
|
||||
value ->
|
||||
send_resp(conn, 200, value)
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue