Merge branch 'develop' of gitlab.verizon.com:BPHV_MIPS/mvm_core into develop
This commit is contained in:
commit
8c883b0816
@ -40,6 +40,9 @@
|
|||||||
// Creates a request object with the given parameters.
|
// Creates a request object with the given parameters.
|
||||||
- (nullable NSURLRequest *)requestWithParameters:(nonnull MVMCoreRequestParameters *)requestParameters error:(MVMCoreErrorObject *_Nonnull *_Nonnull)error;
|
- (nullable NSURLRequest *)requestWithParameters:(nonnull MVMCoreRequestParameters *)requestParameters error:(MVMCoreErrorObject *_Nonnull *_Nonnull)error;
|
||||||
|
|
||||||
|
// Converts the core request parameters into the JSON body.
|
||||||
|
- (nullable NSData *)convertToJSON:(nonnull MVMCoreRequestParameters *)requestParameters forUrl:(nonnull NSURL *)url error:(MVMCoreErrorObject *_Nullable *_Nullable)error;
|
||||||
|
|
||||||
// Sends a given request to the server. When it is finished, it calls request finished, passing along the json object or nil if there is an error.
|
// Sends a given request to the server. When it is finished, it calls request finished, passing along the json object or nil if there is an error.
|
||||||
- (nullable NSURLSessionTask *)sendRequest:(nonnull MVMCoreRequestParameters *)requestParameters locationForError:(nonnull NSString *)locationForError requestFinished:(nullable void (^)(id _Nullable jsonObject, MVMCoreErrorObject * _Nullable error))requestFinished;
|
- (nullable NSURLSessionTask *)sendRequest:(nonnull MVMCoreRequestParameters *)requestParameters locationForError:(nonnull NSString *)locationForError requestFinished:(nullable void (^)(id _Nullable jsonObject, MVMCoreErrorObject * _Nullable error))requestFinished;
|
||||||
|
|
||||||
|
|||||||
@ -154,37 +154,13 @@
|
|||||||
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:timeOutInterval];
|
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:timeOutInterval];
|
||||||
[self setHeadersForRequest:request requestParameters:requestParameters];
|
[self setHeadersForRequest:request requestParameters:requestParameters];
|
||||||
|
|
||||||
NSMutableDictionary *parameters = [NSMutableDictionary dictionary];
|
MVMCoreErrorObject *jsonError;
|
||||||
|
NSData *jsonData = [self convertToJSON:requestParameters forUrl:url error:&jsonError];
|
||||||
// Sets up the Initial parameters.
|
if (!jsonData) {
|
||||||
if (requestParameters.addInitialRequestParameters) {
|
*error = jsonError;
|
||||||
NSDictionary *initialParameters = [[MVMCoreSessionObject sharedGlobal] getInitialParametersExcludingSections:requestParameters.excludedInitialParameters];
|
|
||||||
if (initialParameters) {
|
|
||||||
[parameters setObject:initialParameters forKey:@"InitialParams"];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Adds request specific parameters
|
|
||||||
if (requestParameters.parameters.count) {
|
|
||||||
[parameters setObject:requestParameters.parameters forKey:@"RequestParams"];
|
|
||||||
}
|
|
||||||
|
|
||||||
// Ensure the parameters are valid json.
|
|
||||||
if (![NSJSONSerialization isValidJSONObject:parameters]) {
|
|
||||||
*error = [[MVMCoreErrorObject alloc] initWithTitle:nil message:[MVMCoreGetterUtility hardcodedStringWithKey:HardcodedErrorUnableToProcess] code:ErrorCodeParsingJSON domain:ErrorDomainNative location:[NSString stringWithFormat:@"requestWithParameters:pageType_%@:parameters_%@",requestParameters.pageType,parameters.description]];
|
|
||||||
return nil;
|
return nil;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Logs the request parameters.
|
|
||||||
NSError *jsonError = nil;
|
|
||||||
NSData *data = [NSJSONSerialization dataWithJSONObject:parameters options:NSJSONWritingPrettyPrinted error:&jsonError];
|
|
||||||
if (!data) {
|
|
||||||
*error = [[MVMCoreErrorObject alloc] initWithTitle:nil message:[MVMCoreGetterUtility hardcodedStringWithKey:HardcodedErrorUnableToProcess] messageToLog:jsonError.localizedDescription code:jsonError.code domain:ErrorDomainSystem location:[NSString stringWithFormat:@"requestWithParameters:pageType_%@:parameters_%@",requestParameters.pageType,parameters.description]];
|
|
||||||
return nil;
|
|
||||||
}
|
|
||||||
NSString *jsonString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
|
|
||||||
MVMCoreLog(@"Request Parameters for URL %@:\n%@",[request.URL absoluteString], jsonString);
|
|
||||||
|
|
||||||
//adding Free Bee header
|
//adding Free Bee header
|
||||||
if ([[MFFreebeeHandler sharedHandler] isFreeBeeEnabled]
|
if ([[MFFreebeeHandler sharedHandler] isFreeBeeEnabled]
|
||||||
&& [[MFFreebeeHandler sharedHandler] isValidCampaign]) {
|
&& [[MFFreebeeHandler sharedHandler] isValidCampaign]) {
|
||||||
@ -205,7 +181,10 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
NSError *bodyError;
|
NSError *bodyError;
|
||||||
NSData *body = [self createBodyForRequestUsingParameters:parameters requestParameters:requestParameters error:&bodyError];
|
NSData *body = jsonData;
|
||||||
|
if (requestParameters.imageData) {
|
||||||
|
body = [self createMultipartFormBodyForRequestJsonData:jsonData imageData:requestParameters.imageData error:&bodyError];
|
||||||
|
}
|
||||||
if (body) {
|
if (body) {
|
||||||
[request setHTTPBody:body];
|
[request setHTTPBody:body];
|
||||||
} else {
|
} else {
|
||||||
@ -244,40 +223,74 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
- (NSData *)createBodyForRequestUsingParameters:(NSDictionary *)parameters requestParameters:(MVMCoreRequestParameters *)requestParameters error:(NSError **)error {
|
- (nullable NSData *)convertToJSON:(nonnull MVMCoreRequestParameters *)requestParameters forUrl:(nonnull NSURL *)url error:(MVMCoreErrorObject *_Nullable *_Nullable)error {
|
||||||
|
NSMutableDictionary *parameters = [NSMutableDictionary dictionary];
|
||||||
|
|
||||||
|
// Sets up the Initial parameters.
|
||||||
|
if (requestParameters.addInitialRequestParameters) {
|
||||||
|
NSDictionary *initialParameters = [[MVMCoreSessionObject sharedGlobal] getInitialParametersExcludingSections:requestParameters.excludedInitialParameters];
|
||||||
|
if (initialParameters) {
|
||||||
|
[parameters setObject:initialParameters forKey:@"InitialParams"];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Adds request specific parameters
|
||||||
|
if (requestParameters.parameters.count) {
|
||||||
|
[parameters setObject:requestParameters.parameters forKey:@"RequestParams"];
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ensure the parameters are valid json.
|
||||||
|
if (![NSJSONSerialization isValidJSONObject:parameters]) {
|
||||||
|
if (error) {
|
||||||
|
*error = [[MVMCoreErrorObject alloc] initWithTitle:nil message:[MVMCoreGetterUtility hardcodedStringWithKey:HardcodedErrorUnableToProcess] code:ErrorCodeParsingJSON domain:ErrorDomainNative location:[NSString stringWithFormat:@"requestWithParameters:pageType_%@:parameters_%@",requestParameters.pageType,parameters.description]];
|
||||||
|
}
|
||||||
|
return nil;
|
||||||
|
}
|
||||||
|
|
||||||
|
NSError *jsonError = nil;
|
||||||
|
NSData *data = nil;
|
||||||
|
#if DEBUG
|
||||||
|
// Pretty print for logging the request parameters.
|
||||||
|
data = [NSJSONSerialization dataWithJSONObject:parameters options:NSJSONWritingPrettyPrinted error:&jsonError];
|
||||||
|
if (!data) {
|
||||||
|
if (error) {
|
||||||
|
*error = [[MVMCoreErrorObject alloc] initWithTitle:nil message:[MVMCoreGetterUtility hardcodedStringWithKey:HardcodedErrorUnableToProcess] messageToLog:jsonError.localizedDescription code:jsonError.code domain:ErrorDomainSystem location:[NSString stringWithFormat:@"requestWithParameters:pageType_%@:parameters_%@",requestParameters.pageType,parameters.description]];
|
||||||
|
}
|
||||||
|
return nil;
|
||||||
|
}
|
||||||
|
NSString *jsonString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
|
||||||
|
MVMCoreLog(@"Request Parameters for URL %@:\n%@", [url absoluteString], jsonString);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Standard condensed to send to the server.
|
||||||
|
data = [NSJSONSerialization dataWithJSONObject:parameters options:0 error:&jsonError];
|
||||||
|
if (!data) {
|
||||||
|
if (error) {
|
||||||
|
*error = [[MVMCoreErrorObject alloc] initWithTitle:nil message:[MVMCoreGetterUtility hardcodedStringWithKey:HardcodedErrorUnableToProcess] messageToLog:jsonError.localizedDescription code:jsonError.code domain:ErrorDomainSystem location:[NSString stringWithFormat:@"requestWithParameters:pageType_%@:parameters_%@",requestParameters.pageType,parameters.description]];
|
||||||
|
}
|
||||||
|
return nil;
|
||||||
|
}
|
||||||
|
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (nonnull NSData *)createMultipartFormBodyForRequestJsonData:(nonnull NSData *)jsonData imageData:(nonnull NSData *)imageData error:(NSError *_Nullable *_Nullable)error {
|
||||||
|
|
||||||
NSMutableData *body = [[NSMutableData alloc] init];
|
NSMutableData *body = [[NSMutableData alloc] init];
|
||||||
|
|
||||||
if (requestParameters.imageData) {
|
NSString *boundary = [self boundaryForMultipartRequest];
|
||||||
|
[body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
|
||||||
NSData *imageData = requestParameters.imageData;
|
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"%@\"\r\n", @"mfRequest"] dataUsingEncoding:NSUTF8StringEncoding]];
|
||||||
NSString *boundary = [self boundaryForMultipartRequest];
|
[body appendData:[@"Content-Type: application/json\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
|
||||||
[body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
|
[body appendData:jsonData];
|
||||||
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"%@\"\r\n", @"mfRequest"] dataUsingEncoding:NSUTF8StringEncoding]];
|
[body appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
|
||||||
[body appendData:[@"Content-Type: application/json\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
|
[body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
|
||||||
|
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"file\"; filename=\"profileImage.png\"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
|
||||||
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:parameters options:0 error:error];
|
[body appendData:[@"Content-Type: image/png\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
|
||||||
if (jsonData) {
|
[body appendData:[@"Content-Transfer-Encoding: base64\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
|
||||||
[body appendData:jsonData];
|
[body appendData:imageData];
|
||||||
} else {
|
[body appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
|
||||||
return nil;
|
[body appendData:[[NSString stringWithFormat:@"--%@--", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
|
||||||
}
|
|
||||||
[body appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
|
|
||||||
[body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
|
|
||||||
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"file\"; filename=\"profileImage.png\"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
|
|
||||||
[body appendData:[@"Content-Type: image/png\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
|
|
||||||
[body appendData:[@"Content-Transfer-Encoding: base64\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
|
|
||||||
[body appendData:imageData];
|
|
||||||
[body appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
|
|
||||||
[body appendData:[[NSString stringWithFormat:@"--%@--", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
|
|
||||||
} else {
|
|
||||||
NSData *data = [NSJSONSerialization dataWithJSONObject:parameters options:0 error:error];
|
|
||||||
if (data) {
|
|
||||||
[body appendData:data];
|
|
||||||
} else {
|
|
||||||
return nil;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return body;
|
return body;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -69,6 +69,7 @@
|
|||||||
self.actionMap = actionMap;
|
self.actionMap = actionMap;
|
||||||
self.customTimeoutTime = [actionMap optionalNumberForKey:@"customTimeoutTime"];
|
self.customTimeoutTime = [actionMap optionalNumberForKey:@"customTimeoutTime"];
|
||||||
self.openSupportPanel = [actionMap boolForKey:KeyOpenSupport];
|
self.openSupportPanel = [actionMap boolForKey:KeyOpenSupport];
|
||||||
|
self.backgroundRequest = [actionMap boolForKey:@"background"];
|
||||||
|
|
||||||
// Right now server is sending default.... can't uncomment this until they remove default
|
// Right now server is sending default.... can't uncomment this until they remove default
|
||||||
//self.replaceViewIfOnStackElseLoadWithStyle = [actionMap boolForKey:@"tryToReplaceFirst"];
|
//self.replaceViewIfOnStackElseLoadWithStyle = [actionMap boolForKey:@"tryToReplaceFirst"];
|
||||||
|
|||||||
@ -19,16 +19,18 @@
|
|||||||
public var analyticsData: JSONValueDictionary?
|
public var analyticsData: JSONValueDictionary?
|
||||||
public var presentationStyle: String?
|
public var presentationStyle: String?
|
||||||
public var tabBarIndex: Int?
|
public var tabBarIndex: Int?
|
||||||
|
public var background: Bool?
|
||||||
|
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
// MARK: - Initialzier
|
// MARK: - Initialzier
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
|
|
||||||
public init(pageType: String, presentationStyle: String? = nil, extraParameters: JSONValueDictionary? = nil, analyticsData: JSONValueDictionary? = nil, tabBarIndex: Int? = nil) {
|
public init(pageType: String, presentationStyle: String? = nil, extraParameters: JSONValueDictionary? = nil, analyticsData: JSONValueDictionary? = nil, tabBarIndex: Int? = nil, background: Bool? = nil) {
|
||||||
self.pageType = pageType
|
self.pageType = pageType
|
||||||
self.presentationStyle = presentationStyle
|
self.presentationStyle = presentationStyle
|
||||||
self.extraParameters = extraParameters
|
self.extraParameters = extraParameters
|
||||||
self.analyticsData = analyticsData
|
self.analyticsData = analyticsData
|
||||||
self.tabBarIndex = tabBarIndex
|
self.tabBarIndex = tabBarIndex
|
||||||
|
self.background = background
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user