diff --git a/Libraries/Sources/APIService/Enumerations/RequestMethod.swift b/Libraries/Sources/APIService/Enumerations/RequestMethod.swift new file mode 100644 index 0000000..49deed7 --- /dev/null +++ b/Libraries/Sources/APIService/Enumerations/RequestMethod.swift @@ -0,0 +1,15 @@ +// +// RequestMethod.swift +// APIService +// +// Created by Javier Cicchelli on 03/12/2022. +// Copyright © 2022 Röck+Cöde. All rights reserved. +// + +enum RequestMethod: String { + case delete = "DELETE" + case get = "GET" + case patch = "PATCH" + case post = "POST" + case put = "PUT" +} diff --git a/Libraries/Sources/APIService/Protocols/Endpoint.swift b/Libraries/Sources/APIService/Protocols/Endpoint.swift new file mode 100644 index 0000000..8834991 --- /dev/null +++ b/Libraries/Sources/APIService/Protocols/Endpoint.swift @@ -0,0 +1,43 @@ +// +// Endpoint.swift +// APIService +// +// Created by Javier Cicchelli on 03/12/2022. +// Copyright © 2022 Röck+Cöde. All rights reserved. +// + +protocol Endpoint { + var scheme: String { get } + var host: String { get } + var path: String { get } + var method: RequestMethod { get } + var credentials: BasicCredentials { get } + var headers: [String: String] { get } + var body: [String: String]? { get } +} + +// MARK: - Defaults + +extension Endpoint { + var scheme: String { "http" } + var host: String { "163.172.147.216:8080" } + var authorizationHeader: [String: String] { + let makeAuthHeader = MakeAuthorizationHeaderUseCase() + + do { + return try makeAuthHeader( + username: credentials.username, + password: credentials.password + ) + } catch { + return [:] + } + } +} + +// MARK: - Structs + +struct BasicCredentials { + let username: String + let password: String +}