fitomad / ituneskit

iTunes Store Seach framework. Designed with a Protocol Oriented Programming approach

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

iTunesKit

Cliente que permite buscar en la iTunes Store. Es un framework desarrollado en Swift diseñado usando un enfoque Protocol Oriented Programming.

Diseño

La programación orienta a Protocolos difiere de la orientada a Objetos en que en lugar de comenzar definiendo estructura de clases usamos protocolos, pero además, se fundamenta en tres pilares:

  • Herencia de protocolos
  • Composición de protocolos
  • Extensiones de protocolos

Framework Design

Book: Está formado por los protocolos Track, Artwork y Sizing

Movie: Formado por Track, DVD, Artwork, Previewing y Timing

Song: Está compuesta por Track, Artwork, Previewing, Disc y Timing

Ejemplos

Vamos a buscar un libro, concretamen Ready Player One.

iTunesClient.shared.book(named: "Ready Player One") { (result: iTunesResult<Book>) -> (Void) in
	switch result
	{
		case .success(let books):
			print("Se han encontrado \(books.count) libros.")

			for book in books
			{
				print("# \(book) Size: \(book.formattedFileSize)")
			}

		case .error(let message):
			print(message)

		case .empty:
			print("No se ha encontrado nada de nada...")
	}
}

Pero también podemos hacer una búsqueda general en la iTunes Store, por ejemlo, vamos a ver qué libros, canciones o películas no da el término Jobs

iTunesClient.shared.movie(named: "Jobs") { (result: iTunesResult<Track>) -> (Void) in
	switch result
	{
		case .success(let items):
			print("Se han encontrado \(items.count) productos.")

			print("Books...")
			for case let book as Book in items
			{
				print("\t- \(book.trackName) by \(book.artistName). Size: \(book.formattedFileSize)")
			}

			print("Songs...")
			for case let song as Song in items
			{
				print("\t- \(song.trackName) // \(song.collectionName). Duration: \(song.fomattedTrackTime)")
			}

			print("Movies...")
			for case let movie as Movie in items
			{
				print("\t- \(movie.trackName) by \(movie.collectionName). Duration: \(movie.fomattedTrackTime)")
			}

		case .error(let message):
			print(message)

		case .empty:
			print("No se ha encontrado nada de nada...")
	}
}

Contacto

Para cualquier duda, sugerencia o comentario puedes contactar conmigo en twitter @fitomad

About

iTunes Store Seach framework. Designed with a Protocol Oriented Programming approach

License:MIT License


Languages

Language:Swift 98.7%Language:Objective-C 1.3%