Skip to content

Commit 80a3fb8

Browse files
yuvallevy2Yuval Levy
andauthored
freeze all dependencies and handle cases with non json input (#24)
* freeze all dependencies and handle cases with non json input * CR --------- Co-authored-by: Yuval Levy <[email protected]>
1 parent aeca156 commit 80a3fb8

File tree

2 files changed

+49
-6
lines changed

2 files changed

+49
-6
lines changed

app.py

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import threading
33
import time
44
import subprocess
5+
import json
56
try:
67
# Python 2.x
78
from urlparse import urlparse
@@ -88,6 +89,15 @@ def return_code(self):
8889
return self._return_code
8990

9091

92+
def _get_request_json():
93+
if request.is_json:
94+
return request.get_json()
95+
data = request.data
96+
if isinstance(data, bytes):
97+
data = data.decode('utf-8')
98+
return json.loads(data)
99+
100+
91101
def _execute(command: str):
92102
success = False
93103
try:
@@ -111,7 +121,15 @@ def _execute(command: str):
111121

112122
@app.route('/execute', methods=['POST'])
113123
def execute():
114-
req = request.get_json()
124+
try:
125+
req = _get_request_json()
126+
except Exception as err:
127+
app.logger.exception("_get_request_json err")
128+
return jsonify({
129+
'response': 'Exception: %s' % str(err),
130+
'success': False
131+
})
132+
115133
response, success = _execute(req['command'])
116134

117135
return jsonify({
@@ -124,7 +142,15 @@ def execute():
124142
def batch_execute():
125143
all_succeeded = True
126144
responses = []
127-
req = request.get_json()
145+
try:
146+
req = _get_request_json()
147+
except Exception as err:
148+
app.logger.exception("_get_request_json err")
149+
return jsonify({
150+
'response': 'Exception: %s' % str(err),
151+
'success': False
152+
})
153+
128154
commands = req['commands']
129155
for command in commands:
130156
response, success = _execute(command)

requirements.txt

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,21 @@
1-
flask
2-
flask_redis
3-
flask_redis_sentinel
4-
flask_bootstrap
1+
flask==3.0.3
2+
flask_redis==0.4.0
3+
flask_redis_sentinel==2.0.1
4+
flask_bootstrap==3.3.7.1
5+
async-timeout==4.0.3
6+
blinker==1.8.1
7+
click==8.1.7
8+
dominate==2.9.1
9+
importlib_metadata==7.1.0
10+
itsdangerous==2.2.0
11+
Jinja2==3.1.4
12+
MarkupSafe==2.1.5
13+
pip==23.0.1
14+
redis==5.0.4
15+
Redis-Sentinel-Url==1.0.1
16+
setuptools==57.5.0
17+
six==1.16.0
18+
visitor==0.1.3
19+
Werkzeug==3.0.3
20+
wheel==0.43.0
21+
zipp==3.18.1

0 commit comments

Comments
 (0)