nomasystems / nclient

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Removing Parameters associated type from the Endpoint protocol

d4nielrve opened this issue · comments

Endpoint protocol includes an associated type named Parameters but I don't understand what this type contributes in this case, I mean, we can define an endpoint as a struct which implements Endpoint protocol like:

private struct MockEndpointWithParameters: Endpoint {

    let name: String
    let age: Int

     ...
 }

so you will instantiate the endpoint like

let endpoint = MockEndpointWithParameters(name: "Daniel", age: 20)

we could remove the function where Parameters are being used and just include a couple of properties to the protocol:

public protocol Endpoint {
    associatedtype RequestBody = Empty
    associatedtype ResponseBody = Empty
    associatedtype Auth: _EndpointAuth = EndpointAuth.None

    /// The HTTP method of the endpoint.
    var method: HTTP.Method { get }

    var path: String { get }

    var queryItems: [URLQueryItem] { get }

    /// Serializes the request body into the given URLRequest.
    func serializeBody(_ body: RequestBody, into request: inout URLRequest) throws

    /// Deserializes the response body from the received data.
    func deserializeBody(_ data: Data) throws -> ResponseBody
}

and then we could even remove the corresponding parameters param from the request method.

Solved in #8