diff --git a/index.eex b/index.eex
index 43c19e3..a2e3c05 100644
--- a/index.eex
+++ b/index.eex
@@ -35,7 +35,7 @@
-
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