From 12ff7b0e8a2f7d0b1414831d3474daa95cea813e Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Fri, 14 Mar 2025 16:50:37 -0500 Subject: [PATCH] added code for a network service Signed-off-by: Matt Bruce --- .../Services/EmployeeService.swift | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) 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) + } +}