1
0
Fork 0
mirror of https://github.com/benbusby/farside.git synced 2025-05-16 15:30:03 +00:00

Auto select frontend for links to "parent" service

Farside now supports redirecting based on a provided link to a "parent"
service, if such a parent service is supported.

For example, a link such as:

farside.link/https://www.youtube.com/watch?v=dQw4w9WgXcQ

will now redirect to any of the available YouTube related frontends.

This works by matching against a mapping of "parent" service domains
("youtube.com", "reddit.com", etc) to a list of their respective frontend
alternatives (["invidious", "piped"], ["libreddit", "teddit"], etc). A
random element is chosen from this list, and the remainder of Farside's
routing logic proceeds as if the user had chosen the service directly to
begin with.

Closes 
This commit is contained in:
Ben Busby 2022-06-09 13:08:01 -06:00
parent ff8d220e90
commit 5006b97dfa
No known key found for this signature in database
GPG key ID: B9B7231E01D924A1
4 changed files with 88 additions and 3 deletions

View file

@ -77,4 +77,22 @@ defmodule FarsideTest do
assert first_redirect != second_redirect
end)
end
test "/https://..." do
parent_service = "https://www.youtube.com"
parent_path = "watch?v=dQw4w9WgXcQ"
conn = test_conn("/#{parent_service}/#{parent_path}")
redirect = elem(List.last(conn.resp_headers), 1)
IO.puts("")
IO.puts(" /#{parent_service}/#{parent_path}")
IO.puts(" redirected to")
IO.puts(" #{redirect}")
assert conn.state == :set
assert conn.status == 302
assert redirect =~ parent_path
assert !(redirect =~ parent_service)
end
end