logo

pleroma

My custom branche(s) on git.pleroma.social/pleroma/pleroma

request.ex (1617B)


      1 # Pleroma: A lightweight social networking server
      2 # Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
      3 # SPDX-License-Identifier: AGPL-3.0-only
      4 
      5 defmodule Pleroma.Pool.Request do
      6   use GenServer
      7 
      8   require Logger
      9 
     10   def start_link(args) do
     11     GenServer.start_link(__MODULE__, args)
     12   end
     13 
     14   @impl true
     15   def init(_), do: {:ok, []}
     16 
     17   @spec execute(pid() | atom(), Tesla.Client.t(), keyword(), pos_integer()) ::
     18           {:ok, Tesla.Env.t()} | {:error, any()}
     19   def execute(pid, client, request, timeout) do
     20     GenServer.call(pid, {:execute, client, request}, timeout)
     21   end
     22 
     23   @impl true
     24   def handle_call({:execute, client, request}, _from, state) do
     25     response = Pleroma.HTTP.request(client, request)
     26 
     27     {:reply, response, state}
     28   end
     29 
     30   @impl true
     31   def handle_info({:gun_data, _conn, _stream, _, _}, state) do
     32     {:noreply, state}
     33   end
     34 
     35   @impl true
     36   def handle_info({:gun_up, _conn, _protocol}, state) do
     37     {:noreply, state}
     38   end
     39 
     40   @impl true
     41   def handle_info({:gun_down, _conn, _protocol, _reason, _killed}, state) do
     42     {:noreply, state}
     43   end
     44 
     45   @impl true
     46   def handle_info({:gun_error, _conn, _stream, _error}, state) do
     47     {:noreply, state}
     48   end
     49 
     50   @impl true
     51   def handle_info({:gun_push, _conn, _stream, _new_stream, _method, _uri, _headers}, state) do
     52     {:noreply, state}
     53   end
     54 
     55   @impl true
     56   def handle_info({:gun_response, _conn, _stream, _, _status, _headers}, state) do
     57     {:noreply, state}
     58   end
     59 
     60   @impl true
     61   def handle_info(msg, state) do
     62     Logger.warn("Received unexpected message #{inspect(__MODULE__)} #{inspect(msg)}")
     63     {:noreply, state}
     64   end
     65 end