libdd_trace_utils/
config_utils.rs1use crate::trace_utils;
5use std::env;
6
7pub const PROD_INTAKE_SUBDOMAIN: &str = "trace.agent";
8
9const TRACE_INTAKE_ROUTE: &str = "/api/v0.2/traces";
10const TRACE_STATS_INTAKE_ROUTE: &str = "/api/v0.2/stats";
11
12pub fn read_cloud_env() -> Option<(String, trace_utils::EnvironmentType)> {
13 if let Ok(res) = env::var("AWS_LAMBDA_FUNCTION_NAME") {
14 return Some((res, trace_utils::EnvironmentType::LambdaFunction));
15 }
16 if let Ok(res) = env::var("K_SERVICE") {
17 return Some((res, trace_utils::EnvironmentType::CloudFunction));
19 }
20 if let Ok(res) = env::var("FUNCTION_NAME") {
21 return Some((res, trace_utils::EnvironmentType::CloudFunction));
23 }
24 if let Ok(res) = env::var("WEBSITE_SITE_NAME") {
25 return Some((res, trace_utils::EnvironmentType::AzureFunction));
27 }
28 if let Ok(res) = env::var("ASCSVCRT_SPRING__APPLICATION__NAME") {
29 return Some((res, trace_utils::EnvironmentType::AzureSpringApp));
31 }
32 None
33}
34
35pub fn trace_intake_url(site: &str) -> String {
36 construct_trace_intake_url(site, TRACE_INTAKE_ROUTE)
37}
38
39pub fn trace_intake_url_prefixed(endpoint_prefix: &str) -> String {
40 format!("{endpoint_prefix}{TRACE_INTAKE_ROUTE}")
41}
42
43pub fn trace_stats_url(site: &str) -> String {
44 construct_trace_intake_url(site, TRACE_STATS_INTAKE_ROUTE)
45}
46
47pub fn trace_stats_url_prefixed(endpoint_prefix: &str) -> String {
48 format!("{endpoint_prefix}{TRACE_STATS_INTAKE_ROUTE}")
49}
50
51fn construct_trace_intake_url(prefix: &str, route: &str) -> String {
52 format!("https://{PROD_INTAKE_SUBDOMAIN}.{prefix}{route}")
53}