Merge branch 'develop' into dtluna/pleroma-feature/unfollow-activity
[akkoma] / lib / pleroma / web / salmon / salmon.ex
index f02cb11dca554bbf370e4b2b2d6eb6cbd7aad562..b4f81b4edfdf41a7e80472f431b77a1e78bc71ac 100644 (file)
@@ -1,4 +1,6 @@
 defmodule Pleroma.Web.Salmon do
+  @httpoison Application.get_env(:pleroma, :httpoison)
+
   use Bitwise
   alias Pleroma.Web.XML
   alias Pleroma.Web.OStatus.ActivityRepresenter
@@ -14,7 +16,6 @@ defmodule Pleroma.Web.Salmon do
     {:xmlObj, :string, encoding} = :xmerl_xpath.string('string(//me:encoding[1])', doc)
     {:xmlObj, :string, type} = :xmerl_xpath.string('string(//me:data[1]/@type)', doc)
 
-
     {:ok, data} = Base.url_decode64(to_string(data), ignore: :whitespace)
     {:ok, sig} = Base.url_decode64(to_string(sig), ignore: :whitespace)
     alg = to_string(alg)
@@ -102,8 +103,13 @@ defmodule Pleroma.Web.Salmon do
     |> Enum.map(&Base.url_encode64/1)
     |> Enum.join(".")
 
-    signature = :public_key.sign(signed_text, :sha256, private_key) |> to_string |> Base.url_encode64
-    doc_base64= doc |> Base.url_encode64
+    signature = signed_text
+    |> :public_key.sign(:sha256, private_key)
+    |> to_string
+    |> Base.url_encode64
+
+    doc_base64 = doc
+    |> Base.url_encode64
 
     # Don't need proper xml building, these strings are safe to leave unescaped
     salmon = """
@@ -131,7 +137,7 @@ defmodule Pleroma.Web.Salmon do
 
   defp send_to_user(_,_,_), do: nil
 
-  def publish(user, activity, poster \\ &HTTPoison.post/3)
+  def publish(user, activity, poster \\ &@httpoison.post/3)
   def publish(%{info: %{"keys" => keys}} = user, activity, poster) do
     feed = ActivityRepresenter.to_simple_form(activity, user, true)
     |> ActivityRepresenter.wrap_with_entry
@@ -144,11 +150,13 @@ defmodule Pleroma.Web.Salmon do
 
       remote_users(activity)
       |> Enum.each(fn(remote_user) ->
-        Logger.debug("sending salmon to #{remote_user.ap_id}")
-        send_to_user(remote_user, feed, poster)
+        Task.start(fn ->
+          Logger.debug(fn -> "sending salmon to #{remote_user.ap_id}" end)
+          send_to_user(remote_user, feed, poster)
+        end)
       end)
     end
   end
 
-  def publish(%{id: id}, _, _), do: Logger.debug("Keys missing for user #{id}")
+  def publish(%{id: id}, _, _), do: Logger.debug(fn -> "Keys missing for user #{id}" end)
 end