alessandro trinca tornidor
feat: try moving lisa-on-cuda code within the project
8ced4d2
raw
history blame
1.89 kB
"""lambda helper functions"""
from typing import Dict
from lisa_on_cuda.utils.app_helpers import get_cleaned_input
from samgis_web.web.web_helpers import get_url_tile, get_source_name
from samgis_lisa import app_logger
from samgis_lisa.utilities.type_hints import StringPromptApiRequestBody
def get_parsed_bbox_points_with_string_prompt(request_input: StringPromptApiRequestBody) -> Dict:
"""
Parse the raw input request into bbox, prompt string and zoom
Args:
request_input: input dict
Returns:
dict with bounding box, prompt string and zoom
"""
app_logger.info(f"try to parsing input request: {type(request_input)}, {request_input}...")
if isinstance(request_input, str):
app_logger.info(f"string/json input, parsing it to {type(StringPromptApiRequestBody)}...")
request_input = StringPromptApiRequestBody.model_validate_json(request_input)
app_logger.info(f"parsed input, now of type {type(request_input)}...")
bbox = request_input.bbox
app_logger.debug(f"request bbox: {type(bbox)}, value:{bbox}.")
ne = bbox.ne
sw = bbox.sw
app_logger.debug(f"request ne: {type(ne)}, value:{ne}.")
app_logger.debug(f"request sw: {type(sw)}, value:{sw}.")
ne_latlng = [float(ne.lat), float(ne.lng)]
sw_latlng = [float(sw.lat), float(sw.lng)]
new_zoom = int(request_input.zoom)
cleaned_prompt = get_cleaned_input(request_input.string_prompt)
app_logger.debug(f"bbox => {bbox}.")
app_logger.debug(f'request_input-prompt cleaned => {cleaned_prompt}.')
app_logger.info("unpacking elaborated request...")
return {
"bbox": [ne_latlng, sw_latlng],
"prompt": cleaned_prompt,
"zoom": new_zoom,
"source": get_url_tile(request_input.source_type),
"source_name": get_source_name(request_input.source_type)
}