views.py
4.49 KB
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
140
141
142
143
144
145
146
147
148
149
150
151
152
153
#!/usr/bin/python
# -*- coding: utf-8 -*-import json
import traceback
import json
import datetime
import time
from rest_framework.decorators import api_view
from django.http import HttpResponse
from common.testDB import TestDB
import logging
from common.testFunctions import tic, toc
logger = logging.getLogger("common_logger")
# check response time decorator
def response_timer(function=None, home_url=None, redirect_field_name=None):
def _dec(view_func):
def _view(request, *args, **kwargs):
result = {}
try:
tic(request.path)
return view_func(request, *args, **kwargs)
except:
print(traceback.format_exc())
result['code'] = 500
result['message'] = 'Internal Server Error'
return returnHttpResponseLogging(request, result)
_view.__name__ = view_func.__name__
_view.__dict__ = view_func.__dict__
_view.__doc__ = view_func.__doc__
return _view
if function is None:
return _dec
else:
return _dec(function)
def returnHttpResponseLogging(request, result):
try:
db = TestDB()
url = request.path
ip = request.META['REMOTE_ADDR']
method = request.method
response_time = toc(request.path, True)
db.insertIntoApiCallLog(url, ip, method, response_time, result)
db.closeDB()
except:
print(traceback.format_exc())
json_data = json.dumps(result, default=datetime_handler)
return HttpResponse(json_data, content_type="application/json")
@response_timer
@api_view(["GET"])
def monitoringGetTest(request):
try:
result = dict()
db = TestDB()
result['data'] = db.selectApiCallLog()
result['code'] = 200
result['message'] = 'OK'
logger.info("""HTTP method used: %s, client IP : %s, message : %s, code : %s""",request.method ,request.META['REMOTE_ADDR'], result['message'], result['code'])
except Exception as e:
result['code'] = 500
result['message'] = 'testMonitoring Internal Error'
logger.error(traceback.format_exc())
raise TestException(1, "TestException: monitoringPostTest()")
finally:
return returnHttpResponseLogging(request, result)
@response_timer
@api_view(["POST"])
def monitoringPostTest(request):
try:
result = dict()
db = TestDB()
result['data'] = db.selectApiCallLog()
result['code'] = 200
result['message'] = 'OK'
logger.info("""HTTP method used: %s, client IP : %s, message : %s, code : %s""",request.method ,request.META['REMOTE_ADDR'], result['message'], result['code'])
except Exception as e:
result['code'] = 500
result['message'] = 'testMonitoring Internal Error'
logger.error(traceback.format_exc())
raise TestException(1, "TestException: monitoringPostTest()")
finally:
return returnHttpResponseLogging(request, result)
@response_timer
@api_view(["DELETE"])
def monitoringDeleteTest(request):
try:
result = dict()
db = TestDB()
result['data'] = db.selectApiCallLog()
result['code'] = 200
result['message'] = 'OK'
logger.info("""HTTP method used: %s, client IP : %s, message : %s, code : %s""",request.method ,request.META['REMOTE_ADDR'], result['message'], result['code'])
except Exception as e:
result['code'] = 500
result['message'] = 'testMonitoring Internal Error'
logger.error(traceback.format_exc())
raise TestException(1, "TestException: monitoring()")
finally:
return returnHttpResponseLogging(request, result)
@response_timer
@api_view(["PUT"])
def monitoringPutTest(request):
try:
result = dict()
db = TestDB()
result['data'] = db.selectApiCallLog()
result['code'] = 200
result['message'] = 'OK'
logger.info("""HTTP method used: %s, client IP : %s, message : %s, code : %s""",request.method ,request.META['REMOTE_ADDR'], result['message'], result['code'])
except Exception as e:
result['code'] = 500
result['message'] = 'testMonitoring Internal Error'
logger.error(traceback.format_exc())
raise TestException(1, "TestException: monitoringPostTest()")
finally:
return returnHttpResponseLogging(request, result)
def datetime_handler(x):
if isinstance(x, datetime.datetime):
return x.isoformat()
raise TypeError("Unknown type")