Skip to content

Commit b29b4d1

Browse files
committed
review changes
1 parent 5013bec commit b29b4d1

File tree

4 files changed

+64
-61
lines changed

4 files changed

+64
-61
lines changed

metering/constants.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
class StatusCode:
2+
BAD_PARAMETERS_CODE = 400
3+
SERVER_ERROR_CODE = 500
4+
SUCCESS_POST_CODE = 201
5+
SUCCESS_GET_CODE = 200
6+
7+
8+
class StatusMessage:
9+
BAD_PARAMETER = "Request validation failed"
10+
SERVER_ERROR_MSG = "failed"
11+
SUCCESS_POST_CODE = "successful"
Lines changed: 20 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,59 +1,44 @@
11
import json
22
import logging
33

4+
from constants import StatusCode, StatusMessage
45
from services import UsageService
56
from logger import setup_logger
6-
from utils import validate_freecalls_request
7+
from utils import validate_request, make_freecalls_response
78

89
usage_service = UsageService()
910

1011
setup_logger()
1112
logger = logging.getLogger(__name__)
1213

14+
required_keys = ['username', 'organization_id', 'service_id']
15+
1316

1417
def main(event, context):
15-
if validate_freecalls_request(event['queryStringParameters']):
18+
if validate_request(event['queryStringParameters']):
1619
try:
1720
org_id = event['queryStringParameters']['organization_id']
1821
service_id = event['queryStringParameters']['service_id']
1922
username = event['queryStringParameters']['username']
2023
free_call_details = usage_service.get_free_call_details(
2124
username, org_id, service_id)
22-
return_value = {
23-
"statusCode": 200,
24-
"headers": {
25-
"Content-Type": "application/json",
26-
"Access-Control-Allow-Origin": "*",
27-
"Access-Control-Allow-Methods": "OPTIONS,POST,GET"
28-
},
29-
"body": json.dumps(free_call_details)
30-
}
25+
return_value = make_freecalls_response(
26+
StatusCode.SUCCESS_GET_CODE,
27+
json.dumps(free_call_details)
28+
)
29+
3130
except Exception as e:
3231
logger.error(e)
33-
return_value = {
34-
"statusCode": 500,
35-
"headers": {
36-
"Content-Type": "application/json",
37-
"Access-Control-Allow-Origin": "*",
38-
"Access-Control-Allow-Methods": "OPTIONS,POST,GET"
39-
},
40-
"body": json.dumps({
41-
'status': "failed",
42-
'error': "Internal server error"
43-
})
44-
}
32+
return_value = make_freecalls_response(
33+
StatusCode.SERVER_ERROR_CODE,
34+
json.dumps({"error": StatusMessage.SERVER_ERROR_MSG})
35+
)
36+
4537
else:
4638
logger.error('Request validation failed')
47-
return_value = {
48-
"statusCode": 400,
49-
"headers": {
50-
"Content-Type": "application/json",
51-
"Access-Control-Allow-Origin": "*",
52-
"Access-Control-Allow-Methods": "OPTIONS,POST,GET"
53-
},
54-
"body": json.dumps({
55-
'status': "failed",
56-
'error': "Validation failed"
57-
})
58-
}
39+
return_value = make_freecalls_response(
40+
StatusCode.BAD_PARAMETERS_CODE,
41+
json.dumps({"error": StatusMessage.BAD_PARAMETER})
42+
)
43+
5944
return return_value

metering/handlers/usage_handler.py

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,42 @@
11
import json
22
import logging
33

4+
from constants import StatusCode, StatusMessage
45
from logger import setup_logger
56
from services import UsageService
6-
from utils import validate_usage_body
7+
from utils import validate_request, make_record_usage_response
78

89
usage_service = UsageService()
910

1011
setup_logger()
1112
logger = logging.getLogger(__name__)
1213

14+
required_keys = ["organization_id", "service_id", "username", 'usage_value', 'usage_type',
15+
'service_method', 'group_id', 'status', 'start_time', 'end_time']
16+
1317

1418
def main(event, context):
1519
usage_detail_dict = json.loads(event['body'])
1620

1721
try:
18-
if validate_usage_body(usage_detail_dict):
22+
if validate_request(usage_detail_dict):
1923
usage_service.save_usage_details(usage_detail_dict)
20-
response = {
21-
"statusCode": 201,
22-
"body": json.dumps({"status": "successful"})
23-
}
24+
response = make_record_usage_response(
25+
StatusCode.SUCCESS_GET_CODE,
26+
json.dumps({"status": StatusMessage.SUCCESS_POST_CODE})
27+
)
2428
else:
2529
logger.error(f'Request validation failed {usage_detail_dict}')
26-
response = {
27-
"statusCode": 400,
28-
"body": json.dumps({"status": "request validation failed"})
29-
}
30+
response = make_record_usage_response(
31+
StatusCode.BAD_PARAMETERS_CODE,
32+
json.dumps({"status": StatusMessage.BAD_PARAMETER})
33+
)
3034
except Exception as e:
3135
logger.error(e)
3236
logger.error(f'failed for request {usage_detail_dict}')
33-
response = {
34-
"statusCode": 500,
35-
"body": json.dumps({"status": "failed"})
36-
}
37+
response = make_record_usage_response(
38+
StatusCode.SERVER_ERROR_CODE,
39+
json.dumps({"status": StatusMessage.SERVER_ERROR_MSG})
40+
)
3741

3842
return response

metering/utils.py

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,26 @@
1+
import json
12
import logging
23

34

4-
def make_response(status_code, body):
5+
def make_record_usage_response(status_code, body):
56
return {
67
"statusCode": status_code,
78
"body": body
89
}
910

1011

12+
def make_freecalls_response(status_code, body):
13+
return {
14+
"statusCode": status_code,
15+
"headers": {
16+
"Content-Type": "application/json",
17+
"Access-Control-Allow-Origin": "*",
18+
"Access-Control-Allow-Methods": "OPTIONS,POST,GET"
19+
},
20+
"body": body
21+
}
22+
23+
1124
def configure_log(logger):
1225
logger.setLevel(logging.INFO)
1326

@@ -22,22 +35,12 @@ def configure_log(logger):
2235
logger.addHandler(handler)
2336

2437

25-
def validate_usage_body(request_body):
26-
required_keys = ["organization_id", "service_id", "username", 'usage_value', 'usage_type',
27-
'service_method', 'group_id', 'status', 'start_time', 'end_time']
38+
def validate_request(required_keys, request_body):
2839
for key in required_keys:
2940
if key not in request_body:
3041
return False
3142
return True
3243

3344

34-
def validate_freecalls_request(request):
35-
required_keys = ['username', 'organization_id', 'service_id']
36-
for key in required_keys:
37-
if key not in request:
38-
return False
39-
return True
40-
41-
4245
def validator_usage():
4346
pass

0 commit comments

Comments
 (0)