defp process_token_request(conn, rd, start_time) do
with {:ok, rd} <- TokenInput.validate(rd),
{:ok, rd} <- TokenIssue.issue(rd),
{:ok, rd} <- TokenOutput.output(rd),
{:ok, rd} <- TokenTelemetry.emit(start_time, rd) do
DataDog.trace_poi_token_success(rd)
Logger.info(fn ->
log_prefix = build_log_prefix(rd.trace)
"jwt.poi.success #{log_prefix} #{Jason.encode!(TraceFormatter.prepare(rd.trace))}"
end)
conn
|> put_resp_content_type("application/json")
|> send_resp(200, Jason.encode!(rd.output))
else
{:error, rd} ->
{:ok, rd} = TokenTelemetry.emit(start_time, rd)
DataDog.trace_poi_token_failure(rd)
Logger.info(fn ->
log_prefix = build_log_prefix(rd.trace)
"jwt.poi.failure #{log_prefix} #{Jason.encode!(TraceFormatter.prepare(rd.trace))}"
end)
conn
|> put_resp_content_type("application/json")
|> send_resp(400, Jason.encode!(%{errors: collect_all_errors(rd.trace)}))
end
endCloud-iA
Implementation of POS-to-POI communication solution via WebSocket, built on Elixir/OTP and BEAM.