// // EmployeeService.swift // EmployeeDirectory // // Created by Matt Bruce on 1/20/25. // import Foundation /// These are the testing URL Endpoints for different states public enum EmployeeServiceMode: String, CaseIterable { case production case malformed case empty public var endpoint: String { switch self { case .production: return "https://s3.amazonaws.com/sq-mobile-interview/employees.json" case .malformed: return "https://s3.amazonaws.com/sq-mobile-interview/employees_malformed.json" case .empty: return "https://s3.amazonaws.com/sq-mobile-interview/employees_empty.json" } } } /// Service Layer for Employees public class EmployeeService: EmployeeServiceProtocol { public init() {} /// Service to get Employees /// - Returns: Array of Employee Structs public func getEmployees(_ serviceMode: EmployeeServiceMode = .production) async throws -> Employees { return try await NetworkService.shared.fetchData(from: serviceMode.endpoint, as: Employees.self) } }