Packages

An EventRelay client for Elixir

Current section

Files

Jump to
eventrelay_client lib event_relay event.ex
Raw

lib/event_relay/event.ex

defmodule EventRelay.Event do
@moduledoc """
Helper functions for Events
"""
require Logger
def encode_data(%{data: data} = event) when is_binary(data) do
event
end
def encode_data(%{data: data} = event) when is_map(data) do
case Jason.encode(data) do
{:ok, json} ->
Map.put(event, :data, json)
error ->
Logger.error("EventRelay.Event.encode_data error=#{inspect(error)}")
event
end
end
def add_hmac(%{data: data} = event) when is_map(data) do
encode_data(event) |> add_hmac()
end
def add_hmac(%{data: data} = event) when is_binary(data) do
hmac =
:crypto.mac(:hmac, :sha256, System.get_env("ER_CLIENT_HMAC_SECRET"), data)
|> Base.encode16()
|> String.downcase()
context = Map.put(event.context, :eventrelay_hmac, hmac)
Map.put(event, :context, context)
end
end