aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorRoger Braun <roger@rogerbraun.net>2017-06-23 16:37:34 +0200
committerRoger Braun <roger@rogerbraun.net>2017-06-23 16:37:34 +0200
commitffc9d7708b3917a3a853cd54c13bbd6d0b3b9ba6 (patch)
tree0fa4bf49bfb0e80bb951c9b15129c3dc211d4878 /lib
parent6ee0ca21e2f449e9bf8ef36d37233081ea981b32 (diff)
downloadpleroma-ffc9d7708b3917a3a853cd54c13bbd6d0b3b9ba6.tar.gz
Handle webpubs in queue.
Diffstat (limited to 'lib')
-rw-r--r--lib/pleroma/web/federator/federator.ex15
-rw-r--r--lib/pleroma/web/websub/websub.ex20
2 files changed, 22 insertions, 13 deletions
diff --git a/lib/pleroma/web/federator/federator.ex b/lib/pleroma/web/federator/federator.ex
index 3e99f0d5d..8d4f497b8 100644
--- a/lib/pleroma/web/federator/federator.ex
+++ b/lib/pleroma/web/federator/federator.ex
@@ -6,6 +6,7 @@ defmodule Pleroma.Web.Federator do
@websub Application.get_env(:pleroma, :websub)
@ostatus Application.get_env(:pleroma, :ostatus)
+ @httpoison Application.get_env(:pleroma, :httpoison)
@max_jobs 10
def start_link do
@@ -47,6 +48,20 @@ defmodule Pleroma.Web.Federator do
@ostatus.handle_incoming(doc)
end
+ def handle(:publish_single_websub, %{xml: xml, topic: topic, callback: callback, secret: secret}) do
+ signature = @websub.sign(secret || "", xml)
+ Logger.debug(fn -> "Pushing #{topic} to #{callback}" end)
+
+ with {:ok, %{status_code: code}} <- @httpoison.post(callback, xml, [
+ {"Content-Type", "application/atom+xml"},
+ {"X-Hub-Signature", "sha1=#{signature}"}
+ ], timeout: 10000, recv_timeout: 20000) do
+ Logger.debug(fn -> "Pushed to #{callback}, code #{code}" end)
+ else e ->
+ Logger.debug(fn -> "Couldn't push to #{callback}, #{inspect(e)}" end)
+ end
+ end
+
def handle(type, payload) do
Logger.debug(fn -> "Unknown task: #{type}" end)
{:error, "Don't know what do do with this"}
diff --git a/lib/pleroma/web/websub/websub.ex b/lib/pleroma/web/websub/websub.ex
index a5309ebd9..932bf1862 100644
--- a/lib/pleroma/web/websub/websub.ex
+++ b/lib/pleroma/web/websub/websub.ex
@@ -49,19 +49,13 @@ defmodule Pleroma.Web.Websub do
|> :xmerl.export_simple(:xmerl_xml)
|> to_string
- signature = sign(sub.secret || "", response)
- Logger.debug(fn -> "Pushing #{topic} to #{sub.callback}" end)
-
- Task.start(fn ->
- with {:ok, %{status_code: code}} <- @httpoison.post(sub.callback, response, [
- {"Content-Type", "application/atom+xml"},
- {"X-Hub-Signature", "sha1=#{signature}"}
- ], timeout: 10000, recv_timeout: 20000) do
- Logger.debug(fn -> "Pushed to #{sub.callback}, code #{code}" end)
- else e ->
- Logger.debug(fn -> "Couldn't push to #{sub.callback}, #{inspect(e)}" end)
- end
- end)
+ data = %{
+ xml: response,
+ topic: topic,
+ callback: sub.callback,
+ secret: sub.secret
+ }
+ Pleroma.Web.Federator.enqueue(:publish_single_websub, data)
end)
end