Include query params for all /_/ prefixed links

Query params were not included when using the "/_/" prefix for farside
links. This extracts the logic for parsing query params into a function
that is then used for both /_/ and non-/_/ links.
This commit is contained in:
Ben Busby 2022-06-13 10:20:39 -06:00
parent 213658ae6c
commit 6210ed56e7
No known key found for this signature in database
GPG key ID: B9B7231E01D924A1
2 changed files with 14 additions and 14 deletions

View file

@ -8,6 +8,16 @@ defmodule Farside.Router do
plug(:match) plug(:match)
plug(:dispatch) plug(:dispatch)
def get_query_params(conn) do
cond do
String.length(conn.query_string) > 0 ->
"?#{conn.query_string}"
true ->
""
end
end
get "/" do get "/" do
resp = resp =
EEx.eval_file( EEx.eval_file(
@ -31,8 +41,7 @@ defmodule Farside.Router do
resp = resp =
EEx.eval_file( EEx.eval_file(
@route, @route,
service: service, instance_url: "#{r_path}#{get_query_params(conn)}"
instance_url: r_path
) )
send_resp(conn, 200, resp) send_resp(conn, 200, resp)
@ -62,21 +71,12 @@ defmodule Farside.Router do
|> Farside.pick_instance |> Farside.pick_instance
end end
params =
cond do
String.length(conn.query_string) > 0 ->
"?#{conn.query_string}"
true ->
""
end
# Redirect to the available instance # Redirect to the available instance
conn conn
|> Plug.Conn.resp(:found, "") |> Plug.Conn.resp(:found, "")
|> Plug.Conn.put_resp_header( |> Plug.Conn.put_resp_header(
"location", "location",
"#{instance}/#{path}#{params}" "#{instance}/#{path}#{get_query_params(conn)}"
) )
end end
end end

View file

@ -1,10 +1,10 @@
<head> <head>
<title>Farside Redirect - <%= service %></title> <title>Farside Redirect</title>
<meta http-equiv="refresh" content="1; url=<%= instance_url %>"> <meta http-equiv="refresh" content="1; url=<%= instance_url %>">
<script> <script>
history.pushState({page: 1}, "Farside Redirect"); history.pushState({page: 1}, "Farside Redirect");
</script> </script>
</head> </head>
<body> <body>
<span>Redirecting to <%= service %> instance... <span>Redirecting to <%= instance_url %>...</span>
</body> </body>