From 6383e7b62303b56996052b64a618a25e588cdefa Mon Sep 17 00:00:00 2001
From: Dariusz Rybicki <dariusz@elixxir.io>
Date: Mon, 15 Aug 2022 15:41:37 +0100
Subject: [PATCH] Prepare for TLS

---
 Package.swift                                      |  3 +++
 Sources/ReportingFeature/Resources/report_cert.crt |  1 +
 Sources/ReportingFeature/SendReport.swift          | 13 +++++++++++--
 3 files changed, 15 insertions(+), 2 deletions(-)
 create mode 100644 Sources/ReportingFeature/Resources/report_cert.crt

diff --git a/Package.swift b/Package.swift
index 539ef5e1..d204c98f 100644
--- a/Package.swift
+++ b/Package.swift
@@ -750,6 +750,9 @@ let package = Package(
             name: "ReportingFeature",
             dependencies: [
                 .product(name: "XCTestDynamicOverlay", package: "xctest-dynamic-overlay"),
+            ],
+            resources: [
+                .process("Resources"),
             ]
         ),
     ]
diff --git a/Sources/ReportingFeature/Resources/report_cert.crt b/Sources/ReportingFeature/Resources/report_cert.crt
new file mode 100644
index 00000000..d0ec74b9
--- /dev/null
+++ b/Sources/ReportingFeature/Resources/report_cert.crt
@@ -0,0 +1 @@
+[PLACE THE CERTIFICATE CONTENT HERE]
\ No newline at end of file
diff --git a/Sources/ReportingFeature/SendReport.swift b/Sources/ReportingFeature/SendReport.swift
index 1ffcf99c..41c6f159 100644
--- a/Sources/ReportingFeature/SendReport.swift
+++ b/Sources/ReportingFeature/SendReport.swift
@@ -22,8 +22,13 @@ extension SendReport {
             completion(.failure(error))
             return
         }
-        let session = URLSession(configuration: .default)
-        let task = session.dataTask(with: request) { data, response, error in
+        let session = URLSession(
+            configuration: .default,
+            delegate: SessionDelegate(),
+            delegateQueue: nil
+        )
+        let task = session.dataTask(with: request) { _, _, error in
+            defer { session.invalidateAndCancel() }
             if let error = error {
                 completion(.failure(error))
                 return
@@ -39,3 +44,7 @@ extension SendReport {
         run: XCTUnimplemented("\(Self.self)")
     )
 }
+
+private class SessionDelegate: NSObject, URLSessionDelegate {
+    // TODO: handle TLS
+}
-- 
GitLab