Refatorado parte de um CLI (command line interface) para que, ao invés de utilizar callbacks, seja utilizado apenas Promises. Além disso, foram implementadas mais algumas funcionalidades, consumindo a mesma API que já está sendo consumida.
O CLI mostra informações sobre o mundo de Game of Thrones utilizando, como fonte dessas informações, uma API pública chamada An API of Ice And Fire.
O código deste repositório possui a funcionalidade de listar as personagens, e exibir os detalhes sobre uma personagem selecionada. Além de refatorar o código já existente, foram adicionadas funcionalidades de buscar livros pelo nome, exibir os resultados, e mostrar os detalhes do livro selecionado.
Não pode haver nenhum tipo de código síncrono ou que utilize callbacks.
Você pode trocar a biblioteca utilizada para fazer requisições HTTP, se preferir, mas a biblioteca atual já suporta Promises.
Você também pode utilizar async/await sempre que precisar manipular as Promises. Com isso, não existe a necessidade de consumi-las utilizando then
e catch
.
Ao selecionar essa opção, permita que o usuário insira o nome do livro que deseja pesquisar.
3 - Utilizando o nome inserido, realizar uma requisição para o endpoint /books
da API, com o parâmetro ?name
contendo o nome digitado pelo usuário e apresentar os resultados para o usuário numa lista
Você pode consultar a documentação deste endpoint para verificar qual o formato em que os dados serão retornados.
A lista deve exibir apenas o nome do livro, e deve permitir que o usuário escolha um dos livros sobre o qual deseja ver os detalhes.
Quando o CLI solicitar o nome do livro que a pessoa deseja pesquisar, existe a possibilidade de nada ser digitado. Nesse caso, a busca deve ser feita com o parâmetro ?name
em branco (?name=
), para que a API retorne todos os livros.
Ambas as opções só devem ser exibidas quando de fato forem úteis, ou seja, se o usuário já estiver na primeira página, a opção "Página anterior" não deve ser exibida e, se o usuário já estiver na última página, a opção "Próxima página" não deve ser exibida.
Para entender como a paginação funciona, leia a documentação da API.
Você precisará ler o conteúdo do header link
, retornado pela API quando utiliza-se paginação. O arquivo lib/utils.js
já possui uma função (parseLinks
) que realiza a leitura desse header e o converte de string para um objeto. O arquivo lib/menus/characters/actions/list.js
já faz a implementação desse requisito, você pode utiliza-lo como referência.
Essa exibição deve ocorrer da mesma forma que ocorre com a personagem no menu "Personagens".
Após exibir os detalhes do livro, a aplicação deve retornar para a tela de resultados de livros.
Em todos os menus, uma opção de "voltar" deve ser exibida. Essa opção deve levar o usuário para o menu anterior e, através dela, deve ser possível chegar de volta ao menu principal.
A API realiza a busca por palavras exatas no valor informado no parâmetro name
. Caso seja informado um livro que não existe, a API retornará um Array vazio.
Para esses casos, é exibido na tela a mensagem "Nenhum livro encontrado para essa pesquisa"
e, logo em seguida, retornado ao menu de livros
Exibir, no menu principal, um menu "casas" e, dentro dele, uma opção "Listar casas".
O comportamento deve ser idêntico ao de listar personagens, inclusive a paginação, que deve atender ao requisito 5.