EmployeeDirectory-SwiftUI/EmployeeDirectory/Services/EmployeeService.swift

47 lines
1.3 KiB
Swift

//
// EmployeeService.swift
// EmployeeDirectory
//
// Created by Matt Bruce on 3/3/25.
//
import Foundation
public class EmployeeService: EmployeeServiceProtocol {
// MARK: - Properties
public static let shared = EmployeeService() // Default shared instance
// MARK: - Initializer
public init() {}
// MARK: - Public Methods
/// This will get a list of all employees
/// - Returns: An Employees struct
public func getUsers(page: Int? = nil) async throws -> Employees {
var endpoint = "https://my.api.mockaroo.com/users.json?key=f298b840"
if let page {
endpoint += "&page=\(page)"
}
//ensure a valid URL
guard let url = URL(string: endpoint) else {
throw URLError(.badURL)
}
// Perform network request
let (data, response) = try await URLSession.shared.data(from: url)
// Validate HTTP response
guard let httpResponse = response as? HTTPURLResponse,
200..<300 ~= httpResponse.statusCode else {
throw URLError(.badServerResponse)
}
// Decode the response into the specified type
return try JSONDecoder().decode(Employees.self, from: data)
}
}