Add proper callback route for websub confirmation.

This commit is contained in:
Roger Braun 2017-04-28 09:51:47 +02:00
parent 90da25505f
commit 451d18af63
4 changed files with 12 additions and 3 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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