Skip to content

flaviolpgjr/quotes-api

Repository files navigation

QUOTES-API

API que faz um crawler da primeira pagina do site http://quotes.toscrape.com/, e realiza um cache com mongoDB.

Solução

Foi desenvolvida uma API em rails 5, utilizando a gem nokogiri para realizar o parser das informações vindas do site, para salvar as informações retornadas do site foi utilizado o mondoDB(gem mongoid), para a autenticação foi utilizado JWT(gem knock), na parte de busca principal foi utilizado services, com a finalidade de retirar a logica de busca e parser do controller.

Para os testes, foram utilizadas as gems rspec-rails e mongoid-rspec.

Funcionamento Basico

Toda vez que uma tag é pesquisada, verifica-se no banco se a tag pesquisada foi previamente salva, se não tiver sido, realiza-se o parser das informações do site, e salva os dados retornados no banco, caso a tag pesquisada estiver em banco, realiza-se uma busca interna das frases que contém a tag.

Tecnologias

  • Rails 5.x
  • MongoDB 4.x

Pré-requisitos

Se for utilizar o Docker basta instalar:

Rodando o projeto

Através do docker

  1. Dentro da pasta do projeto execute docker-compose build
  2. Caso queira criar o usuario padrão para login(email:[email protected], password:abc123), execute o comando docker-compose run website rails db:seed
  3. Para subir a aplicação utilize o comando docker-compose up

Sem usar docker

  1. Dentro da pasta quotes-api instale as dependências com o comando: bundle install
  2. Caso o mongoDB não esteja iniciado, inicie ele através do comando: sudo service mongod start
  3. Caso queira gerar um usuário padrão para login(email:[email protected], password:abc123), execute o comando: rails db:seed
  4. Por ultimo start o servidor, através do comando: rails server ou rails s não se esqueça de manter o terminal aberto.

Realizando os testes

Através do docker

  1. Execute o comando docker-compose run website rspec

Sem usar o docker

  1. Dentro da pasta do projeto, caso não tenha instalado as dependências, execute o comando bundle install, para instalar as dependências.
  2. Execute o comando rspec dentro da pasta do projeto.

Utilizando a API

Recomenda-se usar o postman para teste da API.

  1. Caso não tenha dado o comando rails db:seed, ou caso queira cadastrar um novo usuário, acesse a url via POST localhost:3000/user/register, passando o objeto:
	{
		"auth":{
			"email":"[email protected]",
			"password":"123456"
		
		}
	}

alt text

  1. Para logar na API, e pegar o JWT, acesse a url via POST localhost:3000/user_token, passando os dados previamente cadastrados:
	{
		"auth":{
			"email":"[email protected]",
			"password":"123456"
		
		}
	}

A API, ira retornar um JWT nesse formato:


"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE1MzQzNzI0OTgsInN1YiI6eyIkb2lkIjoiNWI3MzU5MGFhNTZlMDQwZmIwM2JjODY1In19.YW6eylabPG5tfTxUOK2vjetu4poYB8WGaJHU-ucrmOw"

alt text

  1. Após logado, deve-se setar no header Authorization do postman, precedido da palavra Bearer, o seu jwt, ficando dessa forma:

alt text

  1. Agora, para fazer a pesquisa utilize a URL localhost:3000/quotes/:tag através do método GET, onde :tag é a tag que será pesquisada:

alt text

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages