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