defmodule Plausible do @doc """ Create Plausible Event Currently only returns `:ok` ## Examples iex> create_event("https://plausible.io/api/event", MyApp.Finch, user_agent: user_agent, x_forward_for: x_forwarded_for, url: url, domain: domain) :ok """ def create_event(endpoint \\ "https://plausible.io/api/event", finch_process, opts) do user_agent = opts[:user_agent] || raise """ user_agent not defined """ x_forwarded_for = opts[:x_forwarded_for] || raise """ x_forwarded_for not defined """ domain = opts[:domain] || raise """ domain not defined """ url = opts[:url] || raise """ url not defined """ referrer = opts[:referrer] event_name = opts[:event_name] || "pageview" body = %{name: event_name, url: url, referrer: referrer, domain: domain} |> Jason.encode!() # TODO handle custom properties %Finch.Response{status: 202} = Finch.build( :post, endpoint, [ {"User-Agent", user_agent}, {"X-Forwarded-For", x_forwarded_for}, {"Content-Type", "application/json"} ], body ) |> Finch.request!(finch_process) :ok end end