3333from ..packages .network_layer .models .request_model import RequestModel
3434from ..enums .headers_enum import HeadersEnum
3535from ..utils .usage_stats_util import UsageStatsUtil
36-
37-
38- def get_settings_path (sdk_key : str , account_id : str ) -> Dict [str , Any ]:
39- path = {
40- "i" : sdk_key , # Inject API key
41- "r" : random .random (), # Random number for cache busting
42- "a" : account_id , # Account ID
43- }
44- return path
45-
36+ from ..services .settings_manager import SettingsManager
37+ from ..enums .event_enum import EventEnum
4638
4739# Function to construct tracking path for an event
4840def get_track_event_path (event : str , account_id : str , user_id : str ) -> Dict [str , Any ]:
@@ -69,7 +61,6 @@ def get_event_batching_query_params(account_id: str) -> Dict[str, Any]:
6961def get_events_base_properties (
7062 event_name : str , visitor_user_agent : str = "" , ip_address : str = ""
7163) -> Dict [str , Any ]:
72- from ..services .settings_manager import SettingsManager
7364
7465 # Get the instance of SettingsManager
7566 settings = SettingsManager .get_instance ()
@@ -101,7 +92,6 @@ def _get_event_base_payload(
10192 visitor_user_agent : str = "" ,
10293 ip_address : str = "" ,
10394) -> Dict [str , Any ]:
104- from ..services .settings_manager import SettingsManager
10595
10696 uuid_value = get_uuid (user_id , SettingsManager .get_instance ().get_account_id ())
10797 sdk_key = SettingsManager .get_instance ().get_sdk_key ()
@@ -221,9 +211,6 @@ def get_attribute_payload_data(
221211def send_post_api_request (
222212 properties : Dict [str , Any ], payload : Dict [str , Any ], user_id : str
223213):
224- # Importing the SettingsManager here to avoid circular import issues or unnecessary imports
225- from ..services .settings_manager import SettingsManager
226-
227214 try :
228215 # Initialize the headers dictionary for the request
229216 headers = {}
@@ -263,6 +250,17 @@ def send_request():
263250 if response .status_code == 200 :
264251 # clear the usage stats data
265252 UsageStatsUtil ().clear_usage_stats ()
253+
254+ request_query = request .get_query ()
255+ LogManager .get_instance ().info (
256+ info_messages .get ("NETWORK_CALL_SUCCESS" ).format (
257+ event = request_query .get ("en" ),
258+ endPoint = request .get_url ().split ("?" )[0 ],
259+ accountId = request_query .get ("a" ),
260+ userId = request .get_user_id (),
261+ uuid = request .get_body ().get ("d" ).get ("visId" ),
262+ )
263+ )
266264 except Exception as e :
267265 LogManager .get_instance ().error (
268266 error_messages .get ("NETWORK_CALL_FAILED" ).format (
@@ -289,7 +287,6 @@ def send_request():
289287def send_post_batch_request (
290288 payload : dict , account_id : int , sdk_key : str , flush_callback = None
291289):
292- from ..services .settings_manager import SettingsManager
293290
294291 try :
295292 # Prepare the batch payload
@@ -313,6 +310,7 @@ def send_post_batch_request(
313310 SettingsManager .get_instance ().port ,
314311 )
315312
313+ request_model .set_user_id ("NA" )
316314 # Call PostAsync to send the request asynchronously
317315 network_manager = NetworkManager .get_instance ()
318316 response = network_manager .post (request_model )
@@ -345,8 +343,6 @@ def send_post_batch_request(
345343def get_messaging_event_payload (
346344 message_type : str , message : str , event_name : str
347345) -> Dict [str , Any ]:
348- from ..services .settings_manager import SettingsManager
349-
350346 # Get user ID and properties
351347 settings = SettingsManager .get_instance ()
352348 user_id = f"{ settings .get_account_id ()} _{ settings .get_sdk_key ()} "
@@ -373,20 +369,65 @@ def get_messaging_event_payload(
373369 return properties
374370
375371
376- def send_messaging_event (
377- properties : Dict [str , Any ], payload : Dict [str , Any ]
372+ def get_sdk_init_event_payload (
373+ event_name : str ,
374+ settings_fetch_time : Optional [int ] = None ,
375+ sdk_init_time : Optional [int ] = None ,
376+ ) -> Dict [str , Any ]:
377+ """
378+ Constructs the payload for sdk init called event.
379+
380+ Args:
381+ event_name: The name of the event.
382+ settings_fetch_time: Time taken to fetch settings in milliseconds.
383+ sdk_init_time: Time taken to initialize the SDK in milliseconds.
384+
385+ Returns:
386+ The constructed payload with required fields.
387+ """
388+ # Get user ID and properties
389+ settings = SettingsManager .get_instance ()
390+ user_id = f"{ settings .get_account_id ()} _{ settings .get_sdk_key ()} "
391+ properties = _get_event_base_payload (None , user_id , event_name , None , None )
392+
393+ # Set the required fields as specified
394+ properties ["d" ]["event" ]["props" ][Constants .VWO_FS_ENVIRONMENT ] = settings .get_sdk_key ()
395+ properties ["d" ]["event" ]["props" ]["product" ] = "fme"
396+
397+ data = {
398+ "isSDKInitialized" : True ,
399+ "settingsFetchTime" : settings_fetch_time ,
400+ "sdkInitTime" : sdk_init_time ,
401+ }
402+ properties ["d" ]["event" ]["props" ]["data" ] = data
403+
404+ return properties
405+
406+
407+ def send_event (
408+ properties : Dict [str , Any ], payload : Dict [str , Any ], event_name : str
378409) -> Dict [str , Any ]:
379410 try :
411+ #if event_name is not VWO_LOG_EVENT, then set base url to constants.hostname
412+ if event_name == EventEnum .VWO_LOG_EVENT .value :
413+ base_url = Constants .HOST_NAME
414+ protocol = Constants .HTTPS_PROTOCOL
415+ port = 443
416+ else :
417+ base_url = UrlService .get_base_url ()
418+ protocol = SettingsManager .get_instance ().protocol
419+ port = SettingsManager .get_instance ().port
420+
380421 # Create the request model
381422 request = RequestModel (
382- Constants . HOST_NAME ,
423+ base_url ,
383424 "POST" ,
384425 UrlEnum .EVENTS .value ,
385426 properties ,
386427 payload ,
387428 None ,
388- Constants . HTTPS_PROTOCOL ,
389- 443 ,
429+ protocol ,
430+ port ,
390431 )
391432
392433 # Get network instance
0 commit comments