Skip to content

Commit

Permalink
Adding ttl in config.exs
Browse files Browse the repository at this point in the history
  • Loading branch information
Matthew committed Aug 6, 2024
1 parent c53dc53 commit faea2d2
Show file tree
Hide file tree
Showing 5 changed files with 24 additions and 12 deletions.
2 changes: 2 additions & 0 deletions config/config.exs
Original file line number Diff line number Diff line change
Expand Up @@ -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"],
Expand Down
9 changes: 7 additions & 2 deletions lib/turn_junebug_expressway/agent.ex
Original file line number Diff line number Diff line change
@@ -1,12 +1,17 @@
defmodule TurnJunebugExpressway.TurnAgent do
defmodule TurnJunebugExpressway.MessageRecipientIdCache do
use GenServer

def start_link(options \\ []) do
{name, options} = Keyword.pop(options, :name, __MODULE__)
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

Expand Down
2 changes: 1 addition & 1 deletion lib/turn_junebug_expressway/application.ex
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
14 changes: 9 additions & 5 deletions lib/turn_junebug_expressway_web/utils.ex
Original file line number Diff line number Diff line change
@@ -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)

Expand Down Expand Up @@ -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

Expand Down Expand Up @@ -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)
}
Expand Down
9 changes: 5 additions & 4 deletions test/turn_junebug_expressway_web/utils_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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

Expand Down

0 comments on commit faea2d2

Please sign in to comment.