瀏覽代碼

【综合】新增OEM请求管理类

wanjun 8 月之前
父節點
當前提交
75ee989f3f

+ 214 - 0
PDF Office/PDF Master/Class/AIInfo/OEM Info/KMOEMRequestServerManager.swift

@@ -0,0 +1,214 @@
+//
+//  KMOEMRequestServerManager.swift
+//  Cisdem PDFMaster
+//
+//  Created by wanjun on 2024/3/11.
+//
+
+import Cocoa
+import AFNetworking
+
+@objcMembers
+class OEMResultWrapper: NSObject {
+    var success: Bool = false
+    var data: NSDictionary = [:]
+
+    init(success: Bool, data: NSDictionary) {
+        self.success = success
+        self.data = data
+    }
+}
+
+@objc enum KMOEMRequestState : Int {
+    case register = 0   // APP序列码激活
+    case registerAI     // AI序列码激活
+    case update         // 检查更新
+    case install        // 首次安装
+}
+
+@objcMembers
+class KMOEMRequestServerManager: NSObject {
+    static let defaultManager = KMOEMRequestServerManager()
+    typealias KMRequestServerComplete = (_ wrapper: OEMResultWrapper) -> Void
+    
+    // MARK: AI Action (public)
+    
+    func oemRequest(state: KMOEMRequestState, regCode: String = "", complete: @escaping KMRequestServerComplete) {
+        if state == .register || state == .registerAI {         //注册码注册
+            oemRegister(regCode: regCode, state: state, complete: complete)
+        } else if state == .update {    // 检查更新
+            oemUpdate(complete: complete)
+        } else if state == .install {   // 首次安装
+            oemInstall(complete: complete)
+        }
+    }
+    
+    // MARK: Private
+    
+    private func uuid() -> String {
+        return GetHardwareUUID()!
+    }
+    
+    func version() -> String {
+        return "6.0.0"
+    }
+    
+    private func versionAI() -> String {
+        return "2.0.0"
+    }
+
+    /**
+     @abstract 注册码注册
+     @param regCode  注册码
+     @param complete  返回
+     */
+    private func oemRegister(regCode: String, state: KMOEMRequestState, complete: @escaping KMRequestServerComplete) {
+        var productId = 71
+        var version = version()
+        if state == .registerAI {
+            productId = 20001
+            version = versionAI()
+        }
+        let urlString = "https://www.cisdem.com/API/register_success/"
+        let params: [String: Any] = ["product_id": productId,
+                                     "device_id": uuid(),
+                                     "reg_code": regCode,
+                                     "version": version]
+        
+        KMOEMRequestServer.requestServer.oemRequest(urlString: urlString, params: params) { formData in
+            
+        } requestSerializer: { requestSerializer in
+            requestSerializer.setValue("Apifox/1.0.0 (https://www.apifox.cn)", forHTTPHeaderField: "User-Agent")
+        } completion: { task, responseObject, error in
+            if responseObject != nil {
+                let code: Int = responseObject!["code"] as? Int ?? 06005
+                let message: String = responseObject!["msg"] as? String ?? "unknown error"
+                if code == 400 {
+                    complete(OEMResultWrapper(success: true, data: ["code":code, "msg":message]))
+                } else {
+                    complete(OEMResultWrapper(success: false, data: ["code":code, "msg":message]))
+                }
+            } else {
+                complete(OEMResultWrapper(success: false, data: ["code": "06005", "msg": "unknown error"]))
+            }
+        }
+    }
+    
+    /**
+     @abstract 检测更新
+     @param complete  返回
+     */
+    private func oemUpdate(complete: @escaping KMRequestServerComplete) {
+        
+        var urlString = "https://www.Cisdem.com/API/update_information/"
+        let params: [String: Any] = ["product_id": 71,
+                                     "device_id": uuid(),
+                                     "version": version()]
+        
+        KMOEMRequestServer.requestServer.oemRequest(urlString: urlString, params: params) { formData in
+            
+        } requestSerializer: { requestSerializer in
+            requestSerializer.setValue("Apifox/1.0.0 (https://www.apifox.cn)", forHTTPHeaderField: "User-Agent")
+        } completion: { task, responseObject, error in
+            if responseObject != nil {
+                let code: Int = responseObject!["code"] as? Int ?? 06005
+                let message: String = responseObject!["msg"] as? String ?? "unknown error"
+                let version: String = responseObject!["version"] as? String ?? "0.0.0"
+                let publish_time: String = responseObject!["publish_time"] as? String ?? ""
+                let update_content: String = responseObject!["update_content"] as? String ?? ""
+                let download_url: String = responseObject!["download_url"] as? String ?? ""
+                if code == 400 {
+                    complete(OEMResultWrapper(success: true, data: ["code":code, "msg":message, "version":version]))
+                } else {
+                    complete(OEMResultWrapper(success: false, data: ["code":code, "msg":message, "version":version]))
+                }
+            } else {
+                complete(OEMResultWrapper(success: false, data: ["code": "06005", "msg": "unknown error", "version":"0.0.0"]))
+            }
+        }
+
+    }
+    
+    /**
+     @abstract 首次安装
+     @param complete  返回
+     */
+    private func oemInstall(complete: @escaping KMRequestServerComplete) {
+        
+        let urlString = "https://www.cisdem.com/API/install_success/"
+        let params: [String: Any] = ["product_id": 71,
+                                     "device_id": uuid(),
+                                     "version": version()]
+        KMOEMRequestServer.requestServer.oemRequest(urlString: urlString, params: params) { formData in
+            
+        } requestSerializer: { requestSerializer in
+            requestSerializer.setValue("Apifox/1.0.0 (https://www.apifox.cn)", forHTTPHeaderField: "User-Agent")
+        } completion: { task, responseObject, error in
+            if responseObject != nil {
+                let code: Int = responseObject!["code"] as? Int ?? 06005
+                let message: String = responseObject!["msg"] as? String ?? "unknown error"
+                if code == 400 {
+                    complete(OEMResultWrapper(success: true, data: ["code":code, "msg":message]))
+                } else {
+                    complete(OEMResultWrapper(success: false, data: ["code":code, "msg":message]))
+                }
+            } else {
+                complete(OEMResultWrapper(success: false, data: ["code": "06005", "msg": "unknown error"]))
+            }
+        }
+    }
+}
+
+typealias KMOEMHttpRequestServerComplete = (_ task: URLSessionDataTask?, _ responseObject: AnyObject?, _ error: NSError?) -> Void
+class KMOEMRequestServer {
+    var sessionManager: AFHTTPSessionManager!
+    static let requestServer = KMOEMRequestServer()
+    var task: URLSessionTask?
+    
+    init() {
+        let configuration: URLSessionConfiguration = URLSessionConfiguration.default
+        sessionManager = AFHTTPSessionManager.init(sessionConfiguration: configuration)
+        sessionManager.securityPolicy = AFSecurityPolicy.default()
+    }
+    
+    func oemRequest(urlString: String,
+                        params: Dictionary<String, Any>?,
+                          body: ((_ formData:AFMultipartFormData) -> Void)?,
+             requestSerializer: ((_ requestSerializer:AFHTTPRequestSerializer) -> Void)?,
+                    completion: KMHttpRequestServerComplete?) -> Void {
+        sessionManager.requestSerializer.setValue("multipart/form-data", forHTTPHeaderField: "Content-Type")
+        sessionManager.requestSerializer.timeoutInterval = 60
+        sessionManager.responseSerializer = AFJSONResponseSerializer()
+        sessionManager.responseSerializer.acceptableContentTypes = ["application/json","text/html","text/json","text/javascript","text/plain","image/gif"]
+        if (requestSerializer != nil) {
+            requestSerializer!(sessionManager.requestSerializer);
+        }
+        if (body != nil) {
+            self.task = sessionManager.get(urlString, parameters: params, headers: nil, progress: { progress in
+            }, success: { task, responseObject in
+                let responseObject = responseObject as AnyObject
+                if (completion != nil) {
+                    completion!(task,responseObject,nil);
+                }
+            }, failure: { task, error in
+                if (completion != nil) {
+                    completion!(task, nil, error as NSError);
+                }
+            })
+        } else {
+            self.task = sessionManager.get(urlString, parameters: params, headers: nil, progress: { progress in
+                
+            }, success: { task, responseObject in
+                if (completion != nil) {
+                    let responseObject = responseObject as AnyObject
+                    completion!(task,responseObject,nil);
+                }
+            }, failure: { task, error in
+                if (completion != nil) {
+                    completion!(task, nil, error as NSError);
+                }
+            })
+        }
+    }
+
+}

