farside/update.exs
Ben Busby cf8dfc5a85
Initialize update script
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.
2021-10-21 17:07:43 -06:00

22 lines
413 B
Elixir

defmodule Instance do
defstruct [
instance_type: nil,
instance_list: []
]
end
defmodule Instances do
def update(filename) do
{:ok, file} = File.read(filename)
{:ok, json} = Poison.decode(file, as: [%Instance{}])
for x <- json do
IO.puts(x.instance_type)
for y <- x.instance_list do
IO.puts(" - " <> y)
end
end
end
end
Instances.update("instances.json")