forked from JJ/tests-python
-
Notifications
You must be signed in to change notification settings - Fork 0
/
hugitos.py
68 lines (53 loc) · 1.68 KB
/
hugitos.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
"""Hitos de IV servidos para usted"""
import os
import logging
import hug
from hug.middleware import LogMiddleware
from pythonjsonlogger import jsonlogger
from datetime import datetime
from HitosIV import HitosIV
""" Define logger en JSON """
@hug.middleware_class()
class CustomLogger(LogMiddleware):
def __init__(self):
logger = logging.getLogger()
logger.setLevel(logging.INFO)
logHandler = logging.StreamHandler()
formatter = jsonlogger.JsonFormatter()
logHandler.setFormatter(formatter)
logger.addHandler(logHandler)
super().__init__(logger=logger)
def _generate_combined_log(self, request, response):
"""Given a request/response pair, generate a logging format similar to the NGINX combined style."""
current_time = datetime.utcnow()
return {'remote_addr':request.remote_addr,
'time': current_time,
'method': request.method,
'uri': request.relative_uri,
'status': response.status,
'user-agent': request.user_agent }
""" Declara clase """
estos_hitos = HitosIV()
""" Define API """
@hug.get('/')
def status():
"""Devuelve estado"""
return { "status": "OK" }
@hug.get('/status')
def status():
"""Devuelve estado"""
return { "status": "OK" }
@hug.get('/all')
def all():
"""Devuelve todos los hitos"""
return { "hitos": estos_hitos.todos_hitos() }
@hug.get('/one/{id}')
def one( id: int ):
"""Devuelve un hito"""
return { "hito": estos_hitos.uno( id ) }
if 'PORT' in os.environ :
port = int(os.environ['PORT'])
else:
port = 8000
if __name__ == '__main__':
hug.API(__name__).http.serve(port )