diff --git a/Package.swift b/Package.swift index 539ef5e1e908978d3500a3b5c737243b54c1c2f8..d204c98fd1fa3cddf89f47c63b914d98996f810e 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 0000000000000000000000000000000000000000..d0ec74b9e5d1296dfaea659602db0dbac7fe8d55 --- /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 1ffcf99c316e0f5b900d43685b44aeab805d1d10..41c6f159a304e184aa79b63b0ba85faf345724ed 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 +}