// // Helper.swift // DDVerifier // // Created by Erhan Hangül on 10.06.2023. // import UIKit public class KYXHelper { public static func getImageAsset(assetName asset: String) -> UIImage? { let bundle = Bundle(for: KnowYourX.self) if #available(iOS 13.0, *) { return UIImage(named: asset, in: bundle, with: nil) } else { return UIImage(named: asset, in: bundle, compatibleWith: nil) } } public static func createUserAgent() -> String { let appName = Bundle(for: KnowYourX.self).infoDictionary?["CFBundleName"] as? String ?? "UnknownApp" let appVersion = Bundle(for: KnowYourX.self).infoDictionary?["CFBundleShortVersionString"] as? String ?? "UnknownVersion" let deviceInfo = getDeviceModel() let systemVersion = ProcessInfo.processInfo.operatingSystemVersion let osVersion = "\(systemVersion.majorVersion).\(systemVersion.minorVersion).\(systemVersion.patchVersion)" let userAgent = "\(appName) SDK Version: \(appVersion); Device Model: \(deviceInfo); Device OS Version: \(osVersion);" return userAgent } public static func getDeviceModel() -> String { var systemInfo = utsname() uname(&systemInfo) let machineMirror = Mirror(reflecting: systemInfo.machine) let identifier = machineMirror.children.reduce("") { identifier, element in guard let value = element.value as? Int8, value != 0 else { return identifier } return identifier + String(UnicodeScalar(UInt8(value))) } switch identifier { case "iPhone1,1": return "iPhone" case "iPhone1,2": return "iPhone 3G" case "iPhone2,1": return "iPhone 3GS" case "iPhone3,1", "iPhone3,2", "iPhone3,3": return "iPhone 4" case "iPhone4,1": return "iPhone 4S" case "iPhone5,1", "iPhone5,2": return "iPhone 5 (GSM)" case "iPhone5,3", "iPhone5,4": return "iPhone 5C" case "iPhone6,1", "iPhone6,2": return "iPhone 5S" case "iPhone7,1": return "iPhone 6 Plus" case "iPhone7,2": return "iPhone 6" case "iPhone8,1": return "iPhone 6s" case "iPhone8,2": return "iPhone 6s Plus" case "iPhone8,4": return "iPhone SE (1st generation)" case "iPhone9,1", "iPhone9,3": return "iPhone 7" case "iPhone9,2", "iPhone9,4": return "iPhone 7 Plus" case "iPhone10,1", "iPhone10,4": return "iPhone 8" case "iPhone10,2", "iPhone10,5": return "iPhone 8 Plus" case "iPhone10,3", "iPhone10,6": return "iPhone X Global" case "iPhone11,2": return "iPhone XS" case "iPhone11,4", "iPhone11,6": return "iPhone XS Max Global" case "iPhone11,8": return "iPhone XR" case "iPhone12,1": return "iPhone 11" case "iPhone12,3": return "iPhone 11 Pro" case "iPhone12,5": return "iPhone 11 Pro Max" case "iPhone12,8": return "iPhone SE 2nd Gen" case "iPhone13,1": return "iPhone 12 Mini" case "iPhone13,2": return "iPhone 12" case "iPhone13,3": return "iPhone 12 Pro" case "iPhone13,4": return "iPhone 12 Pro Max" case "iPhone14,2": return "iPhone 13 Pro" case "iPhone14,3": return "iPhone 13 Pro Max" case "iPhone14,4": return "iPhone 13 Mini" case "iPhone14,5": return "iPhone 13" case "iPhone14,6": return "iPhone SE 3rd Gen" case "iPhone14,7": return "iPhone 14" case "iPhone14,8": return "iPhone 14 Plus" case "iPhone15,2": return "iPhone 14 Pro" case "iPhone15,3": return "iPhone 14 Pro Max" default: return "Unknown" } } } extension String { func hexToUIColor() -> UIColor? { var formattedString = self.trimmingCharacters(in: .whitespacesAndNewlines).uppercased() if formattedString.hasPrefix("#") { formattedString.remove(at: formattedString.startIndex) } guard formattedString.count == 6 else { return nil } var rgbValue: UInt64 = 0 Scanner(string: formattedString).scanHexInt64(&rgbValue) let red = CGFloat((rgbValue & 0xFF0000) >> 16) / 255.0 let green = CGFloat((rgbValue & 0x00FF00) >> 8) / 255.0 let blue = CGFloat(rgbValue & 0x0000FF) / 255.0 return UIColor(red: red, green: green, blue: blue, alpha: 1.0) } public static func dateFormatterSeperate(String wholeString: String) -> String { let char = "." let resultArray = wholeString.components(separatedBy: char) let one : String = resultArray[0] let two: String = resultArray[1] let three: String = resultArray[2] let newFormat = three+"-"+two+"-"+one return newFormat } func toDate(dateFormat: String! = "yyMMdd") -> Date { let dateFormatter = DateFormatter() dateFormatter.dateFormat = dateFormat return dateFormatter.date(from: self)! } }