Skip to content

Tuanemendes/imersao-java-2

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

89 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Imersão Alura

👩‍💻 Java-stickers

Badge em Desenvolvimento GitHub Org's stars

Índice

💻 Descrição do Projeto

O projeto tem como ojetivo de desenvolver uma aplicação do zero em Java visando teoria por meio da prática amplição de portifólios e da carreira de dev.

💻Tecnologias Utilizadas

Java 17
VsCode
Coding Pack para Java
Proton VPN
IMDb-API(*obs: VPN ligada)
NASA-API
Spring Initializr
MongoDB
Postman
Docker
Fly.io

💻Funcionalidades e Demonstração da Aplicação

A inversão são de 5 dias de códificação em java criação de classes, conceitos de herença, polimorfismo, a utilização do framework spring com a criação de uma API para ser consumida pelo próprio gerador de stickers, implementação de desafios.

👩‍🏫👨‍🏫Aula 1

Na primeira aula ideia iniciamente é consumir microserviços de uma API dos top 250 filmes, no qual será utilizada a IMDb-API. Foi realizado cadatro no site da IMDb-API para conseguir buscar o dados dos Top250Movies, o site não funcionava dizendo estar fora do ar como o status 403, para resolução do problema, foi passado pelo time da alura um link pra buscar os dados e um segunda que encontrei foi utilizar uma VPN que no qual foi possível acessar a o link do site IMDb-API. Na classe main foi criado a conexão com o http para buscar o top 250 filmes. Foi criado uma JsonParser para fazer o processo de separação dos dados. Criado um for para trazer a lista com manipulação do dados titulo , poster, classificação.

🛠Desafios Dia 01

  • 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.

Para aprimoarar os stickers foi implementado uma saudação ja enviar a messagem de bom dia, boa tarde, boa noite de acordo com a hora que for gerada.

            LocalTime horaAtual = LocalTime.now();
            String textoSaudacao;
            
            if(horaAtual.isBefore(LocalTime.of(12, 0))){
                textoSaudacao = "Bom dia!";
            }else if(horaAtual.isBefore(LocalTime.of(18,0))){
                textoSaudacao = "Boa tarde!";
            }else{
                textoSaudacao = "Boa Noite!";
            }
Figura IMDBtop250
Terminal Estrelas

👩‍🏫 👨‍🏫Aula 2

Aula de Manipulação de imagem para gerar stickers pra whatsapp, com a utilização de bibliotecas Java para modificar tamanho da imagem , buscando as imagens da API dos filmes passadno textos dentro dessas imagens

🛠Desafios Dia 02

  • Redimencionar as imagens para ter um maior resolução.
  • Criar diretório de saída das imagens, se ainda não existir.
  • Centralizar o texto na figurinha.
  • Colocar outra fonte como a Comic Sans ou a Impact, a fonte usada em memes.
  • Colocar contorno (outline) no texto da imagem.
  • Colocar uma imagem de você que está fazendo esse curso sorrindo, fazendo joinha e fazer com que o texto da figurinha seja personalizado de acordo com as classificações do IMDB.
Figura IMDB

👩‍🏫 👨‍🏫Aula 3

Aula de refatoração do código com foco em orientação obejtos para deixar mais seguro, manutenivel e organizado para gerar facilidade para outros desenvolvedores conseguir entender o código, foi separado as seguintes classes:

Classes Java

Com essa refatoração sendo possível utilização de outras API pra gerar outros stickers como foi utilizado a API da NASA.

Figura NASA

🛠Desafios Dia 03

  • 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.

No desafio de transformar a class para record, foi necessário criar outro construtor para ter somente dois atribudos pois na record que foi criado tinha três atributos.

  public record Content(String title,String urlImage,double classification) {
    
    public Content(String title, String urlImage) {
        this(title, urlImage, 0.0); // classificação como padrão 0.0
    }
}

Realização do teste da exception criada.

Terminal Exception

No desafio na criação do enum foi implementado uma lógica se caso for NASA_APOD ele consiga pegar as chaves do arquivo de configuração e a data que esta sendo passada para buscar mais imagens e não somente do dia.

        if(api.equals(API.NASA_APOD)){
           //API Nasa
           String apiKeyNasa = properties.getProperty("NASA_API_KEY");
           String dateNasa = properties.getProperty("DATA_NASA");
           url = api.getUrl() + apiKeyNasa + dateNasa;

       }else{
           String apiKeyImdb = properties.getProperty("IMDB_API_KEY");
            url = api.getUrl() + apiKeyImdb;
       }

👩‍🏫 👨‍🏫Aula 4

Criação de uma API em spring que seria um projeto que tem como base ser pré configurado, que ao iniciar um projeto não é necesssario configurações como tomcat, gerenciamento de projeto com o maven, é tudo gerenciado por meio de dependências com suas anotações. O projeto tem com objetivo criar uma API local incialmente para ser consumida a partir do primeiro projeto que foi criado para gerar os stickers, sua busca será por linguagens preferidas, sendo utilizando banco de dados mongoDB, para utilização do banco sendo necessário incluir as denpendencias do mongo no aquivo pom.xml do projeto spring e realizado as configurações para buscar o banco de dados em nuvem.

Figura Linguagem

Outra ferramenta muito importante para o desenvolvimento é o postman que é software para realizar busca de dados, inserir, deletar por meio dos endopoints da aplicação, ele possui uma gama de funcionalidades para realizar testes em uma API.

Terminal Exception

🛠Desafios Dia 04

  • Finalizar o CRUD (Create, Read, Update e Delete) para que se possa atualizar e excluir uma linguagem cadastrada;
  • Devolver a listagem ordenada pelo ranking;
  • Retornar o status 201 quando um recurso (linguagem, no nosso caso) for cadastrado através do POST;

O desafio de ordenação é algo realmente muito simples , apenas criando uma linha de código na classe LanguageRepository foi possvel criar um método findByOrderByRanking para ordernada a lista da linguagens.

Terminal Exception

Desafio do status code para 201 created teve a alteração do metodo post para ter uma ResponseEntity

Terminal Exception

👩‍🏫 👨‍🏫Aula 5

Publicação da API no cloud

Criação de um arquivo docker file publicar a imagem no docker hub

FROM openjdk:17-jdk-alpine
VOLUME /tmp
ARG JAVA_OPTS
ENV JAVA_OPTS=$JAVA_OPTS
COPY target/languages-api-0.0.1-SNAPSHOT.jar languagesapi.jar
EXPOSE 8080
ENTRYPOINT exec java $JAVA_OPTS -jar languagesapi.jar
# For Spring-Boot project, use the entrypoint below to reduce Tomcat startup time.
#ENTRYPOINT exec java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar languagesapi.jar

Criação da conta no Fly.oi para fazer o deploy do projeto para rodar em cloud.

fly.io

Realizado set para a senha do banco de dados

Set-senha

Deploy finalizado com sucesso!
link para acesso 👇 
➡️ ➡️ ➡️ languages-api ⬅️ ⬅️ ⬅️ 

👩‍Desenvolvido Por

Tuane 💙 

Pessoas Contribuidoras

Time Alura 💙

Alexandre Aquiles
Jacqueline Oliveira
Paulo Silveira

About

Imersão Java como objetivo de criar um projeto em java para gerar figurinhas buscando imagens nas APIs , criar a propria API em Spring pra ser consumida e fazer o deploy para nuvem.

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Java 98.3%
  • Dockerfile 1.7%