block-employee-directory-in.../EmployeeDirectory/Services/EmployeeService.swift
Matt Bruce 5d8285935f added CaseIterable
Signed-off-by: Matt Bruce <mbrucedogs@gmail.com>
2025-01-20 18:26:00 -06:00

38 lines
1.1 KiB
Swift

//
// 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)
}
}