From 3d1f1617c5b5aa4c7a92ec562e4c8cc09963d932 Mon Sep 17 00:00:00 2001 From: Krishna Kishore Bandaru Date: Fri, 28 Apr 2023 21:05:37 +0530 Subject: [PATCH] added identifier in requestparameters & correlationId --- MVMCore/MVMCore/ActionHandling/ActionOpenPageHandler.swift | 1 + MVMCore/MVMCore/LoadHandling/MVMCoreLoadHandler.m | 2 +- MVMCore/MVMCore/LoadHandling/MVMCoreLoadObject.m | 3 +++ MVMCore/MVMCore/LoadHandling/MVMCoreLoadRequestOperation.m | 7 +++---- MVMCore/MVMCore/LoadHandling/MVMCoreRequestParameters.h | 3 +++ MVMCore/MVMCore/OtherHandlers/MVMCoreEvent.swift | 7 ++++--- MVMCore/MVMCore/Utility/MVMCoreErrorObject.h | 3 --- 7 files changed, 15 insertions(+), 11 deletions(-) diff --git a/MVMCore/MVMCore/ActionHandling/ActionOpenPageHandler.swift b/MVMCore/MVMCore/ActionHandling/ActionOpenPageHandler.swift index 8e1981f..ea40b42 100644 --- a/MVMCore/MVMCore/ActionHandling/ActionOpenPageHandler.swift +++ b/MVMCore/MVMCore/ActionHandling/ActionOpenPageHandler.swift @@ -44,6 +44,7 @@ open class ActionOpenPageHandler: MVMCoreJSONActionHandlerProtocol { /// Adds client parameters and makes calls performRequest() open func performRequestAddingClientParameters(with requestParameters: MVMCoreRequestParameters, model: ActionOpenPageModel, delegateObject: DelegateObject?, additionalData: [AnyHashable : Any]?) async throws -> MVMCoreLoadRequestOperation? { let actionUUID = MVMCoreActionHandler.getUUID(additionalData: additionalData) ?? UUID().uuidString + requestParameters.identifier = actionUUID if !requestParameters.backgroundRequest, let pageType = requestParameters.pageType { MVMCoreLoggingHandler.shared()?.logCoreEvent(.pageStarted(pageType: pageType, requestUUID: actionUUID)) } diff --git a/MVMCore/MVMCore/LoadHandling/MVMCoreLoadHandler.m b/MVMCore/MVMCore/LoadHandling/MVMCoreLoadHandler.m index 629f1ab..3e5ae1f 100644 --- a/MVMCore/MVMCore/LoadHandling/MVMCoreLoadHandler.m +++ b/MVMCore/MVMCore/LoadHandling/MVMCoreLoadHandler.m @@ -114,7 +114,7 @@ error.nativeDrivenErrorScreen = YES; error.silentError = NO; error.messageToDisplay = error.messageToDisplay ?: [MVMCoreGetterUtility hardcodedStringWithKey:HardcodedErrorUnableToProcess]; - error.identifier = loadObject.identifier; + error.requestId = loadObject.identifier; //To track for errors due to invalid JSON or any errors thrown at viewcontroller level. } return error; } diff --git a/MVMCore/MVMCore/LoadHandling/MVMCoreLoadObject.m b/MVMCore/MVMCore/LoadHandling/MVMCoreLoadObject.m index 25240c4..3be1428 100644 --- a/MVMCore/MVMCore/LoadHandling/MVMCoreLoadObject.m +++ b/MVMCore/MVMCore/LoadHandling/MVMCoreLoadObject.m @@ -55,6 +55,9 @@ if (errorObject.messageToDisplay) { [responseInfo setObject:errorObject.messageToDisplay forKey:KeyUserMessage]; } + if (errorObject.requestId) { + self.identifier = errorObject.requestId; + } self.responseInfoMap = responseInfo; } return self; diff --git a/MVMCore/MVMCore/LoadHandling/MVMCoreLoadRequestOperation.m b/MVMCore/MVMCore/LoadHandling/MVMCoreLoadRequestOperation.m index b3cedf5..6c6873e 100644 --- a/MVMCore/MVMCore/LoadHandling/MVMCoreLoadRequestOperation.m +++ b/MVMCore/MVMCore/LoadHandling/MVMCoreLoadRequestOperation.m @@ -156,7 +156,7 @@ MVMCoreRequestParameters *requestForMissingData = [MVMCoreLoadRequestOperation createRequestForDataWithLoadObject:loadObject]; if (!requestForMissingData) { - [[MVMCoreLoggingHandler sharedLoggingHandler] logPageLoadCompleteFor:loadObject.requestParameters.pageType serverProcessingTime:@"0" requestURL:loadObject.requestParameters.URL.absoluteString requestUUID:loadObject.identifier isFromCache:loadObject.pageDataFromCache]; + [[MVMCoreLoggingHandler sharedLoggingHandler] logPageLoadCompleteFor:loadObject.requestParameters.pageType serverProcessingTime:@"0" requestURL:loadObject.requestParameters.URL.absoluteString requestUUID:loadObject.identifier isFromCache:loadObject.pageDataFromCache correlationId: nil]; // We have all the needed data, continue with the load. [MVMCoreLoadRequestOperation handleLoadObject:loadObject error:nil]; @@ -170,9 +170,10 @@ [MVMCoreLoadRequestOperation sendRequest:requestForMissingData loadObject:loadObject completionHandler:^(NSDictionary * _Nullable json) { NSString *serverProcessTime = [(NSDictionary *)json objectChainOfKeysOrIndexes:@[@"ResponseInfo", @"timeStamp"]] ?: @"0"; + NSString *correlationId = [(NSDictionary *)json objectChainOfKeysOrIndexes:@[@"ResponseInfo", @"correlationId"]]; if(!self.backgroundLoad && loadObject.requestParameters.pageType && serverProcessTime) { - [[MVMCoreLoggingHandler sharedLoggingHandler] logPageLoadCompleteFor:loadObject.requestParameters.pageType serverProcessingTime:serverProcessTime requestURL:loadObject.requestParameters.URL.absoluteString requestUUID:loadObject.identifier isFromCache:loadObject.pageDataFromCache]; + [[MVMCoreLoggingHandler sharedLoggingHandler] logPageLoadCompleteFor:loadObject.requestParameters.pageType serverProcessingTime:serverProcessTime requestURL:loadObject.requestParameters.URL.absoluteString requestUUID:loadObject.identifier isFromCache:loadObject.pageDataFromCache correlationId:correlationId]; } // Process the data retrieved from the server. @@ -309,11 +310,9 @@ // Error json not correct format. MVMCoreErrorObject *errorObject = [[MVMCoreLoadHandler sharedGlobal] errorForLoadObject:loadObject withTitle:[MVMCoreGetterUtility hardcodedStringWithKey:HardcodedErrorTitle] message:[MVMCoreGetterUtility hardcodedStringWithKey:HardcodedErrorCritical] code:ErrorCodeJSONNotDictionary domain:ErrorDomainSystem]; - errorObject.identifier = loadObject.identifier; [MVMCoreLoadRequestOperation loadAbortedWithError:errorObject loadObject:loadObject]; } } else { - error.identifier = loadObject.identifier; // Error with the request/response [[MVMCoreLoadHandler sharedGlobal] attachLoadInformation:loadObject toError:error]; [MVMCoreLoadRequestOperation loadAbortedWithError:error loadObject:loadObject]; diff --git a/MVMCore/MVMCore/LoadHandling/MVMCoreRequestParameters.h b/MVMCore/MVMCore/LoadHandling/MVMCoreRequestParameters.h index a2ca9bf..28d7f2d 100644 --- a/MVMCore/MVMCore/LoadHandling/MVMCoreRequestParameters.h +++ b/MVMCore/MVMCore/LoadHandling/MVMCoreRequestParameters.h @@ -101,6 +101,9 @@ typedef NS_ENUM(NSInteger, MFLoadStyle) { /// A flag for if it should be a background request or not. @property (assign, nonatomic) BOOL backgroundRequest; +//Unique Identifier for event tracking +@property (nullable, strong, nonatomic) NSString *identifier; + // Creates an object with the given page type and extra parameters. Adds the extra parameters to the standard request parameters. Will add any modules needed by the page type by default. - (nullable instancetype)initWithPageType:(nonnull NSString *)pageType extraParameters:(nullable NSDictionary *)extraParameters; diff --git a/MVMCore/MVMCore/OtherHandlers/MVMCoreEvent.swift b/MVMCore/MVMCore/OtherHandlers/MVMCoreEvent.swift index 3c1d0dd..c95158e 100644 --- a/MVMCore/MVMCore/OtherHandlers/MVMCoreEvent.swift +++ b/MVMCore/MVMCore/OtherHandlers/MVMCoreEvent.swift @@ -98,7 +98,8 @@ public enum MVMCoreEvent { requestUUID: String, serverProcessingTime: String, requestURL: String, - isFromCache: Bool + isFromCache: Bool, + correlationId: String? ) case pageProcessingComplete( @@ -170,8 +171,8 @@ extension MVMCoreLoggingHandler { logCoreEvent(.pageLoadStarted(pageType: pageType, requestUUID: requestUUID, requestURL: requestURL)) } - @objc func logPageLoadComplete(for pageType: String, serverProcessingTime: String, requestURL: String, requestUUID: String, isFromCache: Bool) { - logCoreEvent(.pageLoadComplete(pageType: pageType, requestUUID: requestUUID, serverProcessingTime: serverProcessingTime, requestURL: requestURL, isFromCache: isFromCache)) + @objc func logPageLoadComplete(for pageType: String, serverProcessingTime: String, requestURL: String, requestUUID: String, isFromCache: Bool, correlationId: String?) { + logCoreEvent(.pageLoadComplete(pageType: pageType, requestUUID: requestUUID, serverProcessingTime: serverProcessingTime, requestURL: requestURL, isFromCache: isFromCache, correlationId: correlationId)) } @objc func logPageProcessingComplete(for pageType: String, requestUUID: String, webUrl: String?) { diff --git a/MVMCore/MVMCore/Utility/MVMCoreErrorObject.h b/MVMCore/MVMCore/Utility/MVMCoreErrorObject.h index c717855..465dc44 100644 --- a/MVMCore/MVMCore/Utility/MVMCoreErrorObject.h +++ b/MVMCore/MVMCore/Utility/MVMCoreErrorObject.h @@ -28,9 +28,6 @@ @property (nonatomic, assign) NSInteger httpStatusCode; @property (nullable, strong, nonatomic) NSDictionary *serverResponseInfo; -//Unique Identifier for event tracking -@property (nonatomic, nonatomic, nonnull) NSString *identifier; - // For the crash log. @property (nullable, strong, nonatomic) NSDictionary *crashLog;