Hobson commited on
Commit
3022b4e
1 Parent(s): 9a02eda

simplify type checking for payload with schema dict

Browse files
Files changed (1) hide show
  1. mathtext_fastapi/nlu.py +19 -56
mathtext_fastapi/nlu.py CHANGED
@@ -11,6 +11,18 @@ from mathtext_fastapi.intent_classification import predict_message_intent
11
 
12
  log = getLogger(__name__)
13
 
 
 
 
 
 
 
 
 
 
 
 
 
14
 
15
  def build_nlu_response_object(nlu_type, data, confidence):
16
  """ Turns nlu results into an object to send back to Turn.io
@@ -157,7 +169,6 @@ def payload_is_valid(payload_object):
157
  isinstance(payload_object.get('message_inserted_at'), str) and
158
  isinstance(payload_object.get('message_updated_at'), str) and
159
  isinstance(payload_object.get('message_inserted_at'), str) and
160
- isinstance(payload_object.get('message_updated_at'), str) and
161
  isinstance(
162
  isoparse(payload_object.get('message_inserted_at')),
163
  dt.datetime
@@ -168,6 +179,7 @@ def payload_is_valid(payload_object):
168
  )
169
  )
170
 
 
171
  def log_payload_errors(payload_object):
172
  errors = []
173
  try:
@@ -175,61 +187,12 @@ def log_payload_errors(payload_object):
175
  except Exception as e:
176
  log.error(f'Invalid HTTP request payload object: {e}')
177
  errors.append(e)
178
- try:
179
- assert isinstance(payload_object.get('author_id'), str)
180
- except Exception as e:
181
- log.error(f'Invalid HTTP request payload object: {e}')
182
- errors.append(e)
183
- try:
184
- assert isinstance(payload_object.get('author_type'), str)
185
- except Exception as e:
186
- log.error(f'Invalid HTTP request payload object: {e}')
187
- errors.append(e)
188
- try:
189
- assert isinstance(payload_object.get('contact_uuid'), str)
190
- except Exception as e:
191
- log.error(f'Invalid HTTP request payload object: {e}')
192
- errors.append(e)
193
- try:
194
- assert isinstance(payload_object.get('message_body'), str)
195
- except Exception as e:
196
- log.error(f'Invalid HTTP request payload object: {e}')
197
- errors.append(e)
198
- try:
199
- assert isinstance(payload_object.get('message_direction'), str)
200
- except Exception as e:
201
- log.error(f'Invalid HTTP request payload object: {e}')
202
- errors.append(e)
203
- try:
204
- assert isinstance(payload_object.get('inbound'), str)
205
- except Exception as e:
206
- log.error(f'Invalid HTTP request payload object: {e}')
207
- errors.append(e)
208
- try:
209
- assert isinstance(payload_object.get('message_id'), str)
210
- except Exception as e:
211
- log.error(f'Invalid HTTP request payload object: {e}')
212
- errors.append(e)
213
- try:
214
- assert isinstance(payload_object.get('message_inserted_at'), str)
215
- except Exception as e:
216
- log.error(f'Invalid HTTP request payload object: {e}')
217
- errors.append(e)
218
- try:
219
- assert isinstance(payload_object.get('message_updated_at'), str)
220
- except Exception as e:
221
- log.error(f'Invalid HTTP request payload object: {e}')
222
- errors.append(e)
223
- try:
224
- assert isinstance(payload_object.get('message_inserted_at'), str)
225
- except Exception as e:
226
- log.error(f'Invalid HTTP request payload object: {e}')
227
- errors.append(e)
228
- try:
229
- assert isinstance(payload_object.get('message_updated_at'), str)
230
- except Exception as e:
231
- log.error(f'Invalid HTTP request payload object: {e}')
232
- errors.append(e)
233
  try:
234
  assert isinstance(
235
  dt.datetime.fromisoformat(payload_object.get('message_inserted_at')),
 
11
 
12
  log = getLogger(__name__)
13
 
14
+ PAYLOAD_VALUE_TYPES = {
15
+ 'author_id': str,
16
+ 'author_type': str,
17
+ 'contact_uuid': str,
18
+ 'message_body': str,
19
+ 'message_direction': str,
20
+ 'message_id': str,
21
+ 'message_inserted_at': str,
22
+ 'message_updated_at': str,
23
+ 'message_inserted_at': str,
24
+ }
25
+
26
 
27
  def build_nlu_response_object(nlu_type, data, confidence):
28
  """ Turns nlu results into an object to send back to Turn.io
 
169
  isinstance(payload_object.get('message_inserted_at'), str) and
170
  isinstance(payload_object.get('message_updated_at'), str) and
171
  isinstance(payload_object.get('message_inserted_at'), str) and
 
172
  isinstance(
173
  isoparse(payload_object.get('message_inserted_at')),
174
  dt.datetime
 
179
  )
180
  )
181
 
182
+
183
  def log_payload_errors(payload_object):
184
  errors = []
185
  try:
 
187
  except Exception as e:
188
  log.error(f'Invalid HTTP request payload object: {e}')
189
  errors.append(e)
190
+ for k, typ in PAYLOAD_VALUE_TYPES.items():
191
+ try:
192
+ assert isinstance(payload_object.get(k), typ)
193
+ except Exception as e:
194
+ log.error(f'Invalid HTTP request payload object: {e}')
195
+ errors.append(e)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
196
  try:
197
  assert isinstance(
198
  dt.datetime.fromisoformat(payload_object.get('message_inserted_at')),