From d2ca6e54d29d417a96e95e6494e87af65bd1918d Mon Sep 17 00:00:00 2001 From: Daniel Arantes Loverde Date: Fri, 15 Aug 2025 10:57:14 -0300 Subject: [PATCH] Improvements --- Sources/LCEssentials/Classes/LCECrypto.swift | 41 +++++++++++++++++++ .../Classes/LCEssentials+API.swift | 21 +++++++--- 2 files changed, 57 insertions(+), 5 deletions(-) create mode 100644 Sources/LCEssentials/Classes/LCECrypto.swift diff --git a/Sources/LCEssentials/Classes/LCECrypto.swift b/Sources/LCEssentials/Classes/LCECrypto.swift new file mode 100644 index 0000000..6da2d03 --- /dev/null +++ b/Sources/LCEssentials/Classes/LCECrypto.swift @@ -0,0 +1,41 @@ +// +// Copyright (c) 2025 Loverde Co. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + + +import Foundation +import LCECryptoKit + +public final class LCECrypto { + + private let hashKey: String + + init(privateKey: String){ + self.hashKey = privateKey + } + + func encodeOTP(email: String, password: String) -> String? { + return LCECryptoKit.encodeSeed(email: email, password: password, hashKey: self.hashKey) + } + + func decodeOTP(_ otpHash: String) -> Bool { + LCECryptoKit.decodeSeed(otpKey: otpHash, hashKey: self.hashKey) + } +} diff --git a/Sources/LCEssentials/Classes/LCEssentials+API.swift b/Sources/LCEssentials/Classes/LCEssentials+API.swift index 88bf744..9600007 100644 --- a/Sources/LCEssentials/Classes/LCEssentials+API.swift +++ b/Sources/LCEssentials/Classes/LCEssentials+API.swift @@ -129,15 +129,26 @@ public struct API { // Add the file let fileName = fileURL.lastPathComponent let mimeType = mimeTypeForPath(path: fileName) + printInfo(title: "Body size before", msg: "\(body.count) bytes") + + let fileData: Data + do { + fileData = try Data(contentsOf: fileURL) + printInfo(title: "Body size after", msg: "\(body.count) bytes") + } catch { + printError(title: "Upload File", msg: error.localizedDescription) + throw error + } + do { - let fileData = try Data(contentsOf: fileURL) body.append("--\(boundary)\r\n".data(using: .utf8)!) body.append("Content-Disposition: form-data; name=\"file\"; filename=\"\(fileName)\"\r\n".data(using: .utf8)!) body.append("Content-Type: \(mimeType)\r\n\r\n".data(using: .utf8)!) - body.append(fileData) - body.append("\r\n".data(using: .utf8)!) - } catch { - printError(title: "Upload File", msg: error.localizedDescription) + let fileDataCopy = Data(fileData) + body.append(fileDataCopy) + let dataUTF8 = "\r\n".data(using: .utf8)! + body.append(dataUTF8) + printInfo(title: "Body size after", msg: "\(body.count) bytes") } // Finalize the request body