diff --git a/Sources/Communications/Protocols/Client.swift b/Sources/Communications/Protocols/Client.swift new file mode 100644 index 0000000..738bf8e --- /dev/null +++ b/Sources/Communications/Protocols/Client.swift @@ -0,0 +1,24 @@ +// +// Client.swift +// Communications +// +// Created by Javier Cicchelli on 10/04/2023. +// Copyright © 2023 Röck+Cöde. All rights reserved. +// + +/// This protocol defines a client that will be making the remote calls. +public protocol Client { + + // MARK: Functions + + /// Makes a request to a remote location based on a given endpoint and expects to return a response casted as a given model type. + /// - Parameters: + /// - endpoint: The endpoint for which to make a remote call. + /// - model: The model to cast an expected response from the remote location. + /// - Returns: A casted model instance created out of a response retrieved from a call to a remote endpoint. + func request( + endpoint: some Endpoint, + as model: Model.Type + ) async throws -> Model + +}