app
Version, currently main branch1 version
- main branchlatestJul 26, 2023
github.com/dnlgomesl/Travels-RickAndMorty-API
No description declared in shard.yml.
Installation
# Add this to your shard.yml
dependencies:
app:
github: dnlgomesl/Travels-RickAndMorty-API
branch: mainmain is a branch, not a release, so this tracks it rather than pinning a version.
Then run:
shards installshard.yml
- Crystal
1.8.2- License
- MIT
- Author
- dnlgomesl
- Target
appfrom src/app.cr
Dependencies
Runtime Dependencies
- db*github: crystal-lang/crystal-db
- pg*github: will/crystal-pg
- kemal*github: kemalcr/kemal
- crystal-gql*github: itsezc/crystal-gql
README
Documentação do Código - Cadastro de Planos de Viagens para o Universo de Rick and Morty
O código fornecido implementa um sistema para cadastrar planos de viagens para o universo de Rick and Morty. Ele utiliza uma API chamada "rickandmortyapi" para obter informações sobre as localizações no universo e permite que os usuários otimizem suas viagens e obtenham informações expandidas sobre as paradas de viagem.
Rotas Disponíveis
POST /travel_plans
Esta rota é responsável por cadastrar um novo plano de viagem. Ela recebe os dados da viagem no formato JSON no corpo da requisição. Os dados devem incluir uma lista de "travel_stops" que representam as paradas planejadas da viagem.
Parâmetros da Requisição
travel_stops(obrigatório): Uma lista de paradas da viagem. Cada parada deve ser representada por um número inteiro no intervalo de 1 a 126.
GET /travel_plans
Esta rota retorna uma lista de todos os planos de viagem cadastrados. Ela suporta dois parâmetros de consulta opcionais: optimize e expand.
Parâmetros da Consulta
optimize(opcional): Um valor booleano que indica se a viagem deve ser otimizada. Quando definido comotrue, a ordem das paradas de viagem será otimizada para minimizar saltos interdimensionais. Se não fornecido ou definido comofalse, a ordem das paradas permanecerá como foi cadastrada.expand(opcional): Um valor booleano que indica se as informações das paradas de viagem devem ser expandidas. Quando definido comotrue, as informações expandidas incluirão detalhes sobre as localizações de cada parada obtidos da API "rickandmortyapi". Se não fornecido ou definido comofalse, apenas os IDs das paradas serão retornados.
GET /travel_plans/:id
Esta rota retorna os detalhes de um plano de viagem específico com base no ID fornecido. Assim como a rota anterior, ela também suporta os parâmetros de consulta optimize e expand.
Parâmetros da URL
id(obrigatório): O ID do plano de viagem a ser recuperado.
PUT /travel_plans/:id
Esta rota permite atualizar um plano de viagem existente com base no ID fornecido. Ela recebe os dados da viagem atualizados no formato JSON no corpo da requisição, incluindo a lista de travel_stops atualizada.
Parâmetros da URL
id(obrigatório): O ID do plano de viagem a ser atualizado.
Parâmetros da Requisição
travel_stops(obrigatório): A lista atualizada de paradas da viagem.
DELETE /travel_plans/:id
Esta rota permite excluir um plano de viagem existente com base no ID fornecido.
Parâmetros da URL
id(obrigatório): O ID do plano de viagem a ser excluído.
Funções Auxiliares
O código também inclui algumas funções auxiliares que são utilizadas pelas rotas para realizar operações específicas.
to_bool(value : String) : Bool?
Esta
função converte uma string em um valor booleano. Ela é utilizada pelas rotas GET para converter os valores dos parâmetros de consulta optimize e expand em valores booleanos.
expand_method(arr : Array(Int32)) : Array(Hash(String, String | Int32))?
Esta função é utilizada para expandir as informações das paradas de viagem. Ela recebe uma lista de IDs de paradas e faz uma chamada à API "rickandmortyapi" para obter informações detalhadas sobre cada parada. As informações expandidas incluem o nome da localização, o tipo e a dimensão. Os resultados são retornados como uma lista de hashes.
optimize_method(ids : Array(Int32)) : Array(Int32)
Esta função é utilizada para otimizar a ordem das paradas de viagem. Ela faz uso da API "rickandmortyapi" para obter informações sobre as localizações e suas respectivas dimensões. Com base nessas informações, os IDs das paradas são reordenados de acordo com a popularidade das dimensões e das localizações dentro de cada dimensão. Os resultados são retornados como uma nova lista de IDs otimizados.
calculate_location_popularity(location : Hash(String, JSON::Any)) : Int32
Esta função calcula a popularidade de uma localização com base na quantidade total de episódios em que seus residentes aparecem. Ela é utilizada pela função optimize_method para determinar a popularidade de cada localização e realizar a ordenação.
Considerações Finais
O código fornecido implementa um sistema básico de cadastro de planos de viagens para o universo de Rick and Morty. Ele oferece suporte a recursos como otimização de viagens e informações expandidas sobre as paradas de viagem, utilizando a API "rickandmortyapi" como fonte de dados adicionais.
Documentation
Built from the current release. The first visit to a release nobody has asked for starts its build.
Links
This branch
- Branch
main- Seen
- Jul 26, 2023
- Crystal
1.8.2- Indexed
- yes
Dependents
No indexed shard depends on this one yet.
Repository
github.com/dnlgomesl/Travels-RickAndMorty-API
Metadata
- Created
- Aug 12, 2026
- Updated
- Aug 15, 2026
- Synced
- Aug 15, 2026
- Versions
- 1