Skip to content

Commit ac3e784

Browse files
pjewaldzfi
authored andcommitted
Refactor string to int conversions to use ValueError exception. Update PyDocs in the failures module to describe the return types.
1 parent 3e41ca2 commit ac3e784

File tree

4 files changed

+93
-69
lines changed

4 files changed

+93
-69
lines changed

Failures.py

Lines changed: 87 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -1,101 +1,122 @@
11
import logging
2+
'''
3+
Failure messages
4+
5+
These functions provide for a standard return message for all known
6+
and expected error conditions.
7+
8+
The return payload is a JSON document and an HTTP error code. The JSON
9+
document includes these elements:
10+
11+
success - boolean
12+
message - a short message that uniquely identifies the error
13+
code - a distrinct return code that allows the client to act on
14+
then specic error condition encountered.
15+
field - optional data element that identified the name of the
16+
data element involved in the error.
17+
data - optional data element that provides an id or key value
18+
for the data set being processed when the error occurred.
19+
20+
'''
221

322

423
def unknown_user_id(id_user):
524
logging.debug('Failures: Unknown user id: %s', id_user)
625
return {
7-
'success': False,
8-
'message': 'Unknown user',
9-
'code': 400,
10-
'data': id_user
11-
}, 500
26+
'success': False,
27+
'message': 'Unknown user',
28+
'code': 400,
29+
'data': id_user
30+
}, 500
1231

1332

1433
def unknown_user_email(email):
1534
logging.debug('Failures: Unknown user email: %s', email)
1635
return {
17-
'success': False,
18-
'message': 'Unknown user',
19-
'code': 400,
20-
'data': email
21-
}, 500
36+
'success': False,
37+
'message': 'Unknown user',
38+
'code': 400,
39+
'data': email
40+
}, 500
2241

2342

2443
def unknown_user_screen_name(screen_name):
2544
logging.debug('Failures: Unknown user by screen name: %s', screen_name)
2645
return {
27-
'success': False,
28-
'message': 'Unknown user screen name',
29-
'code': 400,
30-
'data': screen_name
31-
}, 500
46+
'success': False,
47+
'message': 'Unknown user screen name',
48+
'code': 400,
49+
'data': screen_name
50+
}, 500
3251

3352

3453
def email_already_in_use(email):
3554
logging.debug('Failures: Email already in use: %s', email)
3655
return {
37-
'success': False,
38-
'message': 'Email already in use',
39-
'code': 450,
40-
'data': email
41-
}, 500
56+
'success': False,
57+
'message': 'Email already in use',
58+
'code': 450,
59+
'data': email
60+
}, 500
4261

4362

4463
def email_not_confirmed(email):
4564
logging.debug('Failures: Email %s not confirmed', email)
4665
return {
47-
'success': False,
48-
'message': 'Email not confirmed',
49-
'code': 430
50-
}, 401
66+
'success': False,
67+
'message': 'Email not confirmed',
68+
'code': 430,
69+
'data': email
70+
}, 401
5171

5272

5373
def user_blocked(email):
5474
logging.debug('Failures: User %s blocked', email)
5575
return {
56-
'success': False,
57-
'message': 'User is blocked',
58-
'code': 420
59-
}, 401
76+
'success': False,
77+
'message': 'User is blocked',
78+
'code': 420,
79+
'data': email
80+
}, 401
6081

6182

6283
def not_a_number(field, value):
6384
logging.error('Failures: Not a valid number: %s -> %s', field, value)
6485
return {
65-
'success': False,
66-
'message': 'Not a valid number',
67-
'code': 310,
68-
'field': field,
69-
'value': value
70-
}, 400
86+
'success': False,
87+
'message': 'Not a valid number',
88+
'code': 310,
89+
'field': field,
90+
'value': value
91+
}, 400
7192

7293

