Skip to content
Snippets Groups Projects

Bindings API wrapper

Merged Dariusz Rybicki requested to merge feature/bindings-api-wrapper into main
1 file
+ 44
0
Compare changes
  • Side-by-side
  • Inline
import Bindings
public struct RestlikeRequestSender {
public var send: (Int, Int, Data) throws -> Data
public func callAsFunction(
clientId: Int,
connectionId: Int,
request: Data
) throws -> Data {
try send(clientId, connectionId, request)
}
}
extension RestlikeRequestSender {
public static func live(authenticated: Bool) -> RestlikeRequestSender {
RestlikeRequestSender { clientId, connectionId, request in
var error: NSError?
let response: Data?
if authenticated {
response = BindingsRestlikeRequestAuth(clientId, connectionId, request, &error)
} else {
response = BindingsRestlikeRequest(clientId, connectionId, request, &error)
}
if let error = error {
throw error
}
guard let response = response else {
let functionName = "BindingsRestlikeRequest\(authenticated ? "Auth" : "")"
fatalError("\(functionName) returned `nil` without providing error")
}
return response
}
}
}
#if DEBUG
extension RestlikeRequestSender {
public static let failing = RestlikeRequestSender { _, _, _ in
struct NotImplemented: Error {}
throw NotImplemented()
}
}
#endif
Loading