From 7809f80ae84cc168d55d99523b2acb3f6cdacc36 Mon Sep 17 00:00:00 2001 From: Dariusz Rybicki <dariusz@elixxir.io> Date: Mon, 15 Aug 2022 15:11:31 +0100 Subject: [PATCH] Add SendReport functor --- Sources/ReportingFeature/SendReport.swift | 41 +++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 Sources/ReportingFeature/SendReport.swift diff --git a/Sources/ReportingFeature/SendReport.swift b/Sources/ReportingFeature/SendReport.swift new file mode 100644 index 00000000..1ffcf99c --- /dev/null +++ b/Sources/ReportingFeature/SendReport.swift @@ -0,0 +1,41 @@ +import Foundation +import XCTestDynamicOverlay + +public struct SendReport { + public typealias Completion = (Result<Void, Error>) -> Void + + public var run: (Report, @escaping Completion) -> Void + + public func callAsFunction(_ report: Report, completion: @escaping Completion) { + run(report, completion) + } +} + +extension SendReport { + public static let live = SendReport { report, completion in + let url = URL(string: "https://3.74.237.181:11420/report")! + var request = URLRequest(url: url) + request.httpMethod = "POST" + do { + request.httpBody = try JSONEncoder().encode(report) + } catch { + completion(.failure(error)) + return + } + let session = URLSession(configuration: .default) + let task = session.dataTask(with: request) { data, response, error in + if let error = error { + completion(.failure(error)) + return + } + completion(.success(())) + } + task.resume() + } +} + +extension SendReport { + public static let unimplemented = SendReport( + run: XCTUnimplemented("\(Self.self)") + ) +} -- GitLab