Backend da aplicação
O servidor contará com um banco de dados e uma api para acessar os arquivos
Banco de dados
foi brevemente especificado no post principal
image(id_image, hash, uploaded, desc, id_github)
a api irá gerar o hash apos o upload e fornecer as outras todas informações.
o id_github poderá ser usado para permitir que um usuário acesse apenas a sua biblioteca.
A descrição é o único campo que pode ser alterado após o envio.
tag(id_tag, tag_name)
São as tags existentes
github_user(id_github)
Id dos usuários autorizados
tag_image(id_image, it_tag)
Relacionamento das imagens e das tags
auth_token(token, id_github)
Token de autenticação do usuário.
Sera utilizado para verificar se o usuário está autenticado e sua identidade.
Poderá ser usado como cache para a aplicação web.
Acesse o arquivo que contém os comando sql utilizados para criar as tabelas do banco de dados para conferir o que foi utilizado na aplicação
Servidor de arquivos / API
Ao receber uma imagem, ela será renomeada para o seu hash e armazenada no servidor e será inserida uma entrada no banco de dados referenciando a imagem.
A imagem será enviada pelo método POST para /image e será retornado o hash da imagem.
Para obter cada imagem será utilizado o método GET em /image/[HASH].
Para remover uma imagem sera usado DELETE na mesma url do GET.
O servidor de arquivos tem acesso ao banco de dados para verificar a identidade do cliente e inserir as novas imagens
/image
O método post realiza upload da imagem através do body do request,
a descrição pode ser informada pelo parâmetro description
,
e poderá ser truncada caso necessário para ser armazenada no banco de dados.
Respostas:
- 201 caso a imagem seja carregada
- 409 caso a imagem já exista
- 503 caso não seja possível inserir os dados da imagem no banco de dados
/image/[HASH]/info
Esse endpoint será utilizado com o método POST para alterar a descrição e as tags da imagem e com o GET para receber as informações relacionadas à imagem
/auth
Possui dois endpoints: /auth/token/:token e /auth/add/:user/:token
O primeiro verifica o token e retorna o id do usuário, o segundo adiciona o token para um usuário já presente no banco de dados