Compare commits

...

7 Commits

Author SHA1 Message Date
Christoph Hagen
6f4988ecd0 Move back to stable dependency 2022-08-04 22:10:44 +02:00
Christoph Hagen
4d18e331b6 Bump iOS version 2022-08-03 20:57:53 +02:00
Christoph Hagen
39ef55f342 Prepare for new dependencies 2022-06-30 18:58:10 +02:00
Christoph Hagen
75d1772d0e Improve availability check 2022-06-22 08:41:01 +02:00
Christoph Hagen
e8c7147e2f Fix Linux networking 2022-06-09 16:27:37 +02:00
Christoph Hagen
9654da1d4f Attempt fix 2022-06-09 16:11:29 +02:00
Christoph Hagen
8fd1148cbd Reduce platform requirements 2022-06-09 16:00:21 +02:00
2 changed files with 35 additions and 2 deletions

View File

@ -1,4 +1,4 @@
// swift-tools-version: 5.5
// swift-tools-version: 5.6
import PackageDescription

View File

@ -145,8 +145,12 @@ public final class PushClient {
var request = URLRequest(url: server.appendingPathComponent(route.rawValue))
request.httpBody = bodyData
request.httpMethod = "POST"
return await post(request)
}
private func post(_ request: URLRequest) async -> Data? {
do {
let (data, response) = try await URLSession.shared.data(for: request)
let (data, response) : (Data, URLResponse) = try await data(for: request)
guard let httpResponse = response as? HTTPURLResponse else {
return nil
}
@ -161,8 +165,37 @@ public final class PushClient {
}
}
private func data(for request: URLRequest) async throws -> (Data, URLResponse) {
#if !canImport(FoundationNetworking)
if #available(iOS 15.0, macOS 12.0, *) {
return try await URLSession.shared.data(for: request)
}
#endif
return try await URLSession.shared.dataRequest(request)
}
private func hash(_ masterKey: String) -> Data {
Data(SHA256.hash(data: masterKey.data(using: .utf8)!))
}
}
private extension URLSession {
func dataRequest(_ request: URLRequest) async throws -> (Data, URLResponse) {
try await withCheckedThrowingContinuation { continuation in
dataTask(with: request) { data, response, error in
if let error = error {
print("Failed with error: \(error)")
continuation.resume(throwing: error)
return
}
guard let data = data, let response = response else {
continuation.resume(throwing: URLError(.unknown))
return
}
continuation.resume(returning: (data, response))
}.resume()
}
}
}