+ 14 - 2
PDF Office/PDF Reader Pro.xcodeproj/project.pbxproj

@@ -625,6 +625,7 @@
 		9F3D819629A33A290087B5AD /* KMDesignDropdown.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9F3D819229A33A290087B5AD /* KMDesignDropdown.xib */; };
 		9F3D819729A33A290087B5AD /* KMDesignDropdown.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9F3D819229A33A290087B5AD /* KMDesignDropdown.xib */; };
 		9F3D819829A33A290087B5AD /* KMDesignDropdown.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9F3D819229A33A290087B5AD /* KMDesignDropdown.xib */; };
+		9F41FD3A2C410522008A6B82 /* KMOEMRequestServerManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F41FD392C410522008A6B82 /* KMOEMRequestServerManager.swift */; };
 		9F512CC72B4640AB00EC0BC3 /* KMPageDisplayCustomThemesCollectionViewItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F512CC52B4640AB00EC0BC3 /* KMPageDisplayCustomThemesCollectionViewItem.swift */; };
 		9F512CC82B4640AB00EC0BC3 /* KMPageDisplayCustomThemesCollectionViewItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F512CC52B4640AB00EC0BC3 /* KMPageDisplayCustomThemesCollectionViewItem.swift */; };
 		9F512CC92B4640AB00EC0BC3 /* KMPageDisplayCustomThemesCollectionViewItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F512CC52B4640AB00EC0BC3 /* KMPageDisplayCustomThemesCollectionViewItem.swift */; };
