Bemobi hire.me
Este projeto consiste em uma API de encurtador de URLs.
Tecnologias usadas:
- Node 8 com a framework AdonisJS
- Redis
- Docker
Execução
Terminal
- Clone do repositório.
- Instalação das dependências através do "npm install"
- Execução do servidor através do "npm start"
Docker
- Clone do repositório, acessar a pasta do projeto e executar "docker-compose up".
Endpoints
Descriçao | Método | URL | Parâmetros |
---|---|---|---|
Encurta uma URL | PUT | /shorten | url, custom_alias(opcional) |
Acessa uma URL encurtada, caso exista, através do alias | GET | /retrieve/{alias} | alias |
Algoritmo de hash
A estratégia usada para geração do hash final foi:
- Criptografar a url fornecida na requisição com o algoritmo MD5.
- Capturar a codificação da URL em base 64.
- Realizar uma limpeza de determinados caracteres que podem complicar a URL ( /, +)
- Captura dos 7 primeiros caracteres do MD5 codificado em base64 e limpo.
Algoritmo de geração de alias
Se um alias for específicado na requisição, uma limpeza básica é feita para remover espaços e caracteres que não são URL safe.
Caso um alias não seja específicado, o algoritmo se inicia:
- Apenas caracteres alfanumericos são permitidos na criação do alias, ou seja 62 caracteres. ("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789")
- É gerado um número pseudoaleatório entre 0 e 1 que é multiplicado ao ser multiplicado pelo range de caracteres permitidos resultará no índice do caracter escolhido para compor o alias. Por exemplo:
Número aleatório | Multiplicaço | Índice | Caracter |
---|---|---|---|
0.17 | 0.17 * 62 = 10.54 | 10 | strings[10] = "k" |
Tal algoritmo é repetido 7 vezes. Resultando em possíveis (62^7) alias únicos.