Skip to content

Commit 3fbe4b7

Browse files
authored
fix: freecall joining failed for user_org_group_id (#43)
fix: freecall joining failed for user_org_group_id
2 parents b841ed7 + d002508 commit 3fbe4b7

File tree

3 files changed

+30
-30
lines changed

3 files changed

+30
-30
lines changed

metering/handlers/usage_handler.py

Lines changed: 8 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,7 @@
44
from constants import StatusCode, StatusMessage
55
from logger import setup_logger
66
from services import UsageService
7-
from settings import PAYMENT_MODE_FREECALL_VALUE
8-
from utils import validate_request, make_response
7+
from utils import validate_request, make_response, usage_record_add_verify_fields
98

109
usage_service = UsageService()
1110

@@ -16,48 +15,31 @@
1615
'service_method', 'group_id', 'status', 'start_time', 'end_time']
1716

1817

19-
def add_verify_fields(usage_detail_dict):
20-
new_required_keys = {
21-
'usage_type', 'status', 'usage_value', 'start_time', 'end_time',
22-
'created_at', 'payment_mode', 'group_id', 'registry_address_key',
23-
'ethereum_json_rpc_endpoint', 'response_time', 'response_code', 'error_message',
24-
'version', 'client_type', 'user_details', 'channel_id', 'operation', 'user_address',
25-
'username', 'org_id', 'service_id', 'resource', 'request_id'
26-
}
27-
for key in new_required_keys:
28-
if (key not in usage_detail_dict) or (usage_detail_dict[key] == ""):
29-
usage_detail_dict[key] = None
30-
31-
if usage_detail_dict['username'] is not None and usage_detail_dict['user_address'] is None:
32-
usage_detail_dict['payment_mode'] = PAYMENT_MODE_FREECALL_VALUE
33-
else:
34-
usage_detail_dict['payment_mode'] = 'paid'
35-
return usage_detail_dict
36-
37-
3818
def main(event, context):
39-
usage_detail_dict = json.loads(event['body'])
19+
request_dict = json.loads(event['body'])
4020

4121
try:
42-
if validate_request(required_keys, usage_detail_dict):
43-
usage_detail_dict = add_verify_fields(usage_detail_dict)
22+
if validate_request(required_keys, request_dict):
23+
usage_detail_dict = usage_record_add_verify_fields(request_dict)
24+
logger.info(f"Modified usage record: {usage_detail_dict}")
4425
usage_service.save_usage_details(usage_detail_dict)
4526
response = make_response(
4627
StatusCode.SUCCESS_GET_CODE,
4728
json.dumps({"status": StatusMessage.SUCCESS_POST_CODE})
4829
)
4930
else:
50-
logger.error(f'Request validation failed {usage_detail_dict}')
31+
logger.error(f'Request validation failed {request_dict}')
5132
response = make_response(
5233
StatusCode.BAD_PARAMETERS_CODE,
5334
json.dumps({"status": StatusMessage.BAD_PARAMETER})
5435
)
5536
except Exception as e:
5637
logger.error(e)
57-
logger.error(f'failed for request {usage_detail_dict}')
38+
logger.error(f'failed for request {request_dict}')
5839
response = make_response(
5940
StatusCode.SERVER_ERROR_CODE,
6041
json.dumps({"status": StatusMessage.SERVER_ERROR_MSG})
6142
)
6243

6344
return response
45+

metering/storage.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,16 +36,14 @@ def get_user_org_group_id(self, usage_details):
3636
usage_details['service_id'],
3737
usage_details['service_method']
3838
)
39-
elif usage_details['user_address'] is None:
39+
else:
4040
user_org_group_id = self.user_org_group_repo.get_user_org_group_id_by_user_address(
4141
usage_details['user_address'],
4242
usage_details['organization_id'],
4343
usage_details['service_id'],
4444
usage_details['service_method'],
4545
usage_details['group_id']
4646
)
47-
else:
48-
raise Exception('Unknown user request error')
4947

5048
if user_org_group_id is not None:
5149
return user_org_group_id.id
@@ -101,7 +99,8 @@ def add_usage_data(self, usage_details):
10199
user_name=usage_details["username"],
102100
service_id=usage_details["service_id"],
103101
resource=usage_details["service_method"],
104-
request_id=usage_details["request_id"]
102+
request_id=usage_details["request_id"],
103+
payment_mode=usage_details["payment_mode"]
105104
)
106105
self.usage_repo.create_item(usage_record)
107106
logger.info(f"added usage data for {usage_details}")

metering/utils.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,3 +40,22 @@ def is_free_call(usage_details_dict):
4040
if usage_details_dict['payment_mode'] == PAYMENT_MODE_FREECALL_VALUE:
4141
return True
4242
return False
43+
44+
45+
def usage_record_add_verify_fields(usage_detail_dict):
46+
new_required_keys = {
47+
'usage_type', 'status', 'usage_value', 'start_time', 'end_time',
48+
'created_at', 'payment_mode', 'group_id', 'registry_address_key',
49+
'ethereum_json_rpc_endpoint', 'response_time', 'response_code', 'error_message',
50+
'version', 'client_type', 'user_details', 'channel_id', 'operation', 'user_address',
51+
'username', 'org_id', 'service_id', 'resource', 'request_id'
52+
}
53+
for key in new_required_keys:
54+
if (key not in usage_detail_dict) or (usage_detail_dict[key] == ""):
55+
usage_detail_dict[key] = None
56+
57+
if usage_detail_dict['username'] is not None and usage_detail_dict['user_address'] is None:
58+
usage_detail_dict['payment_mode'] = PAYMENT_MODE_FREECALL_VALUE
59+
else:
60+
usage_detail_dict['payment_mode'] = 'paid'
61+
return usage_detail_dict

0 commit comments

Comments
 (0)