mirror of
https://github.com/benbusby/farside.git
synced 2025-04-30 07:30:02 +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 #37
This commit is contained in:
parent
ff8d220e90
commit
5006b97dfa
4 changed files with 88 additions and 3 deletions
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue