Packages
tz_extra
0.28.0
0.45.0
0.44.0
0.43.0
0.42.0
0.41.0
0.40.0
0.39.0
0.38.0
0.37.0
0.36.0
0.35.0
0.34.0
0.33.0
0.32.0
0.31.0
0.30.0
0.29.0
0.28.0
0.27.0
0.26.0
0.25.0
0.24.0
0.23.0
0.22.1
0.22.0
0.21.1
0.21.0
0.20.1
0.20.0
0.17.0
0.16.7
0.16.6
0.16.5
0.16.3
0.16.2
0.16.1
0.16.0
0.15.1
0.15.0
0.8.0
0.7.0
0.6.0
0.5.0
0.4.0
0.3.0
0.2.0
0.1.0
Time zone-related utilities
Current section
Files
Jump to
Current section
Files
lib/update_periodically.ex
defmodule TzExtra.UpdatePeriodically do
use GenServer
require Logger
alias Tz.HTTP
alias Tz.Updater, as: TzUpdater
alias TzExtra.Compiler
defp maybe_recompile_tz() do
TzUpdater.maybe_recompile()
end
defp maybe_recompile_tz_extra() do
if Tz.iana_version() != TzExtra.iana_version() do
Logger.info("TzExtra is recompiling the time zone data...")
Code.compiler_options(ignore_module_conflict: true)
Compiler.compile()
Code.compiler_options(ignore_module_conflict: false)
Logger.info("TzExtra compilation done")
end
end
def start_link(opts) do
HTTP.get_http_client!()
GenServer.start_link(__MODULE__, opts)
end
def init(opts) do
maybe_recompile_tz()
maybe_recompile_tz_extra()
schedule_work(opts[:interval_in_days])
{:ok, %{opts: opts}}
end
def handle_info(:work, %{opts: opts}) do
maybe_recompile_tz()
maybe_recompile_tz_extra()
schedule_work(opts[:interval_in_days])
{:noreply, %{opts: opts}}
end
defp schedule_work(interval_in_days) do
interval_in_days = interval_in_days || 1
Process.send_after(self(), :work, interval_in_days * 24 * 60 * 60 * 1000)
end
end