Add proper callback route for websub confirmation.
This commit is contained in:
parent
90da25505f
commit
451d18af63
|
@ -75,6 +75,7 @@ def user_fetcher(username) do
|
||||||
|
|
||||||
get "/users/:nickname/feed", OStatus.OStatusController, :feed
|
get "/users/:nickname/feed", OStatus.OStatusController, :feed
|
||||||
post "/users/:nickname/salmon", OStatus.OStatusController, :salmon_incoming
|
post "/users/:nickname/salmon", OStatus.OStatusController, :salmon_incoming
|
||||||
|
post "/push/subscriptions/:id", Websub.WebsubController, :websub_subscription_confirmation
|
||||||
post "/push/hub/:nickname", Websub.WebsubController, :websub_subscription_request
|
post "/push/hub/:nickname", Websub.WebsubController, :websub_subscription_request
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -2,8 +2,8 @@ defmodule Pleroma.Web.Websub do
|
||||||
alias Pleroma.Repo
|
alias Pleroma.Repo
|
||||||
alias Pleroma.Web.Websub.{WebsubServerSubscription, WebsubClientSubscription}
|
alias Pleroma.Web.Websub.{WebsubServerSubscription, WebsubClientSubscription}
|
||||||
alias Pleroma.Web.OStatus.FeedRepresenter
|
alias Pleroma.Web.OStatus.FeedRepresenter
|
||||||
alias Pleroma.Web.OStatus
|
alias Pleroma.Web.{XML, Endpoint, OStatus}
|
||||||
alias Pleroma.Web.XML
|
alias Pleroma.Web.Router.Helpers
|
||||||
require Logger
|
require Logger
|
||||||
|
|
||||||
import Ecto.Query
|
import Ecto.Query
|
||||||
|
@ -136,7 +136,7 @@ def request_subscription(websub, poster \\ &HTTPoison.post/3, timeout \\ 10_000)
|
||||||
"hub.mode": "subscribe",
|
"hub.mode": "subscribe",
|
||||||
"hub.topic": websub.topic,
|
"hub.topic": websub.topic,
|
||||||
"hub.secret": websub.secret,
|
"hub.secret": websub.secret,
|
||||||
"hub.callback": "https://social.heldscal.la/callback"
|
"hub.callback": Helpers.websub_url(Endpoint, :websub_subscription_confirmation, websub.id)
|
||||||
]
|
]
|
||||||
|
|
||||||
# This checks once a second if we are confirmed yet
|
# This checks once a second if we are confirmed yet
|
||||||
|
|
|
@ -15,4 +15,9 @@ def websub_subscription_request(conn, %{"nickname" => nickname} = params) do
|
||||||
|> send_resp(500, reason)
|
|> send_resp(500, reason)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def websub_subscription_confirmation(conn, params) do
|
||||||
|
IO.inspect(params)
|
||||||
|
conn
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -3,11 +3,13 @@ def verify(sub) do
|
||||||
{:ok, sub}
|
{:ok, sub}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
defmodule Pleroma.Web.WebsubTest do
|
defmodule Pleroma.Web.WebsubTest do
|
||||||
use Pleroma.DataCase
|
use Pleroma.DataCase
|
||||||
alias Pleroma.Web.Websub
|
alias Pleroma.Web.Websub
|
||||||
alias Pleroma.Web.Websub.WebsubServerSubscription
|
alias Pleroma.Web.Websub.WebsubServerSubscription
|
||||||
import Pleroma.Factory
|
import Pleroma.Factory
|
||||||
|
alias Pleroma.Web.Router.Helpers
|
||||||
|
|
||||||
test "a verification of a request that is accepted" do
|
test "a verification of a request that is accepted" do
|
||||||
sub = insert(:websub_subscription)
|
sub = insert(:websub_subscription)
|
||||||
|
@ -121,6 +123,7 @@ test "calls the hub, requests topic" do
|
||||||
|
|
||||||
poster = fn (^hub, {:form, data}, _headers) ->
|
poster = fn (^hub, {:form, data}, _headers) ->
|
||||||
assert Keyword.get(data, :"hub.mode") == "subscribe"
|
assert Keyword.get(data, :"hub.mode") == "subscribe"
|
||||||
|
assert Keyword.get(data, :"hub.callback") == Helpers.websub_url(Pleroma.Web.Endpoint, :websub_subscription_confirmation, websub.id)
|
||||||
{:ok, %{status_code: 202}}
|
{:ok, %{status_code: 202}}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue