projects
/
akkoma
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'develop' of git.pleroma.social:pleroma/pleroma into feature/jobs
[akkoma]
/
lib
/
pleroma
/
web
/
websub
/
websub.ex
diff --git
a/lib/pleroma/web/websub/websub.ex
b/lib/pleroma/web/websub/websub.ex
index 8f7d53b03f598da82d15e12d8cbd2b5da4ebf546..c00ec08582aa328598d14fa02019d14833ecea1f 100644
(file)
--- a/
lib/pleroma/web/websub/websub.ex
+++ b/
lib/pleroma/web/websub/websub.ex
@@
-4,12
+4,16
@@
defmodule Pleroma.Web.Websub do
alias Ecto.Changeset
defmodule Pleroma.Web.Websub do
alias Ecto.Changeset
- alias Pleroma.Repo
alias Pleroma.Instances
alias Pleroma.Instances
- alias Pleroma.Web.Websub.{WebsubServerSubscription, WebsubClientSubscription}
+ alias Pleroma.Repo
+ alias Pleroma.Web.Websub.WebsubServerSubscription
+ alias Pleroma.Web.Websub.WebsubClientSubscription
alias Pleroma.Web.OStatus.FeedRepresenter
alias Pleroma.Web.OStatus.FeedRepresenter
- alias Pleroma.Web.{XML, Endpoint, OStatus}
+ alias Pleroma.Web.XML
+ alias Pleroma.Web.Endpoint
+ alias Pleroma.Web.OStatus
alias Pleroma.Web.Router.Helpers
alias Pleroma.Web.Router.Helpers
+ alias Pleroma.Web.Federator
require Logger
import Ecto.Query
require Logger
import Ecto.Query
@@
-70,7
+74,8
@@
defmodule Pleroma.Web.Websub do
subscriptions = Repo.all(query)
callbacks = Enum.map(subscriptions, & &1.callback)
subscriptions = Repo.all(query)
callbacks = Enum.map(subscriptions, & &1.callback)
- reachable_callbacks = Instances.filter_reachable(callbacks)
+ reachable_callbacks_metadata = Instances.filter_reachable(callbacks)
+ reachable_callbacks = Map.keys(reachable_callbacks_metadata)
subscriptions
|> Enum.filter(&(&1.callback in reachable_callbacks))
subscriptions
|> Enum.filter(&(&1.callback in reachable_callbacks))
@@
-79,10
+84,11
@@
defmodule Pleroma.Web.Websub do
xml: response,
topic: topic,
callback: sub.callback,
xml: response,
topic: topic,
callback: sub.callback,
- secret: sub.secret
+ secret: sub.secret,
+ unreachable_since: reachable_callbacks_metadata[sub.callback]
}
}
-
Pleroma.Web.Federator.enqueue(:publish_single_websub,
data)
+
Federator.publish_single_websub(
data)
end)
end
end)
end
@@
-114,7
+120,7
@@
defmodule Pleroma.Web.Websub do
websub = Repo.update!(change)
websub = Repo.update!(change)
-
Pleroma.Web.Federator.enqueue(:verify_websub,
websub)
+
Federator.verify_websub(
websub)
{:ok, websub}
else
{:ok, websub}
else
@@
-264,11
+270,11
@@
defmodule Pleroma.Web.Websub do
subs = Repo.all(query)
Enum.each(subs, fn sub ->
subs = Repo.all(query)
Enum.each(subs, fn sub ->
-
Pleroma.Web.Federator.enqueue(:request_subscription,
sub)
+
Federator.request_subscription(
sub)
end)
end
end)
end
- def publish_one(%{xml: xml, topic: topic, callback: callback, secret: secret}) do
+ def publish_one(%{xml: xml, topic: topic, callback: callback, secret: secret}
= params
) do
signature = sign(secret || "", xml)
Logger.info(fn -> "Pushing #{topic} to #{callback}" end)
signature = sign(secret || "", xml)
Logger.info(fn -> "Pushing #{topic} to #{callback}" end)
@@
-281,12
+287,14
@@
defmodule Pleroma.Web.Websub do
{"X-Hub-Signature", "sha1=#{signature}"}
]
) do
{"X-Hub-Signature", "sha1=#{signature}"}
]
) do
- Instances.set_reachable(callback)
+ if !Map.has_key?(params, :unreachable_since) || params[:unreachable_since],
+ do: Instances.set_reachable(callback)
+
Logger.info(fn -> "Pushed to #{callback}, code #{code}" end)
{:ok, code}
else
{_post_result, response} ->
Logger.info(fn -> "Pushed to #{callback}, code #{code}" end)
{:ok, code}
else
{_post_result, response} ->
-
Instances.set_un
reachable(callback)
+
unless params[:unreachable_since], do: Instances.set_
reachable(callback)
Logger.debug(fn -> "Couldn't push to #{callback}, #{inspect(response)}" end)
{:error, response}
end
Logger.debug(fn -> "Couldn't push to #{callback}, #{inspect(response)}" end)
{:error, response}
end