summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorBen Busby <contact@benbusby.com>2022-01-27 11:57:41 -0700
committerGitHub <noreply@github.com>2022-01-27 11:57:41 -0700
commit932f3bbcab9be82aafb487d7890fde83b2210a7b (patch)
tree4261df31d3964475057a6139908ce96ad87592b5 /lib
parent724a995fd9263194b255b82c68a48b5b6e735e30 (diff)
downloadfarside-932f3bbcab9be82aafb487d7890fde83b2210a7b.tar.gz
Preserve redirect with `/_/` path prefix (#13)
This adds a straightforward way of preserving Farside's redirecting behavior in the user's browser history. That way if an instance becomes unavailable between the 5 min scans, the user can opt to navigate back one page and be taken to a new instance. This is accomplished using a single line of JS, and could potentially work as the default behavior of Farside (with the current default behavior requiring a path prefix instead). This should be revisited down the road when more people are using this service.
Diffstat (limited to 'lib')
-rw-r--r--lib/farside/router.ex14
1 files changed, 14 insertions, 0 deletions
diff --git a/lib/farside/router.ex b/lib/farside/router.ex
index e74f29e..2f0216c 100644
--- a/lib/farside/router.ex
+++ b/lib/farside/router.ex
@@ -1,5 +1,6 @@
defmodule Farside.Router do
@index Application.fetch_env!(:farside, :index)
+ @route Application.fetch_env!(:farside, :route)
use Plug.Router
@@ -24,6 +25,19 @@ defmodule Farside.Router do
send_resp(conn, 200, resp)
end
+ get "/_/:service/*glob" do
+ r_path = String.slice(conn.request_path, 2..-1)
+
+ resp =
+ EEx.eval_file(
+ @route,
+ service: service,
+ instance_url: r_path
+ )
+
+ send_resp(conn, 200, resp)
+ end
+
get "/:service/*glob" do
path = Enum.join(glob, "/")
instance = Farside.pick_instance(service)