@@ -5533,6 +5534,7 @@
 		9F3D818D29A22AD90087B5AD /* Date+KMExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Date+KMExtensions.swift"; sourceTree = "<group>"; };
 		9F3D819129A33A290087B5AD /* KMDesignDropdown.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMDesignDropdown.swift; sourceTree = "<group>"; };
 		9F3D819229A33A290087B5AD /* KMDesignDropdown.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMDesignDropdown.xib; sourceTree = "<group>"; };
+		9F41FD392C410522008A6B82 /* KMOEMRequestServerManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KMOEMRequestServerManager.swift; sourceTree = "<group>"; };
 		9F512CC52B4640AB00EC0BC3 /* KMPageDisplayCustomThemesCollectionViewItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMPageDisplayCustomThemesCollectionViewItem.swift; sourceTree = "<group>"; };
 		9F512CC62B4640AB00EC0BC3 /* KMPageDisplayCustomThemesCollectionViewItem.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMPageDisplayCustomThemesCollectionViewItem.xib; sourceTree = "<group>"; };
 		9F512CCD2B469A7600EC0BC3 /* KMPageDisplayThemeCollectionViewItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KMPageDisplayThemeCollectionViewItem.swift; sourceTree = "<group>"; };
@@ -8170,6 +8172,14 @@
 			path = "Tab Strip";
 			sourceTree = "<group>";
 		};
+		9F41FD382C4104F1008A6B82 /* OEM Info */ = {
+			isa = PBXGroup;
+			children = (
+				9F41FD392C410522008A6B82 /* KMOEMRequestServerManager.swift */,
+			);
+			path = "OEM Info";
+			sourceTree = "<group>";
+		};
 		9F5664842987EBE500020985 /* Recovered References */ = {
 			isa = PBXGroup;
 			children = (
@@ -10689,6 +10699,7 @@
 				BB0FE02F2B734DD1001E0F88 /* AIUserInfoController */,
 				BB93C3132B9EFC9800A926E6 /* AITranslateTipWindowController */,
 				BB0FE0322B734DD1001E0F88 /* KMAIRequestServerManager.swift */,
+				9F41FD382C4104F1008A6B82 /* OEM Info */,
 			);
 			path = AIInfo;
 			sourceTree = "<group>";
@@ -18104,6 +18115,7 @@
 				BBEC00C9295C319400A26C98 /* KMBatesManager.swift in Sources */,
 				AD88108529A719D400178CA1 /* KMRegisterView.swift in Sources */,
 				9FDD0F71294AD13C000C4DAD /* KMMainViewController+Action.swift in Sources */,
+				9F41FD3A2C410522008A6B82 /* KMOEMRequestServerManager.swift in Sources */,
 				ADF1569529A62D1D001D1018 /* KMLoginLeftImageView.swift in Sources */,
 				9F1F82E52934D5240092C4B4 /* KMHomeExtractActionViewController.swift in Sources */,
 				9FB220E12B10850400A5B208 /* KMAnnotationStampViewController.swift in Sources */,
@@ -19870,7 +19882,7 @@
 				CODE_SIGN_IDENTITY = "Apple Development";
 				CODE_SIGN_STYLE = Automatic;
 				COMBINE_HIDPI_IMAGES = YES;
-				CURRENT_PROJECT_VERSION = 1;
+				CURRENT_PROJECT_VERSION = 202407120;
 				DEFINES_MODULE = YES;
 				DEVELOPMENT_TEAM = 4GGQPGRTSV;
 				ENABLE_HARDENED_RUNTIME = YES;
@@ -20055,7 +20067,7 @@
 				CODE_SIGN_IDENTITY = "Apple Development";
 				CODE_SIGN_STYLE = Automatic;
 				COMBINE_HIDPI_IMAGES = YES;
-				CURRENT_PROJECT_VERSION = 1;
+				CURRENT_PROJECT_VERSION = 202407120;
 				DEFINES_MODULE = YES;
 				DEVELOPMENT_TEAM = 4GGQPGRTSV;
 				ENABLE_HARDENED_RUNTIME = YES;