aletrn commited on
Commit
2d0111c
·
1 Parent(s): b393c95

[refactor] prepare openapi swagger: rename RawRequestInput type to ApiRequestBody, add ApiResponseBodyFailure and ApiResponseBodySuccess types

Browse files
src/io/lambda_helpers.py CHANGED
@@ -6,7 +6,7 @@ from xyzservices import providers
6
  from src import app_logger
7
  from src.io.coordinates_pixel_conversion import get_latlng_to_pixel_coordinates
8
  from src.utilities.constants import CUSTOM_RESPONSE_MESSAGES
9
- from src.utilities.type_hints import RawRequestInput
10
  from src.utilities.utilities import base64_decode
11
 
12
 
@@ -42,7 +42,7 @@ def get_response(status: int, start_time: float, request_id: str, response_body:
42
  return dumps(response)
43
 
44
 
45
- def get_parsed_bbox_points(request_input: RawRequestInput) -> Dict:
46
  """
47
  Parse the raw input request into bbox, prompt and zoom
48
 
@@ -88,7 +88,7 @@ def _get_parsed_prompt_list(bbox_ne, bbox_sw, zoom, prompt_list):
88
  elif prompt.type == "rectangle":
89
  new_prompt_data = _get_new_prompt_data_rectangle(bbox_ne, bbox_sw, prompt, zoom)
90
  else:
91
- msg = "Valid prompt type: 'point' or 'rectangle', not '{}'. Check RawRequestInput parsing/validation."
92
  raise TypeError(msg.format(prompt.type))
93
  app_logger.debug(f"new_prompt_data: {type(new_prompt_data)}, value:{new_prompt_data}.")
94
  new_prompt["data"] = new_prompt_data
@@ -118,7 +118,7 @@ def _get_new_prompt_data_rectangle(bbox_ne, bbox_sw, prompt, zoom):
118
  ]
119
 
120
 
121
- def get_parsed_request_body(event: Dict or str) -> RawRequestInput:
122
  """
123
  Validator for the raw input request lambda event
124
 
@@ -144,7 +144,7 @@ def get_parsed_request_body(event: Dict or str) -> RawRequestInput:
144
  raw_body = loads(body_decoded_str)
145
  app_logger.info(f"body, #2: {type(raw_body)}, {raw_body}...")
146
 
147
- parsed_body = RawRequestInput.model_validate(raw_body)
148
  log_level = "DEBUG" if parsed_body.debug else "INFO"
149
  app_logger.setLevel(log_level)
150
  app_logger.warning(f"set log level to {getLevelName(app_logger.log_level)}.")
 
6
  from src import app_logger
7
  from src.io.coordinates_pixel_conversion import get_latlng_to_pixel_coordinates
8
  from src.utilities.constants import CUSTOM_RESPONSE_MESSAGES
9
+ from src.utilities.type_hints import ApiRequestBody
10
  from src.utilities.utilities import base64_decode
11
 
12
 
 
42
  return dumps(response)
43
 
44
 
45
+ def get_parsed_bbox_points(request_input: ApiRequestBody) -> Dict:
46
  """
47
  Parse the raw input request into bbox, prompt and zoom
48
 
 
88
  elif prompt.type == "rectangle":
89
  new_prompt_data = _get_new_prompt_data_rectangle(bbox_ne, bbox_sw, prompt, zoom)
90
  else:
91
+ msg = "Valid prompt type: 'point' or 'rectangle', not '{}'. Check ApiRequestBody parsing/validation."
92
  raise TypeError(msg.format(prompt.type))
93
  app_logger.debug(f"new_prompt_data: {type(new_prompt_data)}, value:{new_prompt_data}.")
94
  new_prompt["data"] = new_prompt_data
 
118
  ]
119
 
120
 
121
+ def get_parsed_request_body(event: Dict or str) -> ApiRequestBody:
122
  """
123
  Validator for the raw input request lambda event
124
 
 
144
  raw_body = loads(body_decoded_str)
145
  app_logger.info(f"body, #2: {type(raw_body)}, {raw_body}...")
146
 
147
+ parsed_body = ApiRequestBody.model_validate(raw_body)
148
  log_level = "DEBUG" if parsed_body.debug else "INFO"
149
  app_logger.setLevel(log_level)
150
  app_logger.warning(f"set log level to {getLevelName(app_logger.log_level)}.")
src/utilities/type_hints.py CHANGED
@@ -75,7 +75,7 @@ class RawPromptRectangle(BaseModel):
75
  return self.type
76
 
77
 
78
- class RawRequestInput(BaseModel):
79
  """Input lambda request validator type (not yet parsed)"""
80
  id: str = ""
81
  bbox: RawBBox
@@ -84,3 +84,15 @@ class RawRequestInput(BaseModel):
84
  source_type: str = "Satellite"
85
  debug: bool = False
86
  url_tile: str = DEFAULT_TMS
 
 
 
 
 
 
 
 
 
 
 
 
 
75
  return self.type
76
 
77
 
78
+ class ApiRequestBody(BaseModel):
79
  """Input lambda request validator type (not yet parsed)"""
80
  id: str = ""
81
  bbox: RawBBox
 
84
  source_type: str = "Satellite"
85
  debug: bool = False
86
  url_tile: str = DEFAULT_TMS
87
+
88
+
89
+ class ApiResponseBodyFailure(BaseModel):
90
+ duration_run: float
91
+ message: str
92
+ request_id: str
93
+
94
+
95
+ class ApiResponseBodySuccess(ApiResponseBodyFailure):
96
+ n_predictions: int
97
+ geojson: str
98
+ n_shapes_geojson: int