Add Websub verification.
This commit is contained in:
parent
1b9cc721a0
commit
424e0e7779
5 changed files with 79 additions and 0 deletions
23
lib/pleroma/web/websub/websub.ex
Normal file
23
lib/pleroma/web/websub/websub.ex
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
defmodule Pleroma.Web.Websub do
|
||||
alias Pleroma.Repo
|
||||
|
||||
def verify(subscription, getter \\ &HTTPoison.get/3 ) do
|
||||
challenge = Base.encode16(:crypto.strong_rand_bytes(8))
|
||||
lease_seconds = NaiveDateTime.diff(subscription.inserted_at, subscription.valid_until)
|
||||
with {:ok, response} <- getter.(subscription.callback, [], [params: %{
|
||||
"hub.challenge": challenge,
|
||||
"hub.lease_seconds": lease_seconds,
|
||||
"hub.topic": subscription.topic,
|
||||
"hub.mode": "subscribe"
|
||||
}]),
|
||||
^challenge <- response.body
|
||||
do
|
||||
changeset = Ecto.Changeset.change(subscription, %{state: "active"})
|
||||
Repo.update(changeset)
|
||||
else _e ->
|
||||
changeset = Ecto.Changeset.change(subscription, %{state: "rejected"})
|
||||
{:ok, subscription } = Repo.update(changeset)
|
||||
{:error, subscription}
|
||||
end
|
||||
end
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue