// // MakeAuthorizationHeaderUseCase.swift // APIService // // Created by Javier Cicchelli on 04/12/2022. // Copyright © 2022 Röck+Cöde. All rights reserved. // import Foundation struct MakeAuthorizationHeaderUseCase { func callAsFunction( username: String, password: String ) throws -> [String: String] { guard !username.isEmpty else { throw MakeAuthorizationHeaderError.usernameIsEmpty } guard !password.isEmpty else { throw MakeAuthorizationHeaderError.passwordIsEmpty } let loginString = String(format: .Formats.usernameAndPassword, username, password) guard let loginData = loginString.data(using: .utf8) else { throw MakeAuthorizationHeaderError.loginDataNotCreated } let loginBase64 = loginData.base64EncodedString() return [.Header.Keys.authorization: String(format: .Formats.authorizationValue, loginBase64)] } } // MARK: - Errors enum MakeAuthorizationHeaderError: Error { case usernameIsEmpty case passwordIsEmpty case loginDataNotCreated } // MARK: - String+Formats private extension String { enum Formats { static let usernameAndPassword = "%@:%@" static let authorizationValue = "Basic %@" } }