38 lines
1.1 KiB
Swift
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)
|
|
}
|
|
}
|