11import socket
22import os
3+ import logging
34
45from stackify .utils import arg_or_env
56from stackify .constants import API_URL
910from stackify .constants import TRANSPORT_TYPE_AGENT_SOCKET
1011from stackify .constants import TRANSPORT_TYPE_DEFAULT
1112from stackify .transport .default .formats import JSONObject
13+ from stackify .constants import DEFAULT_RUM_SCRIPT_URL
14+ from stackify .constants import DEFAULT_RUM_KEY
15+ from stackify .utils import RegexValidator , ConfigError
16+ from stackify import config
17+
18+ internal_logger = logging .getLogger (__name__ )
1219
1320
1421class EnvironmentDetail (JSONObject ):
@@ -38,6 +45,8 @@ def __init__(
3845 socket_url = SOCKET_URL ,
3946 transport = None ,
4047 http_endpoint = DEFAULT_HTTP_ENDPOINT ,
48+ rum_script_url = DEFAULT_RUM_SCRIPT_URL ,
49+ rum_key = DEFAULT_RUM_KEY
4150 ):
4251 self .api_key = api_key
4352 self .api_url = api_url
@@ -47,6 +56,39 @@ def __init__(
4756 self .http_endpoint = http_endpoint
4857 self .transport = transport
4958
59+ self .rum_script_url = DEFAULT_RUM_SCRIPT_URL
60+ self .rum_key = DEFAULT_RUM_KEY
61+
62+ # Rum config validation
63+ if rum_script_url != DEFAULT_RUM_SCRIPT_URL :
64+ self .validate (
65+ RegexValidator ("^((((https?|ftps?|gopher|telnet|nntp)://)|(mailto:|news:))(%[0-9A-Fa-f]{2}|[-\(\)_.!~*';/?:@&=+$,A-Za-z0-9])+)([).!';/?:,][\[:blank:|:blank:\]])?$" ),
66+ rum_script_url ,
67+ 'rum_script_url'
68+ )
69+ config .rum_script_url = self .rum_script_url
70+
71+ if rum_key != DEFAULT_RUM_KEY :
72+ self .validate (
73+ RegexValidator ("^[A-Za-z0-9_-]+$" ),
74+ rum_key ,
75+ 'rum_key'
76+ )
77+ config .rum_key = self .rum_key
78+
79+ config .environment = self .environment
80+ config .application = self .application
81+
82+ def validate (self , validator , value , key ):
83+ if not validator :
84+ return
85+
86+ try :
87+ value = validator (value , key )
88+ setattr (self , key , str (value ))
89+ except ConfigError as e :
90+ internal_logger .exception (str (e ))
91+
5092
5193def get_configuration (** kwargs ):
5294 """
@@ -69,4 +111,6 @@ def get_configuration(**kwargs):
69111 socket_url = arg_or_env ('socket_url' , kwargs , SOCKET_URL ),
70112 http_endpoint = arg_or_env ('http_endpoint' , kwargs , DEFAULT_HTTP_ENDPOINT , env_key = 'STACKIFY_TRANSPORT_HTTP_ENDPOINT' ),
71113 transport = transport ,
114+ rum_script_url = arg_or_env ('rum_script_url' , kwargs , DEFAULT_RUM_SCRIPT_URL , env_key = 'RETRACE_RUM_SCRIPT_URL' ),
115+ rum_key = arg_or_env ('rum_key' , kwargs , DEFAULT_RUM_KEY , env_key = 'RETRACE_RUM_KEY' )
72116 )
0 commit comments