parent
fb4a63d10b
commit
f8e0d98acf
|
|
@ -1,6 +1,5 @@
|
||||||
import Foundation
|
import Foundation
|
||||||
import Moya
|
import Moya
|
||||||
import CommonCrypto
|
|
||||||
|
|
||||||
/// JiaMiKey 的 MD5,预计算避免每次请求都算
|
/// JiaMiKey 的 MD5,预计算避免每次请求都算
|
||||||
private let jiaMiKeyMD5: String = {
|
private let jiaMiKeyMD5: String = {
|
||||||
|
|
@ -73,10 +72,6 @@ final class SignPlugin: PluginType {
|
||||||
}
|
}
|
||||||
|
|
||||||
fileprivate static func md5(_ string: String) -> String {
|
fileprivate static func md5(_ string: String) -> String {
|
||||||
let cStr = string.cString(using: .utf8)
|
string.md5
|
||||||
let length = CC_LONG(strlen(cStr!))
|
|
||||||
var digest = [UInt8](repeating: 0, count: Int(CC_MD5_DIGEST_LENGTH))
|
|
||||||
CC_MD5(cStr, length, &digest)
|
|
||||||
return digest.map { String(format: "%02x", $0) }.joined()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@
|
||||||
import Foundation
|
import Foundation
|
||||||
import SwiftyJSON
|
import SwiftyJSON
|
||||||
import CommonCrypto
|
import CommonCrypto
|
||||||
|
import CryptoKit
|
||||||
import URLNavigator
|
import URLNavigator
|
||||||
import SwiftDate
|
import SwiftDate
|
||||||
|
|
||||||
|
|
@ -53,29 +54,7 @@ public extension String {
|
||||||
|
|
||||||
// MARK: md5
|
// MARK: md5
|
||||||
public extension String {
|
public extension String {
|
||||||
var MD5String: String {
|
var MD5String: String { md5 }
|
||||||
|
|
||||||
let cStrl = cString(using: String.Encoding(rawValue: String.Encoding.utf8.rawValue));
|
|
||||||
|
|
||||||
let buffer = UnsafeMutablePointer<UInt8>.allocate(capacity: 16);
|
|
||||||
|
|
||||||
CC_MD5(cStrl, CC_LONG(strlen(cStrl!)), buffer);
|
|
||||||
|
|
||||||
var md5String = "";
|
|
||||||
|
|
||||||
for idx in 0...15 {
|
|
||||||
|
|
||||||
let obcStrl = String.init(format: "%02x", buffer[idx]);
|
|
||||||
|
|
||||||
md5String.append(obcStrl);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
free(buffer);
|
|
||||||
|
|
||||||
return md5String;
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
// MARK: Base64
|
// MARK: Base64
|
||||||
|
|
||||||
|
|
@ -93,13 +72,7 @@ public extension String {
|
||||||
|
|
||||||
|
|
||||||
public extension String {
|
public extension String {
|
||||||
var md5: String {
|
var md5: String { data.md5Hex }
|
||||||
let data = self.data
|
|
||||||
var digest = [UInt8](repeating: 0, count: Int(CC_MD5_DIGEST_LENGTH))
|
|
||||||
CC_MD5((data as NSData).bytes, CC_LONG(data.count), &digest)
|
|
||||||
let hexBytes = digest.map { String(format: "%02hhx", $0) }
|
|
||||||
return hexBytes.joined(separator: "")
|
|
||||||
}
|
|
||||||
|
|
||||||
var sha1: String {
|
var sha1: String {
|
||||||
let data = self.data
|
let data = self.data
|
||||||
|
|
@ -216,6 +189,10 @@ public extension Data {
|
||||||
var string: String {
|
var string: String {
|
||||||
return String(data: self, encoding: String.Encoding.utf8) ?? ""
|
return String(data: self, encoding: String.Encoding.utf8) ?? ""
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var md5Hex: String {
|
||||||
|
Insecure.MD5.hash(data: self).map { String(format: "%02x", $0) }.joined()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// MARK: - Int
|
// MARK: - Int
|
||||||
|
|
|
||||||
|
|
@ -257,17 +257,7 @@ extension ApiManager {
|
||||||
}
|
}
|
||||||
|
|
||||||
class func getMd5_32Bit_String(_ srcString: String, isUppercase: Bool) -> String {
|
class func getMd5_32Bit_String(_ srcString: String, isUppercase: Bool) -> String {
|
||||||
let cStr = srcString.cString(using: .utf8)
|
let result = srcString.md5
|
||||||
let length = CC_LONG(strlen(cStr!))
|
|
||||||
var digest = [UInt8](repeating: 0, count: Int(CC_MD5_DIGEST_LENGTH))
|
|
||||||
|
|
||||||
CC_MD5(cStr, length, &digest)
|
|
||||||
|
|
||||||
var result = ""
|
|
||||||
for i in 0..<Int(CC_MD5_DIGEST_LENGTH) {
|
|
||||||
result += String(format: "%02x", digest[i])
|
|
||||||
}
|
|
||||||
|
|
||||||
return isUppercase ? result.uppercased() : result
|
return isUppercase ? result.uppercased() : result
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -32,9 +32,6 @@ enum LoadingStatus: Int {
|
||||||
|
|
||||||
enum ScriptMessageName: String, CaseIterable {
|
enum ScriptMessageName: String, CaseIterable {
|
||||||
case updateStatusBarStyle
|
case updateStatusBarStyle
|
||||||
case openPageRouter
|
|
||||||
case openPage
|
|
||||||
case openWebView
|
|
||||||
case openIM
|
case openIM
|
||||||
case toast
|
case toast
|
||||||
case dialog
|
case dialog
|
||||||
|
|
@ -515,13 +512,6 @@ class FullscreenWebView: WKWebView {
|
||||||
|
|
||||||
// MARK: Native to JS
|
// MARK: Native to JS
|
||||||
|
|
||||||
// 页面路由
|
|
||||||
func openPageRouter(body: Any) {
|
|
||||||
guard let body = body as? [String: Any],
|
|
||||||
let url = body["url"] as? String else { return }
|
|
||||||
AppRouter.push(url)
|
|
||||||
}
|
|
||||||
|
|
||||||
// 页面显示
|
// 页面显示
|
||||||
func onPageShow() {
|
func onPageShow() {
|
||||||
webView.evaluateJavaScript("try { window.onPageShow(); } catch (e) {}", completionHandler: nil)
|
webView.evaluateJavaScript("try { window.onPageShow(); } catch (e) {}", completionHandler: nil)
|
||||||
|
|
@ -535,16 +525,6 @@ class FullscreenWebView: WKWebView {
|
||||||
setNeedsStatusBarAppearanceUpdate()
|
setNeedsStatusBarAppearanceUpdate()
|
||||||
}
|
}
|
||||||
|
|
||||||
// MARK: - 打开原生页面(无参数)
|
|
||||||
func openPage(body: Any) {
|
|
||||||
guard let body = body as? [String: Any],
|
|
||||||
let pageName = body["pageName"] as? String else { return }
|
|
||||||
if let class_VC = NSClassFromString("QuickLocation.\(pageName)") as? BaseViewController.Type {
|
|
||||||
let vc = class_VC.init()
|
|
||||||
navigationController?.pushViewController(vc, animated: true)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// MARK: - 打开WebView
|
// MARK: - 打开WebView
|
||||||
func openWebView(body: Any) {
|
func openWebView(body: Any) {
|
||||||
guard let body = body as? [String: Any],
|
guard let body = body as? [String: Any],
|
||||||
|
|
@ -695,10 +675,6 @@ private class CommonMessageHandler: NSObject, WKScriptMessageHandler {
|
||||||
switch message.name {
|
switch message.name {
|
||||||
case "updateStatusBarStyle":
|
case "updateStatusBarStyle":
|
||||||
webViewController?.updateStatusBarStyle(body: message.body)
|
webViewController?.updateStatusBarStyle(body: message.body)
|
||||||
case "openPageRouter":
|
|
||||||
webViewController?.openPageRouter(body: message.body)
|
|
||||||
case "openPage":
|
|
||||||
webViewController?.openPage(body: message.body)
|
|
||||||
case "dialog":
|
case "dialog":
|
||||||
webViewController?.dialog(body: message.body)
|
webViewController?.dialog(body: message.body)
|
||||||
case "toast":
|
case "toast":
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,6 @@
|
||||||
import Foundation
|
import Foundation
|
||||||
import RxSwift
|
import RxSwift
|
||||||
import SwiftyJSON
|
import SwiftyJSON
|
||||||
import CommonCrypto
|
|
||||||
|
|
||||||
enum UploadFileKind {
|
enum UploadFileKind {
|
||||||
case jpeg
|
case jpeg
|
||||||
|
|
@ -203,15 +202,11 @@ struct UploadService {
|
||||||
}
|
}
|
||||||
|
|
||||||
private static func md5(_ string: String) -> String {
|
private static func md5(_ string: String) -> String {
|
||||||
md5(Data(string.utf8))
|
string.md5
|
||||||
}
|
}
|
||||||
|
|
||||||
private static func md5(_ data: Data) -> String {
|
private static func md5(_ data: Data) -> String {
|
||||||
var digest = [UInt8](repeating: 0, count: Int(CC_MD5_DIGEST_LENGTH))
|
data.md5Hex
|
||||||
data.withUnsafeBytes { buffer in
|
|
||||||
_ = CC_MD5(buffer.baseAddress, CC_LONG(data.count), &digest)
|
|
||||||
}
|
|
||||||
return digest.map { String(format: "%02x", $0) }.joined()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static func makeError(_ message: String) -> NSError {
|
private static func makeError(_ message: String) -> NSError {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue