From d1ea9518a086624b870e81608fc21ef624b83122 Mon Sep 17 00:00:00 2001 From: Scott Pfeil Date: Mon, 25 Oct 2021 13:56:39 -0400 Subject: [PATCH 1/6] NSA launch --- MVMCore/MVMCore/Constants/MVMCoreConstants.h | 7 ------- 1 file changed, 7 deletions(-) diff --git a/MVMCore/MVMCore/Constants/MVMCoreConstants.h b/MVMCore/MVMCore/Constants/MVMCoreConstants.h index e653ffe..21148ad 100644 --- a/MVMCore/MVMCore/Constants/MVMCoreConstants.h +++ b/MVMCore/MVMCore/Constants/MVMCoreConstants.h @@ -9,13 +9,6 @@ #import #import -typedef NS_ENUM(NSInteger, MVMAppContext) { - MVMAppContextNone = 0, - MVMAppContextMF, - MVMAppContextMFPrepay, - MVMAppContextContentTransfer -}; - typedef NS_ENUM(NSInteger, NavigationType) { NavigationTypePush = 0, NavigationTypeSet, From d3bf9481fc7bfc5cd69eccb3d735773f99ed913f Mon Sep 17 00:00:00 2001 From: Scott Pfeil Date: Mon, 25 Oct 2021 17:32:18 -0400 Subject: [PATCH 2/6] change mdn calculation default errors not received from server --- MVMCore/MVMCore/Utility/MVMCoreErrorObject.m | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/MVMCore/MVMCore/Utility/MVMCoreErrorObject.m b/MVMCore/MVMCore/Utility/MVMCoreErrorObject.m index d16a7a5..d61075b 100644 --- a/MVMCore/MVMCore/Utility/MVMCoreErrorObject.m +++ b/MVMCore/MVMCore/Utility/MVMCoreErrorObject.m @@ -91,7 +91,9 @@ NSString *type = [errorInfo string:KeyType]; if (![ValueTypeSuccess isEqualToString:type]) { - MVMCoreErrorObject *error = [[MVMCoreErrorObject alloc] initWithTitle:[errorInfo stringForKey:KeyErrorHeading] message:[errorInfo stringForKey:KeyUserMessage] messageToLog:[errorInfo stringForKey:KeyMessage] code:errorCode domain:ErrorDomainServer location:location]; + NSString *title = [errorInfo string:KeyErrorHeading] ?: [MVMCoreGetterUtility hardcodedStringWithKey:HardcodedErrorTitle]; + NSString *message = [errorInfo string:KeyUserMessage] ?: [MVMCoreGetterUtility hardcodedStringWithKey:HardcodedErrorUnableToProcess]; + MVMCoreErrorObject *error = [[MVMCoreErrorObject alloc] initWithTitle:title message:message messageToLog:[errorInfo string:KeyMessage] code:errorCode domain:ErrorDomainServer location:location]; if ([ValueTypeErrorScreen isEqualToString:type]) { // If this is a server error screen, there should be no additional alerts... It will be handled by the load handler. From f2d824f829d971494ce754f7b7e07009adfcfa14 Mon Sep 17 00:00:00 2001 From: Krishna Kishore Bandaru Date: Sat, 22 Jan 2022 00:42:17 +0530 Subject: [PATCH 3/6] added helper functions --- MVMCore/MVMCore/Models/JSON/JSONHelper.swift | 43 ++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/MVMCore/MVMCore/Models/JSON/JSONHelper.swift b/MVMCore/MVMCore/Models/JSON/JSONHelper.swift index a6a61ad..5f4494f 100644 --- a/MVMCore/MVMCore/Models/JSON/JSONHelper.swift +++ b/MVMCore/MVMCore/Models/JSON/JSONHelper.swift @@ -15,4 +15,47 @@ public enum JSONError: Error { case pathNotFound case data(path: String) case other(error: Error) + case error(message: String) +} + +extension JSONDictionary { + + public func toJSONString(options: JSONSerialization.WritingOptions = []) -> String? { + guard let data = try? JSONSerialization.data(withJSONObject: self, options: options), + let string = String(data: data, encoding: .utf8) else { + return nil + } + return string + } + + public func toUrlQueryItems() throws -> [URLQueryItem] { + var queryItems: [URLQueryItem] = [] + for (key, value) in self { + var valueString: String + if let value = value as? JSONDictionary, let jsonString = value.toJSONString() { + valueString = jsonString + } else if let value = value as? [AnyHashable], let jsonString = value.toJSONString() { + valueString = jsonString + } else { + guard let baseValueString = String(describing: value.base).removingPercentEncoding else { + throw JSONError.error(message: "query item failed: \(key) value \(value.base)") + } + valueString = baseValueString + } + let queryItem = URLQueryItem(name: key, value: valueString) + queryItems.append(queryItem) + } + return queryItems + } +} + +extension Array where Element == AnyHashable { + + public func toJSONString(options: JSONSerialization.WritingOptions = []) -> String? { + guard let data = try? JSONSerialization.data(withJSONObject: self, options: options), + let string = String(data: data, encoding: .utf8) else { + return nil + } + return string + } } From 306e66a3b2c53b96cce1308337b90829faf73826 Mon Sep 17 00:00:00 2001 From: Scott Pfeil Date: Mon, 24 Jan 2022 18:14:37 -0500 Subject: [PATCH 4/6] review changes --- MVMCore/MVMCore/Models/JSON/JSONHelper.swift | 28 ++++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/MVMCore/MVMCore/Models/JSON/JSONHelper.swift b/MVMCore/MVMCore/Models/JSON/JSONHelper.swift index 5f4494f..71dc813 100644 --- a/MVMCore/MVMCore/Models/JSON/JSONHelper.swift +++ b/MVMCore/MVMCore/Models/JSON/JSONHelper.swift @@ -20,11 +20,11 @@ public enum JSONError: Error { extension JSONDictionary { - public func toJSONString(options: JSONSerialization.WritingOptions = []) -> String? { - guard let data = try? JSONSerialization.data(withJSONObject: self, options: options), - let string = String(data: data, encoding: .utf8) else { - return nil - } + public func toJSONString(options: JSONSerialization.WritingOptions = []) throws -> String { + let data = try JSONSerialization.data(withJSONObject: self, options: options) + guard let string = String(data: data, encoding: .utf8) else { + throw JSONError.error(message: "Failed to convert data to string") + } return string } @@ -32,10 +32,10 @@ extension JSONDictionary { var queryItems: [URLQueryItem] = [] for (key, value) in self { var valueString: String - if let value = value as? JSONDictionary, let jsonString = value.toJSONString() { - valueString = jsonString - } else if let value = value as? [AnyHashable], let jsonString = value.toJSONString() { - valueString = jsonString + if let value = value as? JSONDictionary { + valueString = try value.toJSONString() + } else if let value = value as? [AnyHashable] { + valueString = try value.toJSONString() } else { guard let baseValueString = String(describing: value.base).removingPercentEncoding else { throw JSONError.error(message: "query item failed: \(key) value \(value.base)") @@ -51,11 +51,11 @@ extension JSONDictionary { extension Array where Element == AnyHashable { - public func toJSONString(options: JSONSerialization.WritingOptions = []) -> String? { - guard let data = try? JSONSerialization.data(withJSONObject: self, options: options), - let string = String(data: data, encoding: .utf8) else { - return nil - } + public func toJSONString(options: JSONSerialization.WritingOptions = []) throws -> String { + let data = try JSONSerialization.data(withJSONObject: self, options: options) + guard let string = String(data: data, encoding: .utf8) else { + throw JSONError.error(message: "Failed to convert data to string") + } return string } } From 40c365829a597e585b14b69e96fcae4f5f02f130 Mon Sep 17 00:00:00 2001 From: Scott Pfeil Date: Mon, 24 Jan 2022 18:51:05 -0500 Subject: [PATCH 5/6] JSONARRAY fix --- MVMCore/MVMCore/Models/JSON/JSONHelper.swift | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/MVMCore/MVMCore/Models/JSON/JSONHelper.swift b/MVMCore/MVMCore/Models/JSON/JSONHelper.swift index 71dc813..a0c20d0 100644 --- a/MVMCore/MVMCore/Models/JSON/JSONHelper.swift +++ b/MVMCore/MVMCore/Models/JSON/JSONHelper.swift @@ -8,7 +8,7 @@ import Foundation -public typealias JSONArray = [[String: Any]] +public typealias JSONArray = [AnyHashable] public typealias JSONDictionary = [String: AnyHashable] public enum JSONError: Error { @@ -34,7 +34,7 @@ extension JSONDictionary { var valueString: String if let value = value as? JSONDictionary { valueString = try value.toJSONString() - } else if let value = value as? [AnyHashable] { + } else if let value = value as? JSONArray { valueString = try value.toJSONString() } else { guard let baseValueString = String(describing: value.base).removingPercentEncoding else { @@ -49,7 +49,7 @@ extension JSONDictionary { } } -extension Array where Element == AnyHashable { +extension JSONArray { public func toJSONString(options: JSONSerialization.WritingOptions = []) throws -> String { let data = try JSONSerialization.data(withJSONObject: self, options: options) From 3e06f6ee44dd22f5d819e60849496cecc86e001b Mon Sep 17 00:00:00 2001 From: "Bruce, Matt R" Date: Tue, 15 Feb 2022 16:11:33 +0000 Subject: [PATCH 6/6] TrialFraud extension additions --- MVMCore/MVMCore/Models/Extensions/Encoder.swift | 9 +++++++++ MVMCore/MVMCore/Models/JSON/JSONValue.swift | 7 +++++++ 2 files changed, 16 insertions(+) diff --git a/MVMCore/MVMCore/Models/Extensions/Encoder.swift b/MVMCore/MVMCore/Models/Extensions/Encoder.swift index db9c762..9f50bc3 100644 --- a/MVMCore/MVMCore/Models/Extensions/Encoder.swift +++ b/MVMCore/MVMCore/Models/Extensions/Encoder.swift @@ -25,6 +25,15 @@ extension Encodable { return (try? JSONSerialization.jsonObject(with: data, options: .allowFragments)).flatMap { $0 as? JSONDictionary } } + public func toJSONAny() throws -> [String: Any] { + let data = try self.encode() + let json = try JSONSerialization.jsonObject(with: data, options: .allowFragments) + guard let jsonAny = json as? [String: Any] else { + throw JSONError.error(message: "JSON Dictionary not found") + } + return jsonAny + } + public func toJSONString() -> String? { guard let json = self.toJSON(), let data = try? JSONSerialization.data(withJSONObject: json, options: .prettyPrinted), diff --git a/MVMCore/MVMCore/Models/JSON/JSONValue.swift b/MVMCore/MVMCore/Models/JSON/JSONValue.swift index 43796cb..333fc91 100644 --- a/MVMCore/MVMCore/Models/JSON/JSONValue.swift +++ b/MVMCore/MVMCore/Models/JSON/JSONValue.swift @@ -119,6 +119,13 @@ extension Dictionary where Key == String, Value == Any { } } +extension Dictionary where Key == String, Value == AnyHashable { + public func toJSONValue() throws -> [String: JSONValue] { + let data = try JSONSerialization.data(withJSONObject: self, options: .prettyPrinted) + return try JSONDecoder().decode([String:JSONValue].self, from: data) + } +} + extension Dictionary where Key == String, Value == JSONValue { public func toJSONObject() throws -> JSONDictionary { let encoded = try JSONEncoder().encode(self)