Este #NuGetRecomendado es un poco diferente, esta vez se trata de un paquete que yo mismo he creado. Se llama Jirapi y es un cliente para consumir la Pokéapi, que es una API que ofrece un montón de información sobre los juegos de Pokémon. El cliente es bastante sencillo, y está hecho usando Flurl, otro paquete de NuGet que les recomendé ya hace algunas semanas.

Ahora, tal vez te estés preguntando: ¿para qué demonios me va a servir esto? y pues tal vez pienses que para no mucho... mas que para jugar o, si como yo, estás interesado en dar presentaciones, enseñar alguna tecnología (como Xamarin) o crear pequeñas aplicaciones, esta librería te resultará muy útil.

¿Qué puede hacer Jirapi?

En Jirapi están disponibles todos los recursos que indica documentación de Jirapi. En esta librería, dichos recursos están representados por clases dentro del namespace Jirapi.Resources, por ejemplo: el recurso /pokedex es representado por la clase Pokedex y recurso /pokemon-species por PokemonSpecies.

Para acceder a ellos es necesario crear una instancia de la clase PokeClient:

var pokeClient = new PokeClient();

De acuerdo con la documentación, podemos acceder a una lista de los recursos disponibles, y con este pequeño cliente esta acción se realiza con el método GetResourceList<T>, en donde T debe ser uno de los recursos antes mencionados.

Por ejemplo, si quisiéramos obtener una lista de todos los Pokédex, haríamos algo como esto:

var dexes = await pokeClient.GetResourceList<Pokedex>();

El método devuelve una instancia de la clase ApiResourceList<Pokedex> que contiene los resultados en una lista de de NamedApiResource<Pokedex>:

Console.WriteLine("Pokedexes");
foreach (var dex in dexes.Results)
{
    Console.WriteLine(dex.Name);
}

Los NamedApiResource solamente son una contienen información básica del recurso, como su nombre, su id y la url desde la que se puede acceder a él. Pero teniendo un recurso podemos acceder al objeto completo usando el método GetResource:

Supongamos que queremos obtener el pokédex de kanto:

var kantoDex = await dexes.Results
    .First(d => d.Name.Equals("kanto"))
    .GetResource();

En este caso, kantoDex ya contiene el recurso completo, es por eso que podemos acceder a más información, como sus descripciones:

foreach (var description in kantoDex.Descriptions)
{
    Console.WriteLine("\t ({0}): {1}",description.Language.Name, description.Description1);
}

Además de acceder a un listado de los recursos, también podemos acceder a un recurso directamente, para esto hay dos métodos para hacerlo:

Get

Podemos usar Get indicando el nombre del recurso:

var pikachu = await pokeClient.Get<Pokemon>("pikachu");

O su identificador:

var jirachi = await pokeClient.Get<Pokemon>(385);

GetByUrl

O también podemos acceder a él a través de su url:

var netBall = await pokeClient.GetByUrl<Item>("http://pokeapi.co/api/v2/item/6");

Conclusión

Es cierto que Jirapi parece que es cliente un poco rebuscado, pero esto se debe a que la Pokéapi está definida de esa manera, sin embargo, espero la uses en tu proyectos, presentaciones y demos. Lo cierto es que también le falta un poco de desarrollo: algunos de los recursos fallan y no tiene manejo de errores. Pero está en constante desarrollo, si quieres contribuir a su desarrollo, no dudes en hacerlo.

Instalación

Para instalarlo no hay mejor manera que el gestor de paquetes de NuGet, en este caso es solo un paquete llamado... Jirapi.

PM> Install-Package Jirapi

No olvides echarle un ojo al proyecto en GitHub si tienes dudas o deseas hacer unos cuantos pull requests.