@@ -389,6 +389,9 @@ defmodule Sentry.Config do
389389 @ opts_schema NimbleOptions . new! ( @ raw_opts_schema )
390390 @ valid_keys Keyword . keys ( @ raw_opts_schema )
391391
392+ @ sentry_version 5
393+ @ sentry_client "sentry-elixir/#{ Mix.Project . config ( ) [ :version ] } "
394+
392395 @ spec validate! ( ) :: keyword ( )
393396 def validate! do
394397 :sentry
@@ -461,6 +464,39 @@ defmodule Sentry.Config do
461464 @ spec dsn ( ) :: nil | { String . t ( ) , String . t ( ) , String . t ( ) }
462465 def dsn , do: get ( :dsn )
463466
467+ @ spec envelope_endpoint ( ) :: String . t ( )
468+ def envelope_endpoint do
469+ { base_uri , _ , _ } = dsn ( )
470+ base_uri <> "envelope/"
471+ end
472+
473+ @ spec spans_endpoint ( ) :: String . t ( )
474+ def spans_endpoint do
475+ { base_uri , _ , _ } = dsn ( )
476+ base_uri <> "spans/"
477+ end
478+
479+ @ spec auth_headers ( ) :: [ { String . t ( ) , String . t ( ) } ]
480+ def auth_headers do
481+ { _ , public_key , secret_key } = dsn ( )
482+
483+ auth_query =
484+ [
485+ sentry_version: @ sentry_version ,
486+ sentry_client: @ sentry_client ,
487+ sentry_timestamp: System . system_time ( :second ) ,
488+ sentry_key: public_key ,
489+ sentry_secret: secret_key
490+ ]
491+ |> Enum . reject ( fn { _ , value } -> is_nil ( value ) end )
492+ |> Enum . map_join ( ", " , fn { name , value } -> "#{ name } =#{ value } " end )
493+
494+ [
495+ { "User-Agent" , @ sentry_client } ,
496+ { "X-Sentry-Auth" , "Sentry " <> auth_query }
497+ ]
498+ end
499+
464500 # TODO: remove me on v11.0.0, :included_environments has been deprecated
465501 # in v10.0.0.
466502 @ spec included_environments ( ) :: :all | [ String . t ( ) ]
@@ -710,10 +746,10 @@ defmodule Sentry.Config do
710746 end
711747
712748 with { :ok , { base_path , project_id } } <- pop_project_id ( uri . path ) do
713- new_path = Enum . join ( [ base_path , "api" , project_id , "envelope" ] , "/" ) <> "/"
714- endpoint_uri = URI . merge ( % URI { uri | userinfo: nil } , new_path )
749+ new_path = Enum . join ( [ base_path , "api" , project_id ] , "/" ) <> "/"
750+ base_uri = URI . merge ( % URI { uri | userinfo: nil } , new_path )
715751
716- { :ok , { URI . to_string ( endpoint_uri ) , public_key , secret_key } }
752+ { :ok , { URI . to_string ( base_uri ) , public_key , secret_key } }
717753 end
718754 catch
719755 message -> { :error , message }
0 commit comments