// // extension.swift // AIPaint // // Created by Fengyu He on 2022/12/2. // import CommonCrypto import UIKit extension String { var sha256: String { let utf8 = cString(using: .utf8) var digest = [UInt8](repeating: 0, count: Int(CC_SHA256_DIGEST_LENGTH)) CC_SHA256(utf8, CC_LONG(utf8!.count - 1), &digest) return digest.reduce("") { $0 + String(format:"%02x", $1) } } func encodeBase64() -> String { if let data = self.data(using: .utf8) { return data.base64EncodedString() } return "" } func decodeBase64() -> String? { if let data = Data(base64Encoded: self) { return String(data: data, encoding: .utf8) } return nil } } extension UIImageView { func downloadedFrom(url: URL, contentMode mode: UIView.ContentMode = .scaleAspectFit) { contentMode = mode URLSession.shared.dataTask(with: url) { data, response, error in guard let httpURLResponse = response as? HTTPURLResponse, httpURLResponse.statusCode == 200, let mimeType = response?.mimeType, mimeType.hasPrefix("image"), let data = data, error == nil, let image = UIImage(data: data) else { return } DispatchQueue.main.async() { self.image = image } }.resume() } func downloadedFrom(link: String, contentMode mode: UIView.ContentMode = .scaleAspectFit) { guard let url = URL(string: link) else { return } downloadedFrom(url: url, contentMode: mode) } }