From 36a7f0064f96f5dfb2dbd49d25555dfc9bbe2e7d Mon Sep 17 00:00:00 2001 From: "Jimmy W. Hough Jr" Date: Wed, 25 Dec 2024 17:12:14 -0600 Subject: [PATCH 01/14] expose modify to try and add quth headers to a request built elsewhere --- Sources/Request/Request/Request.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sources/Request/Request/Request.swift b/Sources/Request/Request/Request.swift index 867b41a..5bbea70 100644 --- a/Sources/Request/Request/Request.swift +++ b/Sources/Request/Request/Request.swift @@ -61,7 +61,7 @@ public struct AnyRequest where ResponseType: Decodable { self.rootParam = rootParam } - internal func modify(_ modify: (inout Self) -> Void) -> Self { + public func modify(_ modify: (inout Self) -> Void) -> Self { var mutableSelf = self modify(&mutableSelf) return mutableSelf From 3ec057b2d3c8a413971ddf372295a6f92785f3a1 Mon Sep 17 00:00:00 2001 From: "Jimmy W. Hough Jr" Date: Wed, 25 Dec 2024 17:34:49 -0600 Subject: [PATCH 02/14] wip exposed rootparam --- Sources/Request/Request/Request.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sources/Request/Request/Request.swift b/Sources/Request/Request/Request.swift index 5bbea70..d5b1807 100644 --- a/Sources/Request/Request/Request.swift +++ b/Sources/Request/Request/Request.swift @@ -43,7 +43,7 @@ public typealias Request = AnyRequest public struct AnyRequest where ResponseType: Decodable { public let combineIdentifier = CombineIdentifier() - private var rootParam: RequestParam + public var rootParam: RequestParam internal var onData: ((Data) -> Void)? internal var onString: ((String) -> Void)? From 0917e0b5bafc6d531f1451e6a4b50e87ceee319c Mon Sep 17 00:00:00 2001 From: "Jimmy W. Hough Jr" Date: Wed, 25 Dec 2024 17:49:29 -0600 Subject: [PATCH 03/14] so close yet so far wtf --- Sources/Request/Request/Request.swift | 4 ++++ .../Request/Request/RequestParams/CombinedParams.swift | 8 ++++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/Sources/Request/Request/Request.swift b/Sources/Request/Request/Request.swift index d5b1807..a80d460 100644 --- a/Sources/Request/Request/Request.swift +++ b/Sources/Request/Request/Request.swift @@ -97,6 +97,10 @@ public struct AnyRequest where ResponseType: Decodable { modify { $0.onStatusCode = callback } } + public func withAuthorization(_ authorization: Auth) -> Self { + self + } + /// Performs the `Request`, and calls the `onData`, `onString`, `onJson`, and `onError` callbacks when appropriate. public func call() { buildPublisher() diff --git a/Sources/Request/Request/RequestParams/CombinedParams.swift b/Sources/Request/Request/RequestParams/CombinedParams.swift index 0e0ad40..039f344 100644 --- a/Sources/Request/Request/RequestParams/CombinedParams.swift +++ b/Sources/Request/Request/RequestParams/CombinedParams.swift @@ -7,14 +7,14 @@ import Foundation -internal struct CombinedParams: RequestParam, SessionParam { - fileprivate let children: [RequestParam] +public struct CombinedParams: RequestParam, SessionParam { + public let children: [RequestParam] init(children: [RequestParam]) { self.children = children } - func buildParam(_ request: inout URLRequest) { + public func buildParam(_ request: inout URLRequest) { children .sorted { a, _ in (a is Url) } .filter { !($0 is SessionParam) || $0 is CombinedParams } @@ -23,7 +23,7 @@ internal struct CombinedParams: RequestParam, SessionParam { } } - func buildConfiguration(_ configuration: URLSessionConfiguration) { + public func buildConfiguration(_ configuration: URLSessionConfiguration) { children .compactMap { $0 as? SessionParam } .forEach { From 7cd7cfcfbf3c3efb396d91662374a965acdb0b10 Mon Sep 17 00:00:00 2001 From: "Jimmy W. Hough Jr" Date: Wed, 25 Dec 2024 17:55:31 -0600 Subject: [PATCH 04/14] fucking insane --- Sources/Request/Request/Request.swift | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Sources/Request/Request/Request.swift b/Sources/Request/Request/Request.swift index a80d460..4618251 100644 --- a/Sources/Request/Request/Request.swift +++ b/Sources/Request/Request/Request.swift @@ -61,7 +61,7 @@ public struct AnyRequest where ResponseType: Decodable { self.rootParam = rootParam } - public func modify(_ modify: (inout Self) -> Void) -> Self { + internal func modify(_ modify: (inout Self) -> Void) -> Self { var mutableSelf = self modify(&mutableSelf) return mutableSelf @@ -97,8 +97,9 @@ public struct AnyRequest where ResponseType: Decodable { modify { $0.onStatusCode = callback } } - public func withAuthorization(_ authorization: Auth) -> Self { - self + public mutating func withAuthorization(_ authorization: Auth) -> Self { + self.rootParam = CombinedParams(children: [Header.Authorization(authorization)]) + return self } /// Performs the `Request`, and calls the `onData`, `onString`, `onJson`, and `onError` callbacks when appropriate. From 86053d4d0049c47f03f64e10cdb444515b8be362 Mon Sep 17 00:00:00 2001 From: "Jimmy W. Hough Jr" Date: Wed, 25 Dec 2024 18:03:35 -0600 Subject: [PATCH 05/14] not a function huh --- Sources/Request/Request/Request.swift | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Sources/Request/Request/Request.swift b/Sources/Request/Request/Request.swift index 4618251..2f29013 100644 --- a/Sources/Request/Request/Request.swift +++ b/Sources/Request/Request/Request.swift @@ -43,7 +43,7 @@ public typealias Request = AnyRequest public struct AnyRequest where ResponseType: Decodable { public let combineIdentifier = CombineIdentifier() - public var rootParam: RequestParam + internal var rootParam: RequestParam internal var onData: ((Data) -> Void)? internal var onString: ((String) -> Void)? @@ -98,7 +98,8 @@ public struct AnyRequest where ResponseType: Decodable { } public mutating func withAuthorization(_ authorization: Auth) -> Self { - self.rootParam = CombinedParams(children: [Header.Authorization(authorization)]) + self.rootParam = CombinedParams(children: [Header.Authorization(authorization), + rootParam]) return self } From ad86705dcfe8db08a2c75c0850aba76c77e8a05f Mon Sep 17 00:00:00 2001 From: "Jimmy W. Hough Jr" Date: Wed, 25 Dec 2024 18:10:03 -0600 Subject: [PATCH 06/14] commented the method that was added. --- Sources/Request/Request/Request.swift | 1 + 1 file changed, 1 insertion(+) diff --git a/Sources/Request/Request/Request.swift b/Sources/Request/Request/Request.swift index 2f29013..38c6265 100644 --- a/Sources/Request/Request/Request.swift +++ b/Sources/Request/Request/Request.swift @@ -97,6 +97,7 @@ public struct AnyRequest where ResponseType: Decodable { modify { $0.onStatusCode = callback } } + /// Modifies self to contain the procided Auth struct in its headers public mutating func withAuthorization(_ authorization: Auth) -> Self { self.rootParam = CombinedParams(children: [Header.Authorization(authorization), rootParam]) From 07740fce7e83d4752a2ab9486d9a5f812cae4ae0 Mon Sep 17 00:00:00 2001 From: "Jimmy W. Hough Jr" Date: Sat, 28 Dec 2024 06:48:18 -0600 Subject: [PATCH 07/14] different logging --- Sources/Request/Request/Request.swift | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/Sources/Request/Request/Request.swift b/Sources/Request/Request/Request.swift index 38c6265..fb9f619 100644 --- a/Sources/Request/Request/Request.swift +++ b/Sources/Request/Request/Request.swift @@ -155,5 +155,21 @@ extension AnyRequest: Equatable { let rhsSession = rhs.buildSession() return lhsSession.configuration == rhsSession.configuration && lhsSession.request == rhsSession.request } + + public func prettyJson() -> String { + + + let session = self.buildSession() + let request = session.request + let conf = session.configuration + return """ + \(request.httpMethod) \(request.url?.absoluteString ?? "") + Headers: \(request.allHTTPHeaderFields) + Body: \(request.httpBody) + Config: \(conf) + """ + + } + } From ff43cdfed56b6a8112a62e931dfd1d12ef72f442 Mon Sep 17 00:00:00 2001 From: "Jimmy W. Hough Jr" Date: Sat, 28 Dec 2024 06:51:43 -0600 Subject: [PATCH 08/14] wip logging --- Sources/Request/Request/Request.swift | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/Sources/Request/Request/Request.swift b/Sources/Request/Request/Request.swift index fb9f619..97e0305 100644 --- a/Sources/Request/Request/Request.swift +++ b/Sources/Request/Request/Request.swift @@ -155,10 +155,11 @@ extension AnyRequest: Equatable { let rhsSession = rhs.buildSession() return lhsSession.configuration == rhsSession.configuration && lhsSession.request == rhsSession.request } - +} + +extension AnyRequest { public func prettyJson() -> String { - - + let session = self.buildSession() let request = session.request let conf = session.configuration @@ -170,6 +171,4 @@ extension AnyRequest: Equatable { """ } - } - From 1a586373f8affdf73c5f652c72d6bebcb711a0cb Mon Sep 17 00:00:00 2001 From: "Jimmy W. Hough Jr" Date: Sat, 28 Dec 2024 06:56:40 -0600 Subject: [PATCH 09/14] wip logging --- Sources/Request/Request/Request.swift | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/Sources/Request/Request/Request.swift b/Sources/Request/Request/Request.swift index 97e0305..d329df6 100644 --- a/Sources/Request/Request/Request.swift +++ b/Sources/Request/Request/Request.swift @@ -165,10 +165,30 @@ extension AnyRequest { let conf = session.configuration return """ \(request.httpMethod) \(request.url?.absoluteString ?? "") - Headers: \(request.allHTTPHeaderFields) - Body: \(request.httpBody) + Headers: \(Json(request.allHTTPHeaderFields).stringified ?? "") + Body: \(request.httpBody?.prettyJSON() ?? "") Config: \(conf) """ } } + +extension Data { + func toString() -> String { + return String(data:self, encoding: .utf8) ?? "" + } + func prettyJSON() -> String { + do { + let json = try JSONSerialization.jsonObject(with: self, options: []) + let data = try JSONSerialization.data(withJSONObject: json, options: .prettyPrinted) + guard let jsonString = String(data: data, encoding: .utf8) else { + print("Inavlid data") + return "" + } + return jsonString + } catch { + print("Data+prettyJSON | Error: \(error.localizedDescription)") + } + return "" + } +} From 8485f393ddf89e86576fe70fcec4807ae9fda52a Mon Sep 17 00:00:00 2001 From: "Jimmy W. Hough Jr" Date: Sun, 29 Dec 2024 05:25:51 -0600 Subject: [PATCH 10/14] different logging --- Sources/Request/Request/Request.swift | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/Sources/Request/Request/Request.swift b/Sources/Request/Request/Request.swift index d329df6..f4c714f 100644 --- a/Sources/Request/Request/Request.swift +++ b/Sources/Request/Request/Request.swift @@ -159,15 +159,24 @@ extension AnyRequest: Equatable { extension AnyRequest { public func prettyJson() -> String { - - let session = self.buildSession() - let request = session.request - let conf = session.configuration + + let session = self.buildSession() + let request = session.request + let conf = session.configuration + + guard let method = request.httpMethod, + let url = request.url, + let headers = request.allHTTPHeaderFields, + let jh = Json(headers).stringified, + let body = request.httpBody + else { return ""} + return """ - \(request.httpMethod) \(request.url?.absoluteString ?? "") - Headers: \(Json(request.allHTTPHeaderFields).stringified ?? "") - Body: \(request.httpBody?.prettyJSON() ?? "") - Config: \(conf) + \(method.uppercased()) \(url) + Headers: \(jh) + __________________________________ + Body: \(body.prettyJSON()) + ___________________________________ """ } From 55d736b006d294173d3fbc6443c97f35cfc98e6d Mon Sep 17 00:00:00 2001 From: "Jimmy W. Hough Jr" Date: Sun, 29 Dec 2024 05:56:47 -0600 Subject: [PATCH 11/14] added Identifiable to AnyRequest --- Sources/Request/Request/Request.swift | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Sources/Request/Request/Request.swift b/Sources/Request/Request/Request.swift index f4c714f..5bffdcb 100644 --- a/Sources/Request/Request/Request.swift +++ b/Sources/Request/Request/Request.swift @@ -149,6 +149,12 @@ public struct AnyRequest where ResponseType: Decodable { } } +extension AnyRequest: Identifiable { + public var id: String { + buildSession().request.url!.absoluteString + } +} + extension AnyRequest: Equatable { public static func == (lhs: AnyRequest, rhs: AnyRequest) -> Bool { let lhsSession = lhs.buildSession() From 8c7358bd3c20a7c068303ae86ab998fad653687c Mon Sep 17 00:00:00 2001 From: "Jimmy W. Hough Jr" Date: Sun, 29 Dec 2024 14:32:02 -0600 Subject: [PATCH 12/14] fixed guard let so requests without bodies are still prettyJSONed --- Sources/Request/Request/Request.swift | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/Sources/Request/Request/Request.swift b/Sources/Request/Request/Request.swift index 5bffdcb..f66a265 100644 --- a/Sources/Request/Request/Request.swift +++ b/Sources/Request/Request/Request.swift @@ -168,15 +168,14 @@ extension AnyRequest { let session = self.buildSession() let request = session.request - let conf = session.configuration guard let method = request.httpMethod, let url = request.url, let headers = request.allHTTPHeaderFields, - let jh = Json(headers).stringified, - let body = request.httpBody - else { return ""} - + let jh = Json(headers).stringified + else { return " "} + let body = request.httpBody ?? Data() + return """ \(method.uppercased()) \(url) Headers: \(jh) From d8120aedbc505fa7dd37c303e279a8fe615023db Mon Sep 17 00:00:00 2001 From: "Jimmy W. Hough Jr" Date: Sun, 29 Dec 2024 14:35:34 -0600 Subject: [PATCH 13/14] denote end of request more cleanly labeled Endpoint section --- Sources/Request/Request/Request.swift | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Sources/Request/Request/Request.swift b/Sources/Request/Request/Request.swift index f66a265..2cee375 100644 --- a/Sources/Request/Request/Request.swift +++ b/Sources/Request/Request/Request.swift @@ -177,11 +177,13 @@ extension AnyRequest { let body = request.httpBody ?? Data() return """ - \(method.uppercased()) \(url) + Endpoint: \(method.uppercased()) \(url) + __________________________________ Headers: \(jh) __________________________________ Body: \(body.prettyJSON()) ___________________________________ + End Of Request. """ } From a848e3b0b0800c823f7027dbfaba65462baac8ca Mon Sep 17 00:00:00 2001 From: "Jimmy W. Hough Jr" Date: Sun, 29 Dec 2024 14:39:48 -0600 Subject: [PATCH 14/14] different logging --- Sources/Request/Request/Request.swift | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Sources/Request/Request/Request.swift b/Sources/Request/Request/Request.swift index 2cee375..a33dcd5 100644 --- a/Sources/Request/Request/Request.swift +++ b/Sources/Request/Request/Request.swift @@ -166,17 +166,17 @@ extension AnyRequest: Equatable { extension AnyRequest { public func prettyJson() -> String { - let session = self.buildSession() - let request = session.request - - guard let method = request.httpMethod, - let url = request.url, - let headers = request.allHTTPHeaderFields, - let jh = Json(headers).stringified - else { return " "} + let session = self.buildSession() + let request = session.request + let method = request.httpMethod ?? "WTF" + let url = request.url?.absoluteString ?? "" + let headers = request.allHTTPHeaderFields let body = request.httpBody ?? Data() + let jh = Json(headers ?? [:]).stringified ?? "No Headers" return """ + Beginning of Request. + ---------------------------------- Endpoint: \(method.uppercased()) \(url) __________________________________ Headers: \(jh)