diff --git a/config/config.exs b/config/config.exs index a7ff884..8304c46 100644 --- a/config/config.exs +++ b/config/config.exs @@ -5,6 +5,8 @@ # is restricted to this project. import Config +config :turn_junebug_expressway, cache_ttl: 1_000 + # Configures the endpoint config :turn_junebug_expressway, TurnJunebugExpresswayWeb.Endpoint, url: [host: "localhost"], diff --git a/lib/turn_junebug_expressway/agent.ex b/lib/turn_junebug_expressway/agent.ex index 06398fd..c49d952 100644 --- a/lib/turn_junebug_expressway/agent.ex +++ b/lib/turn_junebug_expressway/agent.ex @@ -1,4 +1,4 @@ -defmodule TurnJunebugExpressway.TurnAgent do +defmodule TurnJunebugExpressway.MessageRecipientIdCache do use GenServer def start_link(options \\ []) do @@ -6,7 +6,12 @@ defmodule TurnJunebugExpressway.TurnAgent do GenServer.start_link(__MODULE__, options, name: name) end - def put(pid, key, value, ttl \\ 2_000) do + def put( + pid, + key, + value, + ttl \\ Application.get_env(:turn_junebug_expressway, :cache_ttl, 10_000) + ) do GenServer.call(pid, {:put, key, value, ttl}) end diff --git a/lib/turn_junebug_expressway/application.ex b/lib/turn_junebug_expressway/application.ex index 1cb5759..b9f80c3 100644 --- a/lib/turn_junebug_expressway/application.ex +++ b/lib/turn_junebug_expressway/application.ex @@ -12,7 +12,7 @@ defmodule TurnJunebugExpressway.Application do # Define workers and child supervisors to be supervised children = [ # Start Agent - {TurnJunebugExpressway.TurnAgent, name: :my_cache}, + {TurnJunebugExpressway.MessageRecipientIdCache, name: :my_cache}, # Start the endpoint when the application starts TurnJunebugExpresswayWeb.Endpoint, # Start your own worker by calling: TurnJunebugExpressway.Worker.start_link(arg1, arg2, arg3) diff --git a/lib/turn_junebug_expressway_web/utils.ex b/lib/turn_junebug_expressway_web/utils.ex index 17a98c9..1faaef9 100644 --- a/lib/turn_junebug_expressway_web/utils.ex +++ b/lib/turn_junebug_expressway_web/utils.ex @@ -1,6 +1,6 @@ defmodule TurnJunebugExpresswayWeb.Utils do use Tesla - alias TurnJunebugExpressway.TurnAgent + alias TurnJunebugExpressway.MessageRecipientIdCache @turn_client Application.compile_env(:turn_junebug_expressway, :turn_client) @rapidpro_client Application.compile_env(:turn_junebug_expressway, :rapidpro_client) @@ -66,7 +66,7 @@ defmodule TurnJunebugExpresswayWeb.Utils do value = Map.get(message, "recipient_id") # IO.puts("#{message}") # IO.puts("#{inspect(key)}, #{inspect(value)}") - TurnJunebugExpressway.TurnAgent.put(:my_cache, key, value) + TurnJunebugExpressway.MessageRecipientIdCache.put(:my_cache, key, value) TurnJunebugExpressway.MessageEngine.publish_message(message) end @@ -119,21 +119,25 @@ defmodule TurnJunebugExpresswayWeb.Utils do def forward_event(event) do # IO.puts("#{inspect(event)}") - IO.puts("#{inspect(TurnAgent.get(:my_cache, Map.get(event, "user_message_id")))}") + IO.puts( + "#{inspect(MessageRecipientIdCache.get(:my_cache, Map.get(event, "user_message_id")))}" + ) case event |> get_event_status do {:ignore, _} -> :ok {:ok, status} -> - if recipient_id = TurnAgent.get(:my_cache, Map.get(event, "user_message_id")) != nil do + if recipient_id = + MessageRecipientIdCache.get(:my_cache, Map.get(event, "user_message_id")) != nil do @turn_client.client() |> @turn_client.post_event(%{ "statuses" => [ %{ "id" => Map.get(event, "user_message_id"), # "recipient_id" => nil, - "recipient_id" => TurnAgent.get(:my_cache, Map.get(event, "user_message_id")), + "recipient_id" => + MessageRecipientIdCache.get(:my_cache, Map.get(event, "user_message_id")), "status" => status, "timestamp" => get_event_timestamp(event, :second) } diff --git a/test/turn_junebug_expressway_web/utils_test.exs b/test/turn_junebug_expressway_web/utils_test.exs index 49d7093..f725b4f 100644 --- a/test/turn_junebug_expressway_web/utils_test.exs +++ b/test/turn_junebug_expressway_web/utils_test.exs @@ -4,7 +4,7 @@ defmodule TurnJunebugExpresswayWeb.UtilsTest do import Mox alias TurnJunebugExpresswayWeb.Utils - alias TurnJunebugExpressway.TurnAgent + alias TurnJunebugExpressway.MessageRecipientIdCache describe "format_urn" do test "format_urn/1 with + for turn" do @@ -54,7 +54,8 @@ defmodule TurnJunebugExpresswayWeb.UtilsTest do "message_type" => "event" } - assert Utils.handle_incoming_event(Jason.encode!(event)) == nil + Utils.handle_incoming_event(Jason.encode!(event)) + # assert_received {:EXIT, self(),{%RuntimeError{message: "Shouldnt be called"}, _}} end test "sends event back to turn", %{} do @@ -211,9 +212,9 @@ defmodule TurnJunebugExpresswayWeb.UtilsTest do } Utils.send_message(message) - assert TurnAgent.get(:my_cache, Map.get(message, "user_message_id")) == "1234" + assert MessageRecipientIdCache.get(:my_cache, Map.get(message, "user_message_id")) == "1234" :timer.sleep(3_000) - assert TurnAgent.get(:my_cache, Map.get(message, "user_message_id")) == nil + assert MessageRecipientIdCache.get(:my_cache, Map.get(message, "user_message_id")) == nil end end