Find My Coffee – Aula 1

Conteúdos desta aula:

  • Criando nosso Projeto – 00:02:27
  • Configurando o banco de dados – 00:04:20
  • Criando nossos Models – 00:06:54
  • Habilitando o Jbuilder e preparando as pastas – 00:15:05
  • Mostrando os detalhes de uma Store – 00:16:33
  • Listando as Stores mais amadas – 00:45:31
  • Criando um novo Rating – 00:54:17
  • Criando nossa GOOGLE API KEY – 01:05:51
  • Incluindo nossa chave no projeto de forma segura – 01:08:41
  • Criando os endpoints de Google Store – 01:10:24
  • Habilitando o CORS no nosso projeto – 01:34:37

 

Criando a API do nosso Projeto (Find My Coffee)

 

1 – Para começarmos, crie uma pasta chamada find_my_coffee.

2 – Vamos criar nosso projeto rails com o seguinte comando:

 

Configurando o banco de dados

1 – Em config/database.yml coloque as configurações de acesso ao seu banco de dados:

2 – Adicione o seguinte código em seu gemfile:

3 – Rode um bundle install.

 

Criando nossos Models

1 – Crie o model Store com o seguinte comando:

2 – Agora crie o model Rating com o seguinte comando:

3 – Dentro da migration de Store gerada, cole o seguinte código para adicionar a latitude e longitude:

4 – Crie o banco de dados e rode as migrations:

5 – Dentro do model Rating.rb, cole o seguinte código:

6 – E substitua o código do model Store.rb por:

 

Habilitando o Jbuilder e preparando as pastas

1 – Descomente no Gemfile:

2 – Instale rodando:

3 – Agora crie a seguinte pasta:

 

Mostrando os detalhes de uma Store

1 – No model store inclua o método de busca de lojas próximas:

2 – Para testar, rode o console com o rails c e execute os comandos abaixo:

3 – Abra o rails console e teste a busca (O console mostrará as Stores cadastradas em um raio de 2000 milhas de distância):

4 – Agora vamos gerar nossos controllers ratings_controller.rb e stores_controller.rb com os comandos:

5 – Agora no nosso config/routes.rb, vamos pré instanciar nossas rotas substituindo pelo seguinte código:

6 – Agora vamos criar o controller api/v1/stores_controller.rb.

7 – Nele, inclua o método show:

8 – No model Store vamos adicionar um método para devolver a média de estrelas do café:

9 – Crie um template jbuilder dentro de stores chamador show.json.jbuilder e coloque nele:

10 – Teste esse método subindo o projeto com [rails s] e acesse a url localhost:3000/api/v1/stores/xyz

 

Listando as Stores mais amadas

1 – No controller Stores coloque:

2 – Com esses endpoints criados, vamos às views.

3 – Crie o seguinte template jbuilder “api/v1/stores/index.json.jbuilder”

4 – Com os códigos essenciais setados, vamos ao api/v1/stores/index.json.jbuilder. Cole o código abaixo no mesmo:

5 – Teste esse método subindo o projeto com [rails s] e acesse a url localhost:3000/api/v1/stores

 

Criando um novo Rating

1 – Para iniciarmos, vamos gerar nossos controllers ratings_controller.rb e stores_controller.rb com os comandos:

2 – Agora no nosso config/routes.rb, vamos pré instanciar nossas rotas substituindo pelo seguinte código:

3 – Agora vamos criar o método “create” do nosso controller ratings_controller.rb, coloque nele

12 – Agora, junto aos métodos privados, cole os seguintes métodos:

13 – Esses métodos servem para, assim que uma avaliação for realizada em uma loja, o endpoint cria a Store no BD ou acha essa Store caso a mesma já tenha sido avaliada, criando também sua respectiva avaliação.

 

Criando nossa GOOGLE API KEY

Documentação oficial: https://developers.google.com/places/web-service/get-api-key

1 – A chave API é um identificador exclusivo que autentica as solicitações associadas ao seu projeto para fins de uso e faturamento. Você deve ter pelo menos uma chave API associada ao seu projeto.

Para criar uma chave de API:

No Cloud Console, na página do seletor de projeto, selecione ou crie um projeto do Google Cloud para o qual deseja adicionar uma chave de API no link abaixo: https://console.cloud.google.com/projectselector2/home/dashboard

2 – Vá para a página APIs & Services > Credentials no link abaixo: https://console.cloud.google.com/apis/credentials

3 – Na página Credenciais, clique em Create credentials > API key. A caixa de diálogo Chave de API criada exibe sua chave de API recém-criada.

4 – Clique em Fechar.

A nova chave de API está listada na página Credenciais em Chaves de API. (Lembre-se de restringir a chave API antes de usá-la na produção, no link https://developers.google.com/places/web-service/get-api-key#restrict_key.)

Obs: É necessário colocar as informações do seu cartão no Google Console, ele não vai cobrar, é apenas para sinalizar que você vai pagar se passar do limite gratuito. 

 

 

Incluindo nossa chave no projeto de forma segura

1 – Rode no console:

Obs: Escolha o editor de sua preferencia

2 – Coloque no arquivo que abrir:

3 – Salve o arquivo

 

 

Criando os endpoints de Google Store

1 – Para iniciarmos, vamos gerar nossos controllers ratings_controller.rb e stores_controller.rb com os comandos:

2 – Agora no nosso config/routes.rb, vamos pré instanciar nossas rotas substituindo pelo seguinte código:

 

3 – Crie uma pasta app/services, e nela crie os arquivos get_google_coffee_list_service.rb e o get_google_coffee_details_service.rb.

4 – No gemfile coloque:

5 – Instale rodando:

6 – Inicie o service all_coffees_service.rb com o seguinte código:

7 – Agora vamos prepará-lo para receber os parâmetros de latitude e longitude ao ser instanciado. Deixe seu método “initialize” do seguinte modo:

8 – Agora no método “call”, deixe-o com a seguinte aparência:

9 – Em nosso controller, google_stores_controller.rb, anteriormente gerado, vamos colocar a nossa chamada API pelo service. Coloque o seguinte código:

10 – Teste esse método subindo o projeto com [rails s] e acesse a url localhost:3000/api/v1/google_stores?latitude=-25.447306&longitude=-49.269027

11 – Agora, no service show_coffee_details_service.rb, coloque o seguinte código:

12 – Vamos prepará-lo para receber o nosso id do estabelecimento, vindo do google. Deixe o método “initialize” da seguinte forma:

13 – Agora vamos deixar o método “call” preparado para receber essa api:

14 – Para finalizar, adicione mais um método no controller google_stores_controller.rb:

15 – Agora teste esse método subindo o projeto com [rails s] e acesse a url localhost:3000/api/v1/google_stores

 

 

Habilitando o CORS no nosso projeto

1 – Adicione a seguinte gem em seu Gemfile:

2 – Rode o blunde em seu terminal.

3 – Crie ou adicione o seguinte código no arquivo /config/initializers/cors.rb:

E é isso!! API feita!