7394
def passwords_do_not_match():
7495
logging.debug('Failures: Passwords do not match')
7596
return {
76-
'success': False,
77-
'message': "Password confirm doesn't match",
78-
'code': 460
79-
}, 500
97+
'success': False,
98+
'message': "Password confirm doesn't match",
99+
'code': 460
100+
}, 500
80101

81102

82103
def password_complexity():
83104
logging.debug('Failures: Password is not complex enough')
84105
return {
85-
'success': False,
86-
'message': "Password is not complex enough",
87-
'code': 490
88-
}, 500
106+
'success': False,
107+
'message': "Password is not complex enough",
108+
'code': 490
109+
}, 500
89110

90111

91112
def screen_name_already_in_use(screen_name):
92113
logging.debug('Failures: Screen name already in use: %s', screen_name)
93114
return {
94-
'success': False,
95-
'message': "Screenname already in use",
96-
'data': screen_name,
97-
'code': 500
98-
}, 500
115+
'success': False,
116+
'message': "Screenname already in use",
117+
'code': 500,
118+
'data': screen_name
119+
}, 500
99120

100121

101122
def rate_exceeded(time):
@@ -106,37 +127,38 @@ def rate_exceeded(time):
106127
"""
107128
logging.debug('Failures: Rate exceeded')
108129
return {
109-
'success': False,
110-
'message': 'Insufficient bucket tokens',
111-
'data': time,
112-
'code': 470
113-
}, 500
130+
'success': False,
131+
'message': 'Insufficient bucket tokens',
132+
'code': 470,
133+
'data': time
134+
}, 500
114135

115136

116137
def wrong_password(email):
117138
logging.debug('Failures: Wrong password for %s', email)
118139
return {
119-
'success': False,
120-
'message': 'Wrong password',
121-
'code': 410
140+
'success': False,
141+
'message': 'Wrong password',
142+
'code': 410,
143+
'data': email
122144
}, 401
123145

124146

125147
def unknown_bucket_type(bucket_type):
126148
logging.debug('Failures: Unknown bucket type: %s', bucket_type)
127149
return {
128-
'success': False,
129-
'message': 'Unknown bucket type',
130-
'code': 180,
131-
'data': bucket_type
132-
}, 500
150+
'success': False,
151+
'message': 'Unknown bucket type',
152+
'code': 180,
153+
'data': bucket_type
154+
}, 500
133155

134156

135157
def wrong_auth_source(auth_source):
136158
logging.debug('Failures: Wrong auth source: %s', auth_source)
137159
return {
138-
'success': False,
139-
'message': 'Wrong auth source',
140-
'code': 480,
141-
'data': auth_source
142-
}, 500
160+
'success': False,
161+
'message': 'Wrong auth source',
162+
'code': 480,
163+
'data': auth_source
164+
}, 500

app/AuthToken/controllers.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ def post(self):
3939
# Parse numbers
4040
try:
4141
id_user = int(id_user)
42-
except:
42+
except ValueError:
4343
return Failures.not_a_number('idUser', id_user)
4444

4545
# Validate user exists, is validated and is not blocked

app/RateLimiting/controllers.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,12 +76,12 @@ def get(self, bucket_type, id_user, count):
7676
# Parse numbers
7777
try:
7878
id_user = int(id_user)
79-
except:
79+
except ValueError:
8080
return Failures.not_a_number('idUser', id_user)
8181

8282
try:
8383
count = int(count)
84-
except:
84+
except ValueError:
8585
return Failures.not_a_number('count', count)
8686

8787
# Validate user exists, is validated and is not blocked

app/__init__.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,13 @@
2424
app = Flask(__name__)
2525

2626
# Application version (major,minor,patch-level)
27-
version = "1.1.8"
27+
version = "1.1.9"
2828

2929
"""
3030
Change Log
3131
32+
1.1.9 Update failure module to include missing return elements.
33+
3234
1.1.8 Fail any attempt to reset an account password is the account
3335
email address has not yet been confirmed.
3436

0 commit comments

Comments
 (0)