From ca1e96470d4b71e7ced5db6d605c911ce6e00710 Mon Sep 17 00:00:00 2001 From: mithereal Date: Sat, 30 Jul 2022 18:40:07 -0700 Subject: [PATCH] config option update_file now contains updated json of working instances after sync --- index.eex | 2 +- lib/farside.ex | 13 +++++++++++++ lib/farside/application.ex | 2 +- lib/farside/instance.ex | 6 ++++-- lib/farside/instances.ex | 8 +++----- 5 files changed, 22 insertions(+), 9 deletions(-) diff --git a/index.eex b/index.eex index 43c19e3..a2e3c05 100644 --- a/index.eex +++ b/index.eex @@ -35,7 +35,7 @@

Farside | View on GitHub


-

Last synced <%= last_updated %> UTC

+

Last synced <%= DateTime.truncate(last_updated, :second) %> UTC

    <%= for {service, instance_list} <- services do %> diff --git a/lib/farside.ex b/lib/farside.ex index a86caba..1642dc6 100644 --- a/lib/farside.ex +++ b/lib/farside.ex @@ -92,4 +92,17 @@ defmodule Farside do instance end end + + + def save_results(file, data) do + {:ok, file} = File.open(file, [:append]) + bin = :erlang.term_to_binary(data) + IO.binwrite(file, bin) + File.close(file) + end + + def restore_term(file) do + {:ok,bin} = File.read(file) + :erlang.binary_to_term(bin) + end end diff --git a/lib/farside/application.ex b/lib/farside/application.ex index b22ccbc..bd35335 100644 --- a/lib/farside/application.ex +++ b/lib/farside/application.ex @@ -13,7 +13,7 @@ defmodule Farside.Application do def start(_type, _args) do port = case Application.fetch_env!(:farside, :port) do - nil -> System.get_env("PORT") + nil -> System.get_env("PORT", "4001") port -> port end diff --git a/lib/farside/instance.ex b/lib/farside/instance.ex index 14bd3a8..9f69e42 100644 --- a/lib/farside/instance.ex +++ b/lib/farside/instance.ex @@ -6,7 +6,7 @@ defmodule Farside.Instance do alias Farside.Http @registry_name :servers - @update_file Application.fetch_env!(:farside, :update_file) + @update_file Application.fetch_env!(:farside, :update_file) <> ".json" def child_spec(args) do %{ @@ -69,7 +69,9 @@ defmodule Farside.Instance do :ets.insert(state.ref, {:data, service}) - File.write(@update_file, service.fallback) + encoded = service |> Map.from_struct() |> Jason.encode!() + + Farside.save_results(@update_file, encoded) {:noreply, state} end diff --git a/lib/farside/instances.ex b/lib/farside/instances.ex index 87e0f74..99bee1a 100644 --- a/lib/farside/instances.ex +++ b/lib/farside/instances.ex @@ -3,15 +3,13 @@ defmodule Farside.Instances do def sync() do update_file = Application.fetch_env!(:farside, :update_file) + update_json = update_file <> ".json" - File.rm("#{update_file}-prev") + File.rename(update_json, "#{update_file}-#{to_string(DateTime.utc_now()) <> ".json"}") - File.rename(update_file, "#{update_file}-prev") - - File.write(update_file, "") + File.write(update_json, "") LastUpdated.value(DateTime.utc_now()) - Farside.Instance.Supervisor.update_children() end end