runeroniek/brazil-api

View on GitHub
README.md

Summary

Maintainability
Test Coverage
Brazil API
==========

Validação de dados via API usando HTTPS (importante se você estiver usando SSL). Ao invés de você inserir 2 libs pra verificar, você pode fazer um requisição a API. :)




Build Status
------------
[![Build Status](https://travis-ci.org/runeroniek/brazil-api.png?branch=master)](https://travis-ci.org/runeroniek/brazil-api) [![Code Climate](https://codeclimate.com/badge.png)](https://codeclimate.com/github/runeroniek/brazil-api)





___

Colabore!
---------

Escrevi isto pra ser open-source! Se você tem novas ideias de validações (ou até uma lib JS mínima que faça esses checks - ops!), abra um issue/envie um pull request! Só tenha certeza de que os testes passem (o que significa que você tem que escrever se implementar algo). 

**Sinta-se livre para fazer o que quiser com o projeto.**

____

O que você vai precisar?
------------------------

O que eu utilizei pra fazer a API? A lista do que você vai precisar pra rodar é a seguinte:

**Se você NÃO conhece ruby nem rails**
- Aqui tem um guia bem legal: http://www.maujor.com/railsgirlsguide/install.php


**Se você já conhece Ruby on Rails:**
- Ruby 1.9.3
- GIT
- Sinatra

**Após instalar Ruby & GIT**

- Clone o repositório: `git clone git://github.com/runeroniek/brazil-api` e entre no diretório /brazil-api
- Instale o sinatra: (`gem install sinatra`)
- Dentro do diretório da api, rode o comando `bundle install`
- Para rodar o servidor, use `shotgun api.rb`
- Pronto, a api está rodando no teu servidor local! Cheque a URL (geralmente `http://localhost:9393`)

**Para adicionar novas validações**

- Crie um teste para a validação no diretório `spec/`, seguindo o seguinte padrão: `validator_SUAVALIDACAO_spec.rb`
- Escreva os testes, antes de criar a validação e rode-os (os testes) usando `rspec spec`.
- Veja os testes falhar (já que não há implementação ainda) e aí sim: crie seu validador em `lib/validators/SUAVALIDACAO.rb`
- Faça um require da sua validação no arquivo `lib/validator.rb` ( algo como `require 'validators/SUAVALIDACAO'` )
- Certifique-se que sua validação possui o método `def as_json`, siga os exemplos dos outros validadores.
- Adicione a query string na classe que está em `lib/response.rb`, seguindo o mesmo formato. 
- Pronto, só fazer a validação na URL. Pode ficar assim: `http://localhost:9393/?validacao=SUA_VALIDACAO`.

___

Validações que já foram implementadas
-------------------

**Obs.:**  *Substitua XXX pelo valor que quiser checar*

**Busca por CEP**

**Exemplo:** Requisição GET para ```https://brazilapi.herokuapp.com/api?cep=XXX```
A resposta será um JSON se o CEP for válido e existir (no caso abaixo, utilizei o CEP `78132-500`:

```json
[{
  "cep": 
    {
      "valid":true,
      "result":true,
      "data":
        {
          "id": "4785",
          "cidade": "Várzea Grande",
          "logradouro": "Nove",
          "bairro": "Cohab Sete de Maio",
          "cep": "78132-500",
          "tp_logradouro": "Rua",
          "cidade_sem_acento": "varzea grande",
          "uf": "mt"
        },
      "message":""
    }
}]
```


**Validação de CPF**
**Exemplo:** Requisição GET para  ```https://brazilapi.herokuapp.com/api?cpf=XXX```
A resposta será um JSON:

```json
[{
  "cpf":
    {
      "valid": true,
      "value": "11111111111"
    }
  }]
```

**Validação de Email**
**Exemplo:** Requisição GET para ```https://brazilapi.herokuapp.com/api?email=XXX```
A resposta será um JSON:

```json
[{
  "email":
    {
      "valid": true,
      "value": "exemplo@provedor.com.br"
    }
  }]
```

**Verificar todos os anteriores**
**Exemplo:** Você pode usar todos os anteriores se quiser validar tudo de uma vez:
Requisição GET para ```https://brazilapi.herokuapp.com/api?email=XXXX&cep=XXX&cpf=XXX`

A resposta será um JSON com a união de todos os anteriores:

```json
[
  {
    "email":
      {
        "valid": true,
        "value":"exemplo@provedor.com.br"
      }
  },
  
  {
    "cep":
      {
        "valid": true,
        "result": true,
        "data":
          {
            "DADOS DO CEP"
          }
      }
  },
  
  {
    "cpf":
      {
        "valid": true,
        "value": "11111111111"
      }
  }]

```