Documentação do projeto Octofiles

Bem-vindo a documentação do projeto Octofiles. Esse foi projeto foi idealizado para servir outros sistemas da plataforma SISCULT, oferecendo um ambiente de envio de arquivos e documentações em que precisam de um controle e também de centralização para futuras consultas entre as funcionalidades. Ele segue de forma superficial o princípio do Amazon S3 na forma de persistência, controle e permissão dos mesmos, mas com mudanças para o modelo de negócio que a Secretaria de Cultura necessita.

Abaixo segue as informações acerca do seu funcionamento e desenvolvimento:

Configuração

Vamos orientar a configurar o projeto em um ambiente local, de duas formas: localmente para desenvolvimento e implantação. Lembrando que para todos os casos, precisa ter os seguintes requisitos mínimos:

  • Python 2.7 ou 3.2+
  • virtualenv
  • Git
  • PostgreSQL
  • Redis

Desenvolvimento

Acesse o repositório do projeto e efetue o checkout na sua máquina:

$ git clone https://github.com/gilsondev/octofiles.git

Com o projeto no seu computador, vamos criar o ambiente virtual e instalar as dependências:

$ cd octofiles
$ virtualenv venv
$ source venv/bin/activate
$ pip install -r requirements.txt

Instalado, vamos iniciar o servidor local:

$ python manage.py runserver

Guia de Estilo

Note

Essa seção está em contínua mudança

Para contribuir com o projeto, é interessante que o desenvolvedor tenha em mente algumas das ferramentas e boas práticas no desenvolvimento:

  • Usar ferramenta para verificação do código no padrão PEP8;
  • Sempre testar as implementações feitas;
  • A endentação do código segue o padrão de 4 espaços;
  • A cada nova mudança de feature, sempre atualize essa documentação;

Funcionalidades

O projeto Octofiles, como definido na introdução, ele oferece um serviço de armazenamento de documentos dos entes artísticos, como também alguns metadados de cada sistema, na necessidade de futuras consultas. Assim foi pensado nas seguintes funcionalidades.

Administradores

Aqui os administradores do sistema, terão a opção de manter os seus dados e de outros. Além disso ele terá o papel importante no gerenciamento dos sistemas autorizados a usar o serviço.

Gerenciamento de Sistemas

Sendo um Administrador, o usuário pode cadastrar os sistemas que vão ter acesso ao serviço do Octofiles. Nesse cadastro será gerado um APP_ID e um SECRET_KEY, em que o sistema consumidor precisará enviar a este, para gerar um token de autenticação e assim ser autorizado para enviar arquivos para upload como consulta e download. Além disso, o usuário poderá revogar o acesse de quem precisar.

API

Todo

Usar a opção de autohttp.flask para atualizar automaticamente essa seção

Nessa seção vamos definir toda a documentação da API do projeto.

Autenticação

Em breve

Documentos

Nesse recurso, é aonde fica disponibilizado e persistido os documentos do projeto. Temos as seguintes URIs:

GET /api/v1/(string: bucket)/documentos/

Lista os documentos de um determinado sistema a partir do seu bucket.

Exemplo de requisição:

GET /api/v1/procult/documentos/ HTTP/1.1
Authorization: Token 1af538baa9045a84c0e889f672baf83ff24
Host: octofiles.cultura.df.gov.br
Parameters:
  • bucket – Nome do bucket do sistema.
Request Headers:
 

Exemplo de resposta:

HTTP/1.1 200 OK
Vary: Accept
Content-Type: application/json

[
    {
        "document_url": "http://octofiles.cultura.df.gov.br/api/v1/procult/propostas/alsd01lkasd9123jalsd123.pdf",
        "self_url": "http://octofiles.cultura.df.gov.br/api/v1/procult/ask12312309aslk1230",
        "metadata": {
          "name": "Fotos do Show",
          "type": "pdf",
          "size": 1200000
        },
        "owner_uid": "asdk1239asdlk12309as",
        "mode": "private"
    }
]
Response Headers:
 
Status Codes:
POST /api/v1/(string: bucket)/documentos/

Envia um novo documento para armazenamento, a partir do seu bucket.

Parameters:
  • bucket – Nome do bucket do sistema
Form Parameters:
 
  • name – Nome do Arquivo
  • path – Caminho do arquivo a ser salvo
  • file – Binário do arquivo para upload
  • mode – Modo de visualização: public ou private
  • owner – Se o modo de visualização for private, o identificador único do dono do arquivo
Request Headers:
 
Response Headers:
 
Status Codes:
GET /api/v1/(string: bucket)/(string: uid)

Retorna informações do documento pesquisado a partir do seu bucket e o uid do arquivo.

Exemplo de requisição:

GET /api/v1/procult/ask12312309aslk1230 HTTP/1.1
Authorization: Token 1af538baa9045a84c0e889f672baf83ff24
Host: octofiles.cultura.df.gov.br
Parameters:
  • bucket – Nome do bucket do sistema.
  • uid – Identificador único (UID) do arquivo salvo
Request Headers:
 

Exemplo de resposta:

HTTP/1.1 200 OK
Vary: Accept
Content-Type: application/json

{
    "document_url": "http://octofiles.cultura.df.gov.br/api/v1/procult/propostas/alsd01lkasd9123jalsd123.pdf",
    "self_url": "http://octofiles.cultura.df.gov.br/api/v1/procult/ask12312309aslk1230",
    "metadata": {
      "name": "Fotos do Show",
      "type": "pdf",
      "size": 1200000
    },
    "owner_uid": "asdk1239asdlk12309as",
    "mode": "private"
}
Response Headers:
 
Status Codes:
PUT /api/v1/(string: bucket)/(string: uid)

Atualiza as informações do documento selecionado a partir do seu bucket e o uid do arquivo.

Parameters:
  • bucket – Nome do bucket do sistema
  • uid – Identificador único (UID) do arquivo salvo
Form Parameters:
 
  • name – Nome do Arquivo
  • mode – Modo de visualização: public ou private
  • owner – Se o modo de visualização for private, o identificador único do dono do arquivo
Request Headers:
 
Response Headers:
 
Status Codes:
DELETE /api/v1/(string: bucket)/(string: uid)

Remove o documento selecionado a partir do seu bucket e o uid do arquivo.

Parameters:
  • bucket – Nome do bucket do sistema
  • uid – Identificador único (UID) do arquivo salvo
Request Headers:
 
Status Codes:

Indices and tables