Work on site domain FQDN lookup with referrer. For some reason being passed as None.

This commit is contained in:
Scott Idem
2022-02-07 16:11:45 -05:00
parent 7ee782fb6a
commit 02a8948ee4

View File

@@ -77,7 +77,8 @@ async def patch_site_domain_obj(
async def lookup_site_domain_obj( async def lookup_site_domain_obj(
fqdn: str, fqdn: str,
access_key: Optional[str] = Query(None, min_length=4, max_length=50), access_key: Optional[str] = Query(None, min_length=4, max_length=50),
referrer: Optional[str] = None, referrer: Optional[str] = Query(None, min_length=8, max_length=150),
referer: Optional[str] = Query(None, min_length=8, max_length=150),
x_account_id: str = Header(...), x_account_id: str = Header(...),
by_alias: bool = True, by_alias: bool = True,
exclude_unset: bool = True, exclude_unset: bool = True,
@@ -90,32 +91,60 @@ async def lookup_site_domain_obj(
data = {} data = {}
data['fqdn'] = fqdn data['fqdn'] = fqdn
data['domain_access_key'] = access_key data['domain_access_key'] = access_key
data['required_referrer'] = referrer if referrer: # This should work...
data['required_referrer'] = referrer
data['required_referer'] = referrer
elif referer: # This should not be needed...
referrer = referer
data['required_referrer'] = referer
data['required_refer'] = referer
log.debug(data)
if access_key: if access_key and referrer:
#sql_domain_access_key = 'AND site_domain.domain_access_key = :domain_access_key' sql_access_key_referrer = """
AND site_domain.domain_access_key = :domain_access_key
sql_domain_access_key = """ AND site_domain.required_referrer = :required_referrer
AND (site_domain.domain_access_key = :domain_access_key AND (site_domain.required_referrer IS NULL OR site_domain.required_referrer = '')) """
OR (site_domain.domain_access_key = :domain_access_key AND site_domain.required_referrer = :required_referrer) elif access_key:
sql_access_key_referrer = """
AND site_domain.domain_access_key = :domain_access_key
"""
elif referrer:
sql_access_key_referrer = """
AND site_domain.required_referrer = :required_referrer
""" """
else: else:
sql_domain_access_key = 'AND site_domain.domain_access_key IS NULL' sql_access_key_referrer = """
#if referrer: AND (site_domain.domain_access_key IS NULL OR site_domain.domain_access_key = '')
# sql_referrer = 'AND site_domain.required_referrer = :required_referrer' AND (site_domain.required_referrer IS NULL OR site_domain.required_referrer = '')
"""
# if access_key:
# #sql_access_key_referrer = 'AND site_domain.domain_access_key = :domain_access_key'
# sql_access_key_referrer = """
# AND (site_domain.domain_access_key = :domain_access_key AND (site_domain.required_referrer IS NULL OR site_domain.required_referrer = ''))
# OR (site_domain.domain_access_key = :domain_access_key AND site_domain.required_referrer = :required_referrer)
# """
# else:
# sql_access_key_referrer = 'AND site_domain.domain_access_key IS NULL'
# #if referrer:
# # sql_referrer = 'AND site_domain.required_referrer = :required_referrer'
sql = f""" sql = f"""
SELECT *, site_enable_from AS 'enable_from', site_enable_to AS 'enable_to' SELECT *, site_enable_from AS 'enable_from', site_enable_to AS 'enable_to'
FROM `v_site_domain` AS site_domain FROM `v_site_domain` AS site_domain
WHERE site_domain.fqdn = :fqdn WHERE site_domain.fqdn = :fqdn
{sql_domain_access_key} {sql_access_key_referrer}
; ;
""" """
log.debug(sql) log.debug(sql)
# NOTE: This need to broken out into a methods function for site and or site_domain # NOTE: This need to broken out into a methods function for site and or site_domain
if site_domain_obj_result := sql_select(data=data, sql=sql): if site_domain_obj_result := sql_select(data=data, sql=sql):
log.info('')
if isinstance(site_domain_obj_result, dict): if isinstance(site_domain_obj_result, dict):
log.info('Got a site domain result')
try: try:
site_obj = Site_Base(**site_domain_obj_result).dict(by_alias=by_alias, exclude_unset=exclude_unset, exclude_none=exclude_none) site_obj = Site_Base(**site_domain_obj_result).dict(by_alias=by_alias, exclude_unset=exclude_unset, exclude_none=exclude_none)
log.debug(site_obj) log.debug(site_obj)
@@ -131,10 +160,16 @@ async def lookup_site_domain_obj(
log.debug(site_domain_obj) log.debug(site_domain_obj)
return mk_resp(data=site_domain_obj, response=response) return mk_resp(data=site_domain_obj, response=response)
elif isinstance(site_domain_obj_result, list):
log.info('Got multiple site domain results')
log.warning(f'More than one site domain records were returned. This was unexpected and needs to be corrected. FQDN: {fqdn}')
site_domain_obj_li = site_domain_obj_result
return mk_resp(data=site_domain_obj_li, response=response)
else: else:
log.error(f'More than one site domain records were returned. This was unexpected and needs to be corrected. FQDN: {fqdn}') log.error(f'Unexpected results for the site domain records was returned. FQDN: {fqdn}; Access Key {access_key}; Referrer: {referrer}')
return mk_resp(data=False, status_code=500, status_message='More than one site domain was returned. This was unexpected and needs to be corrected.', response=response) return mk_resp(data=False, status_code=500, status_message=f'Unexpected results for the site domain records was returned. FQDN: {fqdn}; Access Key {access_key}; Referrer: {referrer}', response=response)
else: else:
log.info('No site domain results')
log.debug(site_domain_obj_result) log.debug(site_domain_obj_result)
return mk_resp(data=False, status_code=404, response=response) return mk_resp(data=False, status_code=404, response=response)