-
Notifications
You must be signed in to change notification settings - Fork 0
/
application.py
139 lines (120 loc) · 4.62 KB
/
application.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
#coding: utf-8
import json
from flask import Flask, request
import documento
# --------------------
def preparar_resposta_erro(codigo, titulo, mensagem):
erro = {'titulo': titulo, 'mensagem': mensagem}
payload = json.dumps(erro, ensure_ascii=False).encode('utf8')
response = app.response_class(
response = payload,
status = codigo,
mimetype = 'application/json'
)
return response
# --------------------
def preparar_resposta_sucesso(codigo, payload=None):
response = app.response_class(
response = json.dumps(payload),
status = codigo,
mimetype = 'application/json'
)
return response
# --------------------
app = Flask(__name__)
app.url_map.strict_slashes = False
@app.route('/api/documentos/', methods=['POST', 'GET', 'DELETE'])
@app.route('/api/documentos/<id>', methods=['GET', 'PUT', 'DELETE'])
def processar_documentos(id=''):
dados = request.get_json()
if request.method == 'POST':
#--- CRIAR UM DOCUMENTO
codigo_retorno, dados_retorno = documento.criar(dados)
#---
if codigo_retorno == 201:
response = preparar_resposta_sucesso(201, dados_retorno)
#---
else:
response = preparar_resposta_erro(
400,
'Conteúdo inválido.',
'O conteúdo enviado não é JSON válido.'
)
elif request.method == 'GET':
if id:
#--- RECUPERAR UM DOCUMENTO POR ID
codigo_retorno, dados_retorno = documento.recuperar(id)
#---
if codigo_retorno == 200:
response = preparar_resposta_sucesso(200, dados_retorno)
#---
else:
response = preparar_resposta_erro(
404,
'Documento não encontrado.',
'Não foi encontrado nenhum documento com o id informado.'
)
else:
if request.args:
for k in request.args.keys():
chave = k
valor = request.args[k]
#--- BUSCAR UM DOCUMENTO POR CHAVE E VALOR
codigo_retorno, dados_retorno = documento.buscar_todos(chave, valor)
#---
if codigo_retorno == 200:
response = preparar_resposta_sucesso(200, dados_retorno)
#---
else:
response = preparar_resposta_erro(
404,
'Documento não encontrado.',
'Não foi encontrado nenhum documento com o id informado.'
)
else:
#--- RECUPERAR TODOS DOCUMENTOS DA COLECAO
codigo_retorno, dados_retorno = documento.recuperar_todos()
#---
response = preparar_resposta_sucesso(200, dados_retorno)
elif request.method == 'PUT':
#--- ATUALIZAR UM DOCUMENTO
codigo_retorno, dados_retorno = documento.atualizar(id, dados)
#---
if codigo_retorno == 200:
response = preparar_resposta_sucesso(200, dados_retorno)
#---
elif codigo_retorno == 400:
response = preparar_resposta_erro(
400,
'Conteúdo inválido.',
'O conteúdo enviado não é JSON válido.'
)
else:
response = preparar_resposta_erro(
404,
'Documento não encontrado.',
'Não foi encontrado nenhum documento com o id informado.'
)
elif request.method == 'DELETE':
if id:
#--- EXCLUIR UM DOCUMENTO
codigo_retorno, dados_retorno = documento.excluir(id)
#---
if codigo_retorno == 200:
response = preparar_resposta_sucesso(200, dados_retorno)
#---
else:
response = preparar_resposta_erro(
404,
'Documento não encontrado.',
'Não foi encontrado nenhum documento com o id informado.'
)
else:
#--- EXCLUIR TODOS DOCUMENTOS (APAGAR COLEÇÃO)
codigo_retorno, dados_retorno = documento.excluir_todos()
#---
response = preparar_resposta_sucesso(200, dados_retorno)
return response
# --------------------
if __name__ == '__main__':
app.run()