mirror of
https://github.com/benbusby/farside.git
synced 2025-03-15 03:36:33 -04:00

My initial thought for this: create a simple redis db for storing key value pairs of instance -> list of live instances for each privacy front end (libreddit, bibliogram, etc). A script executed on a certain schedule would (in the background) check each instance to make sure it isn't down or unreasonably slow. If the instance is available, add it to a list of available instances in the db. When a user navigates to the revolver url (something like <url>/<service>/<...>), the app would pick a random value from the list returned by redis.get('<service>') and forward the user to that instance. As a side note, this could instead load the instances json from a remote source (like github or something) so that changes to instances don't need to involve a redeploy of the entire app.
31 lines
585 B
Elixir
31 lines
585 B
Elixir
defmodule RouterExample.MixProject do
|
|
use Mix.Project
|
|
|
|
def project do
|
|
[
|
|
app: :router_example,
|
|
version: "0.1.0",
|
|
elixir: "~> 1.8",
|
|
start_permanent: Mix.env() == :prod,
|
|
deps: deps()
|
|
]
|
|
end
|
|
|
|
# Run "mix help compile.app" to learn about applications.
|
|
def application do
|
|
[
|
|
extra_applications: [:logger],
|
|
mod: {RouterExample.Application, []}
|
|
]
|
|
end
|
|
|
|
# Run "mix help deps" to learn about dependencies.
|
|
defp deps do
|
|
[
|
|
{:jason, "~> 1.1"},
|
|
{:plug_cowboy, "~> 2.0"},
|
|
{:poison, "~> 5.0"}
|
|
]
|
|
end
|
|
end
|