diff --git a/EmployeeDirectory/Services/EmployeeService.swift b/EmployeeDirectory/Services/EmployeeService.swift index 102345c..a2fbee7 100644 --- a/EmployeeDirectory/Services/EmployeeService.swift +++ b/EmployeeDirectory/Services/EmployeeService.swift @@ -43,4 +43,24 @@ public class EmployeeService: EmployeeServiceProtocol { } } +public class Networkservice { + public static let shared = Networkservice() + + public init(){} + + public func fetch(endpoint: String, type: T.Type) async throws -> T { + guard let url = URL(string: endpoint) else { + throw URLError(.badURL) + } + + let (data, response) = try await URLSession.shared.data(from: url) + + guard let httpResponse = response as? HTTPURLResponse, + 200..<300 ~= httpResponse.statusCode else { + throw URLError(.badServerResponse) + } + + return try JSONDecoder().decode(T.self, from: data) + } +}