Packages

Translate CloudFoundry BBS events and endpoints into rabbitmq messages.

Current section

Files

Jump to
bbsmq lib bbsmq_client bbsmq_client.ex
Raw

lib/bbsmq_client/bbsmq_client.ex

defmodule BBSMqClient do
def start_link(queue_name) do
rabbitmq_address = System.get_env("BBSMQ_CLIENT_RABBITMQ_ADDR")
BBSMqClient.Manager.start_link rabbitmq_address, queue_name
end
for endpoint <- BBSHTTPClient.__info__(:functions)
|> Enum.reject(fn(ele) -> ele == {:init, 0} end) do
case endpoint do
{function_name, 1} ->
def unquote(function_name)(pid) do
send_message pid, %{endpoint: atom_to_endpoint_name(unquote(function_name)), payload: ""}
end
{function_name, 2} ->
def unquote(function_name)(pid, payload) do
send_message pid, %{endpoint: atom_to_endpoint_name(unquote(function_name)), payload: payload}
end
end
end
defp send_message(pid, message) do
GenServer.call(pid, {:send_message, message})
end
defp atom_to_endpoint_name(endpoint_atom) do
endpoint_atom
|> Atom.to_string
|> String.split("_")
|> Enum.map(fn(word) ->
cond do
String.starts_with?(word, "lrp") ->
String.upcase(word) |> String.replace("S", "s")
true ->
String.capitalize(word)
end
end)
|> Enum.join("")
end
end