Imersão Java - Alura Sticker 💻🔥

Imersão Java - Alura-Stickers 💻🔥
| 🪧 Vitrine.Dev | |
|---|---|
| ✨ Nome | Imersão Java - Alura Sticker 💻🔥 | 
| 🏷️ Tecnologias | Java, Spring, MongoDB, Heroku, Git | 
| 🚀 URL | https://linguagens-imersao-alura-api.herokuapp.com/linguagens | 
| 🤿 Desafio | https://www.alura.com.br/imersao-java | 
Dia 01 - CONSUMINDO UMA API DE FILMES COM JAVA 🔨
O objetivo foi consumir a API do IMDb (até derubar) e exibir os filmes mais populares, destacando seus pôsteres e visualizando sua classificação.
🔨 Desafios:
- Consumir o endpoint de filmes mais populares da API do IMDB. Procure também, na documentação da API do IMDB, o endpoint que retorna as melhores séries e o que retorna as séries mais populares. 
- Usar sua criatividade para deixar a saída dos dados mais bonitinha: usar emojis com código UTF-8, mostrar a nota do filme como estrelinhas, decorar o terminal com cores, negrito e itálico usando códigos ANSI, e mais! 
- Colocar a chave da API do IMDB em algum lugar fora do código como um arquivo de configuração (p. ex, um arquivo .properties) ou uma variável de ambiente 

Dia 02 - GERANDO FIGURINHAS PARA WHATSAPP 🔨
O objetivo foi criar um gerador de figurinhas explorando outras bibliotecas nativas do Java, para que possamos enviar por Whatsapp os nossos filmes preferidos!
🔨 Desafios:
- Ler a documentação da classe abstrata InputStream. 
- Centralizar o texto na figurinha. 
- Fazer um pacote no Whatsapp e/ou Telegram com as suas próprias figurinhas! 
- Criar diretório de saída das imagens, se ainda não existir. 
- Colocar contorno (outline) no texto da imagem. 
- Tratar as imagens retornadas pela API do IMDB para pegar uma imagem maior ao invés dos thumbnails. Opções: pegar a URL da imagem e remover o trecho mostrado durante a aula ou consumir o endpoint de posters da API do IMDB (mais trabalhoso), tratando o JSON retornado. 
- Fazer com que o texto da figurinha seja personalizado de acordo com as classificações do IMDB. 

Dia 03 - LIGANDO AS PONTAS, REFATORAÇÃO E ORIENTAÇÃO A OBJETOS 🔨
O objetivo foi melhorar nosso código com as refatorações necessárias para torná-lo mais flexível e fácil de entender.
🔨 Desafios:
- Transformar a classe que representa os conteúdos em um Record, disponível a partir do Java 16 
- Criar as suas próprias exceções e usá-las na classe que implementa o cliente HTTP 
- Usar recursos do Java 8 e posterior, como Streams e Lambdas, para mapear uma lista em uma outra 
- Criar uma Enum que une, como configurações, a URL da API e o extrator utilizado 
- Desafio supremo: consumir outras APIs que contém imagens, como a da Marvel, que é bem diferente. Repositório com APIs públicas: clique aqui. 
Dia 04 - CRIANDO NOSSA PRÓPRIA API COM SPRING 🔨
O objetivo foi construir uma API REST para expor nosso próprio conteúdo, utilizando ferramentas profissionais como o Spring Framework e um banco de dados NoSQL.
🔨 Desafios:
- Finalizar o CRUD (Create, Read, Update e Delete) para que se possa atualizar e excluir uma linguagem cadastrada; 
- Devolver a listagem ordenada pelo ranking; 
- Criar na sua API um modelo de entidade com nomes diferentes de title e image e criar seu próprio extrator de informações personalizado OU, manter com o nome title e image e traduzir para que seja retornado como título e imagem através do uso de DTO (Data Transfer Object); 
- Retornar o status 201 quando um recurso (linguagem, no nosso caso) for cadastrado através do POST; 
- Desafio supremo: Aplicar modificações parciais no recurso através do método PATCH, por exemplo, modificando o número de votos ou de pessoas que utilizam cada linguagem de programação. 
📁 Resultados:
 

Dia 05 - PUBLICANDO NOSSA API NO CLOUD ⚡
Vamos tornar nossa aplicação acessível por qualquer pessoa, fazendo o deploy na nuvem. Além disso, vamos gerar figurinhas a partir do conteúdo dessa nossa API.
🔨 Desafios:
- Compartilhe com seus amigos a sua URL do Heroku, para que eles possam consumir a sua API (com o padrão de atributos title e image) e gerar figurinhas do conteúdo que você utilizou (linguagens de programação, filmes, músicas); 
- Colocar a aplicação no cloud da Oracle; 
- Implementar algum mecanismo de votação na API, para que outros amigos votem nas linguagens preferidas para que se possa fazer um ranking; 
- Desafio supremo: Evoluir o projeto das três primeiras aula para que ele gere um bundle de stickers, para que se possa fazer o download e já incluir vários stickers no WhatsApp; Usar os conhecimentos aprendidos em alguma imersão React da Alura e fazer uma aplicação front-end para gerar esse bundle, onde possa se passar a URL do conteúdo e já visualizar os stickers; 
🔨 Links para acessar a API
- Link da API: https://linguagens-imersao-alura-api.herokuapp.com
- Link do Repositório: https://github.com/getmarcos/linguagens-api
🛠️ Abrir e rodar o projeto
Com a URL da API, basta adicionar /linguagens e você para que o resultado retorne para você
Para mais operações, como DELETE, PUT, PATCH basta adicionar /linguagens/{id}
✔️ Técnicas e tecnologias utilizadas
- Java 17
- Visual Studio Code
- Spring
- Paradigma de orientação a objetos
Agradecimentos
É um prazer participar de uma intensa semana de aprendizado, com pessoas muito qualificadas. Sem dúvidas essa semana foi fundamental e decisiva na reafirmação da minha escolha, é aqui que devo investir. E agora, ALURA + ONE!
