diff Simoleon/Helpers/NetworkHelper.swift @ 156:84137052813d

Refactor code
author Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
date Sat, 28 Aug 2021 11:15:25 +0100
parents
children 0c589138a6f3
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Simoleon/Helpers/NetworkHelper.swift	Sat Aug 28 11:15:25 2021 +0100
@@ -0,0 +1,38 @@
+//
+//  Request.swift
+//  Simoleon
+//
+//  Created by Dennis Concepción Martín on 20/07/2021.
+//
+
+import Foundation
+
+// MARK: - HTTP Request
+func httpRequest<T: Decodable>(url: String, model: T.Type, completion: @escaping (_ result: T) -> Void) {
+    
+    // We take some model data T.Type
+    guard let url = URL(string: url) else {
+        print("Invalid URL")
+        return
+    }
+    
+    let request = URLRequest(url: url)
+    URLSession.shared.dataTask(with: request) { data, response, error in
+        if let data = data {
+            do {
+                // Decode response with the model passed
+                let decodedResponse = try JSONDecoder().decode(model, from: data)
+                DispatchQueue.main.async {
+                    completion(decodedResponse)
+                }
+                return
+            } catch {
+                // Return error regarding the escaping code
+                print(error)
+            }
+        }
+        // Error with the request
+        print("Fetch failed: \(error?.localizedDescription ?? "Unknown error")")
+    }
+    .resume()
+}