in geocoding_lambda/lambda_function.py [0:0]
def handler(event, context):
logger = logging.getLogger(__name__)
arguments = event["arguments"]
logger.debug('Received arguments: %s.', arguments)
results = []
try:
for arg in arguments:
text = arg[0]
logger.debug('Received search text: %s.', text)
req = {'Text': text, 'IndexName': PLACE_INDEX}
is_arg_valid, bias_position = validate_bias_position_arg(arg[1])
if is_arg_valid:
logger.debug('Received bias position: %s.', bias_position)
req['BiasPosition'] = bias_position
is_arg_valid, filter_countries = validate_filter_countries_arg(arg[2])
if is_arg_valid:
logger.debug('Received filter countries: %s.', filter_countries)
req['FilterCountries'] = filter_countries
response = client.search_place_index_for_text(**req)
logger.debug('Response received from ALS client: %s.', response)
if len(response["Results"]) >= 1:
results.append(json.dumps({
"Longitude": response["Results"][0]["Place"]["Geometry"]["Point"][0],
"Latitude": response["Results"][0]["Place"]["Geometry"]["Point"][1],
"Label": response["Results"][0]["Place"]["Label"]
}))
else:
results.append({})
logger.debug('Returning results: %s.', results)
return json.dumps({
"success": True,
"num_records": len(results),
"results": results
})
except ClientError as e:
logger.error('Error: %s.', e)
return json.dumps({
"success": False,
"error_msg": str(e),
"num_records": 0,
"results": []
})