Skip to content

Commit

Permalink
Merge pull request #20 from lalithkota/release-1.0.0
Browse files Browse the repository at this point in the history
[MOSIP-23986][MOSIP-23937] Added version in conf. Added validation for nested values
  • Loading branch information
pjoshi751 authored Sep 27, 2022
2 parents 6ae90f8 + 94c3978 commit a417227
Show file tree
Hide file tree
Showing 7 changed files with 38 additions and 15 deletions.
2 changes: 1 addition & 1 deletion mosip_token_seeder/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ def init_app(config):
"""
app = FastAPI(
title="MOSIP Token Seeder",
version='0.1.0',
version=config.root.version,
description=description,
contact={
"url": "https://mosip.io/contact.php",
Expand Down
2 changes: 1 addition & 1 deletion mosip_token_seeder/authtokenapi/authfields.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,6 @@ class AuthFieldsApi:
def __init__(self, app, config, logger):
@app.get(config.root.api_path_prefix + "authtoken/authfields", response_model=BaseHttpResponse)
def get_auth_fields():
return BaseHttpResponse(response={
return BaseHttpResponse(version=config.root.version, response={
'authfields': list(MapperFields.__fields__.keys())
})
7 changes: 4 additions & 3 deletions mosip_token_seeder/authtokenapi/authtoken.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,15 @@
class AuthTokenApi:
def __init__(self, app, config, logger, request_id_queue):
self.authtoken_service = AuthTokenService(config, logger, request_id_queue)
self.config = config

@app.post(config.root.api_path_prefix + "authtoken/json", response_model=BaseHttpResponse, responses={422:{'model': BaseHttpResponse}})
async def authtoken_json(request : AuthTokenHttpRequest = None):
if not request:
raise MOSIPTokenSeederException('ATS-REQ-102', 'mission request body')
##call service to save the details.
request_identifier = self.authtoken_service.save_authtoken_json(request.request)
return BaseHttpResponse(response={
return BaseHttpResponse(version=self.config.root.version, response={
'request_identifier': request_identifier
})

Expand All @@ -30,7 +31,7 @@ async def authtoken_csv(request : Json[AuthTokenCsvHttpRequest] = Form(None), cs
if not csv_file:
raise MOSIPTokenSeederException('ATS-REQ-102', 'Requires CSV file')
request_identifier = self.authtoken_service.save_authtoken_csv(request.request, csv_file)
return BaseHttpResponse(response={
return BaseHttpResponse(version=self.config.root.version, response={
'request_identifier': request_identifier
})

Expand All @@ -42,6 +43,6 @@ async def authtoken_odk(request : AuthTokenODKHttpRequest = None):
# raise MOSIPTokenSeederException('ATS-REQ-102', 'Missing request body.')

request_identifier = self.authtoken_service.save_authtoken_odk(request.request)
return BaseHttpResponse(response={
return BaseHttpResponse(version=self.config.root.version, response={
'request_identifier': request_identifier
})
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ async def tokenseeder_exception_handler(request, exc):
status_code = 400
response = None
res = BaseHttpResponse(
version=self.config.root.version,
errors=[
BaseError(
errorCode=code,
Expand All @@ -48,6 +49,7 @@ async def validation_exception_handler(request, exc : RequestValidationError):
errorMessage='%s. %s. %s' % ('->'.join([str(i) for i in err['loc']]), str(err['type']), str(err['msg']))
))
res = BaseHttpResponse(
version=self.config.root.version,
errors=errors,
response=None
)
Expand All @@ -65,6 +67,7 @@ async def unknown_exception_handler(request, exc):
code = 'ATS-REQ-100'
message = l[0]
res = BaseHttpResponse(
version=self.config.root.version,
errors=[
BaseError(
errorCode=code,
Expand Down
36 changes: 27 additions & 9 deletions mosip_token_seeder/authtokenapi/service/mapping_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,17 +25,22 @@ def validate_auth_data_json_mapper(self, authdata : dict, mapping: MapperFields,
final_dict = {}

if mapping.vid.find('.') !=-1:
final_dict['vid'] = self.extract_nested_value(mapping.vid, authdata, mapping)
nest_value = self.extract_nested_value(mapping.vid, authdata, mapping)
if not nest_value:
return None, 'ATS-REQ-009', 'vid or its mapping not present'
final_dict['vid'] = nest_value
else :
if mapping.vid not in authdata:
return None, 'ATS-REQ-009', 'vid or its mapping not present'
if len(authdata[mapping.vid]) == 0:
return None, 'ATS-REQ-009', 'vid or its mapping not present'
# if len(authdata[mapping.vid]) <= 16 and len(authdata[mapping.vid]) >= 19:
# return None, 'ATS-REQ-002'
final_dict['vid'] = authdata[mapping.vid]

name_arr = []
for name_var in mapping.name:
if name_var.find('.') != -1 :
if name_var.find('.') != -1 :
name_val = self.extract_nested_value(name_var, authdata, mapping)
if name_val:
name_arr.append(name_val )
Expand All @@ -45,12 +50,16 @@ def validate_auth_data_json_mapper(self, authdata : dict, mapping: MapperFields,
if len(authdata[name_var]) == 0:
return None, 'ATS-REQ-003', 'name is not provided'
name_arr.append(authdata[name_var])

if len(name_arr) == 0:
return None, 'ATS-REQ-010', 'name or its mapping not present'
final_dict['name'] = [{'language':language,'value': self.config.root.name_delimiter.join(name_arr)}]


if mapping.gender.find('.') != -1 :
final_dict['gender'] = [{'language':language,'value': self.extract_nested_value(mapping.gender, authdata, mapping) }]
nest_value = [{'language':language,'value': self.extract_nested_value(mapping.gender, authdata, mapping) }]
if not nest_value:
return None, 'ATS-REQ-011', 'gender or its mapping not present'
final_dict['gender'] = nest_value
else :
if mapping.gender not in authdata:
return None, 'ATS-REQ-011', 'gender or its mapping not present'
Expand All @@ -62,8 +71,11 @@ def validate_auth_data_json_mapper(self, authdata : dict, mapping: MapperFields,
# return None, 'ATS-REQ-005'
final_dict['gender'] = [{'language':language,'value': authdata[mapping.gender]}]

if mapping.dob.find('.') != -1 :
final_dict['dob'] = self.extract_nested_value(mapping.dob, authdata, mapping)
if mapping.dob.find('.') != -1 :
nest_value = self.extract_nested_value(mapping.dob, authdata, mapping)
if not nest_value:
return None, 'ATS-REQ-012', 'dateOfBirth or its mapping not present'
final_dict['dob'] = nest_value
else:
if mapping.dob not in authdata:
return None, 'ATS-REQ-012', 'dateOfBirth or its mapping not present'
Expand All @@ -76,15 +88,19 @@ def validate_auth_data_json_mapper(self, authdata : dict, mapping: MapperFields,
# return None, 'ATS-REQ-007'
final_dict['dob'] = authdata[mapping.dob]

if mapping.phoneNumber.find('.') != -1 :
final_dict['phoneNumber'] = self.extract_nested_value(mapping.phoneNumber, authdata, mapping)
if mapping.phoneNumber.find('.') != -1 :
nest_value = self.extract_nested_value(mapping.phoneNumber, authdata, mapping)
if nest_value:
final_dict['phoneNumber'] = nest_value
else:
if mapping.phoneNumber in authdata:
# return None, 'ATS-REQ-013' // removed phone validation
final_dict['phoneNumber'] = authdata[mapping.phoneNumber]

if mapping.emailId.find('.') != -1 :
final_dict['emailId'] = self.extract_nested_value(mapping.emailId, authdata, mapping)
nest_value = self.extract_nested_value(mapping.emailId, authdata, mapping)
if nest_value:
final_dict['emailId'] = nest_value
else :
if mapping.emailId in authdata:
# return None, 'ATS-REQ-014' // removed email validation
Expand All @@ -102,6 +118,8 @@ def validate_auth_data_json_mapper(self, authdata : dict, mapping: MapperFields,
if len(authdata[addr]) == 0:
return False, 'ATS-REQ-008', 'address is empty'
addr_arr.append(authdata[addr])
if len(addr_arr) == 0:
return None, 'ATS-REQ-015', 'fullAddress or its mapping not present'
final_dict['fullAddress'] = [{'language':language,'value': self.config.root.full_address_delimiter.join(addr_arr)}]

return AuthTokenBaseModel(**final_dict),'', ''
Expand Down
2 changes: 1 addition & 1 deletion mosip_token_seeder/authtokenapi/status.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,6 @@ def __init__(self, app, config, logger, authtoken_service : AuthTokenService):
async def fetch_status(id):
# self.logger.info("Status api called. Req id :",id)
status = self.authtoken_service.fetch_status(id)
return BaseHttpResponse(response={
return BaseHttpResponse(version=config.root.version, response={
'status': status
})
1 change: 1 addition & 0 deletions mosip_token_seeder/config.toml
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
[root]
version = '1.0.0'
context_path = '/'
api_path_prefix = '/'
pid_grep_name = 'gunicorn'
Expand Down

0 comments on commit a417227

Please sign in to comment.