mobilizon.chapril.org-mobil.../lib/web/request_context.ex

28 lines
937 B
Elixir

defmodule Mobilizon.Web.RequestContext do
@moduledoc """
Module to put some context into the request
"""
@spec put_request_context(Plug.Conn.t(), Keyword.t()) :: Plug.Conn.t()
def put_request_context(%Plug.Conn{} = conn, _opts \\ []) do
if Application.get_env(:sentry, :dsn) != nil do
Sentry.Context.set_request_context(%{
url: Plug.Conn.request_url(conn),
method: conn.method,
headers: %{
"User-Agent": conn |> Plug.Conn.get_req_header("user-agent") |> List.first(),
Referer: conn |> Plug.Conn.get_req_header("referer") |> List.first(),
"Accept-Language": conn |> Plug.Conn.get_req_header("accept-language") |> List.first()
},
query_string: conn.query_string,
env: %{
REQUEST_ID: conn |> Plug.Conn.get_resp_header("x-request-id") |> List.first(),
SERVER_NAME: conn.host
}
})
end
conn
end
end