projects
/
akkoma
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
de-group import/s
[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..a08d7993d007915d63a00265ab4389ab2e825a37 100644
(file)
--- a/
lib/pleroma/web/websub/websub.ex
+++ b/
lib/pleroma/web/websub/websub.ex
@@
-4,11
+4,14
@@
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
require Logger
alias Pleroma.Web.Router.Helpers
require Logger
@@
-70,7
+73,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,7
+83,8
@@
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)
}
Pleroma.Web.Federator.enqueue(:publish_single_websub, data)
@@
-268,7
+273,7
@@
defmodule Pleroma.Web.Websub do
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
+286,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