diff --git a/lib/pledge_controller.ex b/lib/pledge_controller.ex index 16b73ff..4f48be6 100644 --- a/lib/pledge_controller.ex +++ b/lib/pledge_controller.ex @@ -4,7 +4,7 @@ defmodule Servy.PledgeController do def create(conv, %{"name" => name, "amount" => amount}) do # sends pledge to the external service and caches it - PledgeServer.create_pledge(name, String.to_integer(amount)) + Servy.PledgeServer.create_pledge(name, String.to_integer(amount)) %{conv | status: 201, resp_body: "#{name} pledged #{amount}!"} end diff --git a/lib/pledge_server.ex b/lib/pledge_server.ex index b174bcc..25f46a4 100644 --- a/lib/pledge_server.ex +++ b/lib/pledge_server.ex @@ -1,8 +1,34 @@ defmodule Servy.PledgeServer do - def create_pledge(name, amount) do - {:ok, id} = send_pledge_to_service(name, amount) + def listen_loop(state) do + IO.puts("\nWaiting for a message...") + + receive do + {:create_pledge, name, amount} -> + {:ok, id} = send_pledge_to_service(name, amount) + new_state = [{name, amount} | state] + IO.puts("#{name} pledged #{amount}!") + IO.puts("New state is #{inspect(new_state)}") + listen_loop(new_state) + + {sender, :recent_pledges} -> + send(sender, {:response, state}) + IO.puts("Sent pledges to #{inspect(sender)}") + listen_loop(state) + end end + # def create_pledge(name, amount) do + # {:ok, id} = send_pledge_to_service(name, amount) + + # # Cache the pledge: + # [{"larry, 10"}] + # end + + # def recent_pledge do + # # Returns the most recent pledges (cache): + # [{"larry, 10"}] + # end + defp send_pledge_to_service(_name, _amount) do # CODE GOES HERE TO SEND PLEDGE TO EXTERNAL SERVICE {:ok, "pledge-#{:rand.uniform(1000)}"}