diff options
author | feld <feld@feld.me> | 2024-02-15 14:36:54 +0000 |
---|---|---|
committer | feld <feld@feld.me> | 2024-02-15 14:36:54 +0000 |
commit | 4dd8a1a1ca08966a0729253ee070295f664f0e1f (patch) | |
tree | 9262d7ac1bee36bbec3c827a645955da7a4f3807 /lib/phoenix | |
parent | d3208d225048c1a55b44d7d8ce324a6fef8ac14d (diff) | |
parent | 6be129ead2ff5d6a19edf7230d102aa51a731b03 (diff) | |
download | pleroma-4dd8a1a1ca08966a0729253ee070295f664f0e1f.tar.gz pleroma-4dd8a1a1ca08966a0729253ee070295f664f0e1f.zip |
Merge branch 'websocket-refactor' into 'develop'
Websocket refactor to use Phoenix.Socket.Transport
See merge request pleroma/pleroma!4064
Diffstat (limited to 'lib/phoenix')
-rw-r--r-- | lib/phoenix/transports/web_socket/raw.ex | 93 |
1 files changed, 0 insertions, 93 deletions
diff --git a/lib/phoenix/transports/web_socket/raw.ex b/lib/phoenix/transports/web_socket/raw.ex deleted file mode 100644 index cf4fda79f..000000000 --- a/lib/phoenix/transports/web_socket/raw.ex +++ /dev/null @@ -1,93 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/> -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Phoenix.Transports.WebSocket.Raw do - import Plug.Conn, - only: [ - fetch_query_params: 1, - send_resp: 3 - ] - - alias Phoenix.Socket.Transport - - def default_config do - [ - timeout: 60_000, - transport_log: false, - cowboy: Phoenix.Endpoint.CowboyWebSocket - ] - end - - def init(%Plug.Conn{method: "GET"} = conn, {endpoint, handler, transport}) do - {_, opts} = handler.__transport__(transport) - - conn = - conn - |> fetch_query_params - |> Transport.transport_log(opts[:transport_log]) - |> Transport.check_origin(handler, endpoint, opts) - - case conn do - %{halted: false} = conn -> - case handler.connect(%{ - endpoint: endpoint, - transport: transport, - options: [serializer: nil], - params: conn.params - }) do - {:ok, socket} -> - {:ok, conn, {__MODULE__, {socket, opts}}} - - :error -> - send_resp(conn, :forbidden, "") - {:error, conn} - end - - _ -> - {:error, conn} - end - end - - def init(conn, _) do - send_resp(conn, :bad_request, "") - {:error, conn} - end - - def ws_init({socket, config}) do - Process.flag(:trap_exit, true) - {:ok, %{socket: socket}, config[:timeout]} - end - - def ws_handle(op, data, state) do - state.socket.handler - |> apply(:handle, [op, data, state]) - |> case do - {op, data} -> - {:reply, {op, data}, state} - - {op, data, state} -> - {:reply, {op, data}, state} - - %{} = state -> - {:ok, state} - - _ -> - {:ok, state} - end - end - - def ws_info({_, _} = tuple, state) do - {:reply, tuple, state} - end - - def ws_info(_tuple, state), do: {:ok, state} - - def ws_close(state) do - ws_handle(:closed, :normal, state) - end - - def ws_terminate(reason, state) do - ws_handle(:closed, reason, state) - end -end |