|
"""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) |
|
} |
|
|