From dc25bd490df98b71151472ce7123a5bc55c87d2d Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Mon, 20 Jan 2025 17:39:52 -0600 Subject: [PATCH] updated to select endpoint Signed-off-by: Matt Bruce --- .../Protocols/EmployeeServiceProtocol.swift | 2 +- .../Services/EmployeeService.swift | 24 +++++++++++++++---- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/EmployeeDirectory/Protocols/EmployeeServiceProtocol.swift b/EmployeeDirectory/Protocols/EmployeeServiceProtocol.swift index 03c31d2..4cbe15d 100644 --- a/EmployeeDirectory/Protocols/EmployeeServiceProtocol.swift +++ b/EmployeeDirectory/Protocols/EmployeeServiceProtocol.swift @@ -6,5 +6,5 @@ // public protocol EmployeeServiceProtocol { - func getEmployees() async throws -> [Employee] + func getEmployees(_ serviceMode: EmployeeServiceMode) async throws -> Employees } diff --git a/EmployeeDirectory/Services/EmployeeService.swift b/EmployeeDirectory/Services/EmployeeService.swift index 4a1c7c4..9970dcf 100644 --- a/EmployeeDirectory/Services/EmployeeService.swift +++ b/EmployeeDirectory/Services/EmployeeService.swift @@ -6,14 +6,30 @@ // import Foundation +/// These are the testing URL Endpoints for different states +public enum EmployeeServiceMode { + 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 { /// Service to get Employees /// - Returns: Array of Employee Structs - public func getEmployees() async throws -> [Employee] { - let endpoint = "https://s3.amazonaws.com/sq-mobile-interview/employees.json" - let employees: Employees = try await NetworkService.shared.fetchData(from: endpoint, as: Employees.self) - return employees.employees + public func getEmployees(_ serviceMode: EmployeeServiceMode = .production) async throws -> Employees { + return try await NetworkService.shared.fetchData(from: serviceMode.endpoint, as: Employees.self) } }