Giter VIP home page Giter VIP logo

airaizos / apirestdemo Goto Github PK

View Code? Open in Web Editor NEW
2.0 1.0 1.0 8.26 MB

Repositorio 100% nativo en Swift en UIKIt en el que se realizan conexiones a diferentes API Rest. Para cada API he utilizado 3 diferentes patrones para manejar la asincronía: * Patrón `callback` * Librería `Combine` * Modelo de concurrencia `Async-await` .

Swift 100.00%
apirest async-await callback-functions combine-framework coredata mvc-architecture notificationcenter swift uikit-framework unittesting

apirestdemo's Introduction

APIRest Demo

APIs Públicas Repositorio 100% nativo en Swift en UIKIt en el que se realizan conexiones a diferentes API Rest. Para cada API he utilizado 3 diferentes patrones para manejar la asincronía:

  • Patrón callback
  • Librería Combine
  • Modelo de concurrencia Async-await .

Proporciona en formato json un número generado de manera aleatoria y su detalle como su equivalente en Binario, su version en Romano, Chino, si es primo, perfecto, triangular, etc.

Para la gestión de la asincronía se utiliza el patrón callback y URLSession

Proporciona en formato json un chiste aleatorio relacionado el legendario Chuck Norris.

Implementación

  • Patron Callback y URLSession para la conexión a la API ChuckNorrisNetwork
  • NotificationCenter para la notificación del cambio en de los valores en las propiedades.
  • Persistencia de datos con un archivo JSON que se guarda en carpeta de documentos de la app.
  • TableView para los items persistidos
  • Unit Tests del ModelLogic y un Mock de URLSession gracias a URLPRotocol ChuckURLSessionMock

Proporciona información sobre la división administrativa de regiones, departamentos y municipios en Francia. Datos por municipio como código postal, población.

Implementación

  • Combine y URLSession para la conexión a la API CommunesNetwork
  • NotificationCenter para la notificación del cambio en de los valores en las propiedades.
  • TableView para los listados
  • Unit Tests del ModelLogic con un Mock en la petición a red CommunesUnitTests

API que genera un avatar personalizable en formato SVG, PNG o JPG, con opciones como color de fondo, ojos, boca, tamaño, rotación, etc.

Implementación

  • Hecho con el modelo de concurrencia Async-await Statics
  • NotificationCenter para la notificación del cambio en de los valores en las propiedades.
  • Permite la persistencia de datos través de CoreData.APIRestDemoDataBase
  • CollectionView para mostrar los elementos persistidos

Países

Diferentes APIs de las que se obtiene un listado de países ( 250 ) y a partir de esa información se consulta en otras APIs para la descarga de la bandera del icono de la tabla, la bandera en tamaño 128x96, y una cuarta API con APIKey que permite la consulta de la regiones y ciudades del país seleccionado.

Implementación

  • Hecho con la funcionalidad Continuations que permite crear un puente entre la función de red con callback para convertirlo a un código asíncrono (async-await). Countries Network
  • Interfaz de red que implementa un ApiKey para el acceso a las regiones y ciudades.
  • NotificationCenter para la notificación del cambio en de los valores en las propiedades.
  • MapKit para mostrar la localización de la ciudad elegida y calcular la distancia hasta la localización del usuario CountryDetailViewController

Marvel Characters

API que obtiene de la API Developer Marvel un listado de imágenes de los personajes, a los que se les puede marcar como favorito.

Implementación

  • Hecho con el modelo de concurrencia Async-await
  • NotificationCenter para la notificación del cambio en de los valores en las propiedades.
  • Las CollectionViews están implementadas con la clase DiffableDataSource para la gestión de los elementos. MarvelCharactersModelLogic
  • Grupos de tareas permiten la concurrencia de Async-await en la devolución de las imágenes de los personajes MarvelCharactersNetwork
  • El diseño de las celdas de las CollectionViews está implementado en SwiftUI gracias el UIHostingConfiguration MarvelCharactersCollectionViewController
  • Interfaz de red que implementa un timestamp, ApiKey y hash para el acceso a la API

apirestdemo's People

Contributors

airaizos avatar

Stargazers

 avatar  avatar

Watchers

 avatar

Forkers

angeloffury7

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.