Current section
Files
Jump to
Current section
Files
lib/client.ex
defmodule Honeylixir.Client do
use HTTPoison.Base
def send_event(%Honeylixir.Event{} = event) do
url = "#{event.api_host}/1/events/#{event.dataset}"
case Jason.encode(event.fields) do
{:ok, body} ->
headers = [
{"X-Honeycomb-Team", event.team_writekey},
{"X-Honeycomb-Event-Time", event.timestamp},
{"X-Honeycomb-Samplerate", event.sample_rate}
]
case post(url, body, headers, hackney: [pool: :default]) do
{:ok, %HTTPoison.Response{status_code: 200}} ->
{:ok, nil}
{:ok, %HTTPoison.Response{body: body}} ->
{:error, body}
{:error, error} ->
{:error, error}
end
{:error, error} ->
{:error, error}
end
end
@doc """
Adds standard headers for all requests that do not vary by data sent.
## Examples
iex> Honeylixir.Client.process_request_headers([])
[{"Content-Type", "application/json"}, {"User-Agent", "libhoney-honeylixir/0.1.0"}]
iex> Honeylixir.Client.process_request_headers([{"X-Foo", "foo"}])
[{"Content-Type", "application/json"}, {"User-Agent", "libhoney-honeylixir/0.1.0"}, {"X-Foo", "foo"}]
"""
@impl true
def process_request_headers(headers) do
# Todo: Interpolate the version from what it is
[{"Content-Type", "application/json"}, {"User-Agent", "libhoney-honeylixir/0.1.0"} | headers]
end
end