From 64bec95897c86677118ace09c8e3e13de1491cad Mon Sep 17 00:00:00 2001 From: allbertoMD Date: Thu, 9 May 2024 23:53:37 +0200 Subject: [PATCH 1/2] #10-Swift --- .../allbertoMD.swift | 92 +++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 Retos/Reto #10 - LA API [Media]/allbertoMD.swift diff --git a/Retos/Reto #10 - LA API [Media]/allbertoMD.swift b/Retos/Reto #10 - LA API [Media]/allbertoMD.swift new file mode 100644 index 0000000000..4334b6f202 --- /dev/null +++ b/Retos/Reto #10 - LA API [Media]/allbertoMD.swift @@ -0,0 +1,92 @@ +import Foundation + +struct Info: Codable { + let count: Int + let totalPages: Int + let previousPage: String? + let nextPage: String? +} + +struct CharacterDataResponse: Codable { + let info: Info + let data: [DisneyCharacter] +} + +struct DisneyCharacter: Codable { + let _id: Int + let films: [String] + let shortFilms: [String] + let tvShows: [String] + let videoGames: [String] + let parkAttractions: [String] + let allies: [String] + let enemies: [String] + let sourceUrl: String + let name: String + let imageUrl: String? + let createdAt: String + let updatedAt: String + let url: String + let __v: Int +} + +// Definir la URL de la API +var apiUrlString = "https://api.disneyapi.dev/character" +guard let apiUrl = URL(string: apiUrlString) else { + print("URL inválida") + exit(1) +} + +// Crear una solicitud URLRequest +var request = URLRequest(url: apiUrl) +request.httpMethod = "GET" + +// Crear una sesión URLSession +let session = URLSession.shared + +// Crear una tarea de datos +let task = session.dataTask(with: request) { (data, response, error) in + // Verificar si hay algún error + if let error = error { + print("Error: \(error)") + return + } + + // Verificar si se recibió una respuesta HTTP + guard let httpResponse = response as? HTTPURLResponse else { + print("Respuesta HTTP inválida") + return + } + + // Verificar si la solicitud fue exitosa (código de estado 2xx) + guard (200...299).contains(httpResponse.statusCode) else { + print("Error en la solicitud. Código de estado: \(httpResponse.statusCode)") + return + } + + // Verificar si se recibieron datos + guard let responseData = data else { + print("No se recibieron datos") + return + } + + do { + // Decodificar la respuesta en la estructura CharacterDataResponse + let characterDataResponse = try JSONDecoder().decode(CharacterDataResponse.self, from: responseData) + + // Acceder a los datos de los personajes + for character in characterDataResponse.data { + print("Nombre: \(character.name), Películas: \(character.films)") + // Puedes acceder a otros datos aquí según sea necesario + } + } catch { + print("Error al decodificar los datos: \(error)") + } +} + +// Empezar la tarea +task.resume() + +// Espera un segundo para que de tiempo ha terminar la tarea +sleep(1) + From 45aed311788730eb675dd87121b423c7471492fd Mon Sep 17 00:00:00 2001 From: Bruce <88008233+Roswell468@users.noreply.github.com> Date: Sat, 11 May 2024 21:17:42 -0300 Subject: [PATCH 2/2] =?UTF-8?q?Inclusi=C3=B3n=20de=20soluci=C3=B3n=20dentr?= =?UTF-8?q?o=20de=20la=20carpeta=20swift?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Retos/Reto #10 - LA API [Media]/{ => swift}/allbertoMD.swift | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Retos/Reto #10 - LA API [Media]/{ => swift}/allbertoMD.swift (100%) diff --git a/Retos/Reto #10 - LA API [Media]/allbertoMD.swift b/Retos/Reto #10 - LA API [Media]/swift/allbertoMD.swift similarity index 100% rename from Retos/Reto #10 - LA API [Media]/allbertoMD.swift rename to Retos/Reto #10 - LA API [Media]/swift/allbertoMD.swift