# FileWS SSPGO
## Antes de usar o filews saiba que
1. Você deve solicitar ao TI da SSP criação de um namespace para seu projeto ou corporação.
2. O filews sanitiza os arquivos de imagem. Ele refaz todas as imagens para tirar headers maliciosos, logo o md5 da imagem vai mudar após o upload.
3. O filews faz resize de imagens maiores que 1000px de altura ou largura. Ele garante que a maior dimensão tenha no máximo 1000px.
4. O filews não deixa entrar arquivos office ou pdf com senha, macro, scripts, anexos, OLE objects, etc
5. O filews tem o limite dew 15MB por arquivo
## Tipos de arquivos suportados
* texto (txt, rtf, variações do ms word e open office)
* planilha (variações do ms excel e open office)
* application/pdf
* application/pkcs7-signature
* application/zip
* application/x-rar-compressed
* model/vnd.dwf
* audio/*
* video/*
* image/*
## Enviando um arquivo
É um multipart/form-data upload com 3 parametros: **arquivo**, **tipoPermissao** (PUBLICO ou TOKEN) e **namespace** (ssp, bm, pm, pc ou ptc)
```bash
curl -X POST \
https://filews.ssp.go.gov.br/uploadArquivo \
-H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
-H 'token: b61bb3e5b50da29ec74a15a51fa30829' \
-F 'arquivo=@teste.png' \
-F tipoPermissao=TOKEN \
-F namespace=ssp
```
RESPONSE:
```json
{
"id": "2iAp8rxRbhS05Uq0eTROYSfvgxTjRtRc", <---- Id permanente.
"dataUpload": 1540467520154,
"nomeOriginal": "teste.png",
"tipoPermissao": "TOKEN",
"mimeType": "image/png"
}
```
## Evitando que o id permanente do arquivo seja usado no frontend
Para um camada extra de segurança, é melhor gerar um id temporário para um arquivo privado.
No seu backend, ao invés de devolver o id permanente para view, troque-o por um identificador temporário. Veja abaixo como:
**id** É o identificado permanete do arquivo
**maxHits** é o número de downloads que esse id temporário vai permitir.
**expiracaoEmMinutos** pode-se controlar a expiração passando o tempo de expiração
**dataExpiracao** pode-se controlar a expiração passando a data de expiração (timestamp)
```bash
curl -X POST \
http://localhost:8091/idTemporario \
-H 'Content-Type: application/json' \
-H 'token: 821abf59b17b2f51a723af42b59a456c' \
-d '{
"id" : "GhGwdZb7V4CJP9KirA0s0YJZr0MCx3uT", <---- Id permanente.
"maxHits": 3,
"expiracaoEmMinutos": 3 //ou dataExpiracao: 1573481487747
}'
```
RESPONSE:
```json
{
"id": "rmliz834XOBjuLGcGjdntgbbpTVsO0JehUU6eslNidLKVLtS1ye7Iin0xP7wfsjy", <---- Id temporário.
"dataExpiracao": 1569854394198,
"maxHits": 3
}
```
Com o **id temporário** em mãos, basta chamar o /loadArquivo (ainda é necessário informar o token)
```
https://filews.ssp.go.gov.br/loadArquivo?id=rmliz834XOBjuLGcGjdntgbbpTVsO0JehUU6eslNidLKVLtS1ye7Iin0xP7wfsjy&token=821abf59b17b2f51a723af42b59a456c
```
## Carregando um arquivo PUBLICO (ou seja, com tipoPermissao == PUBLICO)
Com o **id permanente** em mãos, basta chamar o /loadArquivo (não há necessidade de gerar id temporário)
```
https://filews.ssp.go.gov.br/loadArquivo?id=GhGwdZb7V4CJP9KirA0s0YJZr0MCx3uT
```