Skip to content

Commit 6fec755

Browse files
committed
refactor: replace ReverseProxyPlug with RuntimeRewritePlug in asset and ingest rewrites
- Updated the asset and ingest rewrite plugs to delegate to a new RuntimeRewritePlug for dynamic upstream URL handling. - Introduced RuntimeRewritePlug to manage requests based on runtime configuration, improving flexibility.
1 parent 8f948fa commit 6fec755

File tree

4 files changed

+32
-11
lines changed

4 files changed

+32
-11
lines changed
Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
defmodule AlgoraWeb.Plugs.RewriteAssetsPlug do
22
@moduledoc false
3-
defdelegate init(opts), to: ReverseProxyPlug
4-
defdelegate call(conn, opts), to: ReverseProxyPlug
3+
alias AlgoraWeb.Plugs.RuntimeRewritePlug
4+
5+
defdelegate init(opts), to: RuntimeRewritePlug
6+
defdelegate call(conn, opts), to: RuntimeRewritePlug
57
end
Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
defmodule AlgoraWeb.Plugs.RewriteIngestPlug do
22
@moduledoc false
3-
defdelegate init(opts), to: ReverseProxyPlug
4-
defdelegate call(conn, opts), to: ReverseProxyPlug
3+
alias AlgoraWeb.Plugs.RuntimeRewritePlug
4+
5+
defdelegate init(opts), to: RuntimeRewritePlug
6+
defdelegate call(conn, opts), to: RuntimeRewritePlug
57
end
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
defmodule AlgoraWeb.Plugs.RuntimeRewritePlug do
2+
@moduledoc """
3+
A plug that forwards requests to a runtime-configured upstream URL.
4+
"""
5+
import Plug.Conn
6+
7+
def init(opts), do: opts
8+
9+
def call(conn, opts) do
10+
upstream = Application.get_env(:algora, Keyword.get(opts, :upstream))
11+
12+
if upstream do
13+
ReverseProxyPlug.call(conn, ReverseProxyPlug.init(upstream: upstream))
14+
else
15+
conn
16+
|> send_resp(500, "Upstream URL not configured")
17+
|> halt()
18+
end
19+
end
20+
end

lib/algora_web/router.ex

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ defmodule AlgoraWeb.Router do
77
import Oban.Web.Router
88
import Phoenix.LiveDashboard.Router, only: [live_dashboard: 2]
99

10+
alias AlgoraWeb.Plugs.RuntimeRewritePlug
11+
1012
pipeline :browser do
1113
plug :accepts, ["html"]
1214
plug :fetch_session
@@ -30,13 +32,8 @@ defmodule AlgoraWeb.Router do
3032
end
3133

3234
scope "/" do
33-
forward "/asset", AlgoraWeb.Plugs.RewriteAssetsPlug,
34-
upstream: "#{Application.compile_env(:algora, :assets_url)}",
35-
response_mode: :buffer
36-
37-
forward "/ingest", AlgoraWeb.Plugs.RewriteIngestPlug,
38-
upstream: "#{Application.compile_env(:algora, :ingest_url)}",
39-
response_mode: :buffer
35+
forward "/asset", AlgoraWeb.Plugs.RewriteAssetsPlug, upstream: :assets_url
36+
forward "/ingest", AlgoraWeb.Plugs.RewriteIngestPlug, upstream: :ingest_url
4037

4138
# forward "/docs", AlgoraWeb.Plugs.RewriteDocsPlug,
4239
# upstream: "https://docs.algora.io",

0 commit comments

Comments
 (0)