1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- //
- // KMHTTP+OEM.swift
- // PDF Reader Pro
- //
- // Created by User-Tangchao on 2024/10/24.
- //
- import Foundation
- import CommonCrypto
- // MARK: - OEM
- let kURLAPI_oemRegister = "/pdf/register"
- let kURLAPI_oemLogin = "/pdf/login"
- let kURLAPI_oemGetProductData = "/pdf/get_product_data"
- let kURLAPI_oemGetPermissions = "/pdf/get_permissions"
- let kURLAPI_oemLogout = "/pdf/logout"
- let kURLAPI_oemBind = "/pdf/bind"
- enum KMHttpReponseCode: Int {
- case none = 0
- case passwordChanged = 405
- case accountAtOtherDeviceLogin = 402
- }
- extension KMHTTP {
- public class func OEM_POST(urlString: String, parameter: [String : Any]?, headers: [String : String]?, callback:@escaping ((Bool, KMRequestResultModel?, String?)->Void)) {
- let timeStamp = String(format: "%.0f", Date().timeIntervalSince1970)
- var randomStr = "100000000"
- let random = arc4random()
- if random > 0 {
- randomStr = String(format: "%ld", random)
- }
-
- let secret = "puN3du01bFtumyu2L"
-
- let string = timeStamp + randomStr + secret
- let encrypt = self.sha1(str: string)
- var signature = self.md5(encrypt).uppercased()
-
- let theUrl = kOEMBaseUrl + urlString + "?" + "timeStamp=" + timeStamp + "&" + "randomStr=" + randomStr + "&" + "signature=" + signature
-
- let boundary = "Boundary-\(UUID().uuidString)"
- var theHeaders = ["Device-Type" : "mac", "Content-Type" : "multipart/form-data; boundary=\(boundary)"]
- for (key, value) in headers ?? [:] {
- theHeaders.updateValue(value, forKey: key)
- }
- KMHTTP.POST(urlString: theUrl, parameter: parameter, headers: theHeaders, callback: callback)
- }
-
- class func md5(_ input: String) -> String {
- let messageData = input.data(using: .utf8)!
- var digestData = Data(count: Int(CC_MD5_DIGEST_LENGTH))
-
- _ = digestData.withUnsafeMutableBytes { digestBytes -> UnsafeMutablePointer<UInt8>? in
- messageData.withUnsafeBytes { messageBytes -> UnsafeMutablePointer<UInt8>? in
- CC_MD5(messageBytes.baseAddress, CC_LONG(messageData.count), digestBytes.bindMemory(to: UInt8.self).baseAddress)
- }
- }
-
- return digestData.map { String(format: "%02x", $0) }.joined()
- }
-
- class func sha1(str: String) -> String {
- let data = str.data(using: .utf8)
- var digest = [uint8](repeating: 0, count: Int(CC_SHA1_DIGEST_LENGTH))
-
- let newData = NSData.init(data: data!)
- CC_SHA1(newData.bytes, CC_LONG(data?.count ?? 0), &digest)
- let output = NSMutableString(capacity: Int(CC_SHA1_DIGEST_LENGTH))
- for byte in digest {
- output.appendFormat("%02x", byte)
- }
- return output as String
- }
- }
|