Added POST Create New EmailMessage API 2

pull/102/head
tianlinzhong 2021-12-22 10:47:49 +08:00
parent d66cdd54d0
commit 1d88799907
1 changed files with 15 additions and 23 deletions

View File

@ -2,6 +2,7 @@ import falcon
import simplejson as json import simplejson as json
import mysql.connector import mysql.connector
import config import config
import re
from datetime import datetime, timedelta, timezone from datetime import datetime, timedelta, timezone
from core.useractivity import user_logger, access_control from core.useractivity import user_logger, access_control
@ -97,9 +98,17 @@ class EmailMessageCollection:
def on_post(req, resp): def on_post(req, resp):
"""Handles POST requests""" """Handles POST requests"""
access_control(req) access_control(req)
try: try:
raw_json = req.stream.read().decode('utf-8') upload = req.get_param('file')
# Read upload file as binary
attachment_file_object = upload.file.read()
# Retrieve filename
attachment_file_name = upload.filename
except Exception as ex:
raise falcon.HTTPError(falcon.HTTP_400, title='API.ERROR',
description='API.FAILED_TO_UPLOAD_ATTACHMENT_FILE')
try:
raw_json = req.get_param('req')
except Exception as ex: except Exception as ex:
raise falcon.HTTPError(falcon.HTTP_400, title='API.ERROR', description=ex) raise falcon.HTTPError(falcon.HTTP_400, title='API.ERROR', description=ex)
@ -126,6 +135,10 @@ class EmailMessageCollection:
raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST',
description='API.INVALID_RECIPIENT_EMAIL') description='API.INVALID_RECIPIENT_EMAIL')
recipient_email = str.strip(new_values['data']['recipient_email']) recipient_email = str.strip(new_values['data']['recipient_email'])
match = re.match(r'^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$', recipient_email)
if match is None:
raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST',
description='API.INVALID_EMAIL')
if 'subject' not in new_values['data'].keys() or \ if 'subject' not in new_values['data'].keys() or \
not isinstance(new_values['data']['subject'], str) or \ not isinstance(new_values['data']['subject'], str) or \
@ -141,27 +154,6 @@ class EmailMessageCollection:
description='API.INVALID_MESSAGE_VALUE') description='API.INVALID_MESSAGE_VALUE')
message = str.strip(new_values['data']['message']) message = str.strip(new_values['data']['message'])
if 'attachment_file_name' not in new_values['data'].keys() or \
not isinstance(new_values['data']['attachment_file_name'], str) or \
len(str.strip(new_values['data']['attachment_file_name'])) == 0:
raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST',
description='API.INVALID_ATTACHMENT_FILE_NAME')
attachment_file_name = str.strip(new_values['data']['attachment_file_name'])
if 'attachment_file_object' not in new_values['data'].keys() or \
not isinstance(new_values['data']['attachment_file_object'], str) or \
len(str.strip(new_values['data']['attachment_file_object'])) == 0:
raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST',
description='API.INVALID_ATTACHMENT_FILE_OBJECT')
attachment_file_object = str.strip(new_values['data']['attachment_file_object'])
if 'attachment_file_object' not in new_values['data'].keys() or \
not isinstance(new_values['data']['attachment_file_object'], str) or \
len(str.strip(new_values['data']['attachment_file_object'])) == 0:
raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST',
description='API.INVALID_ATTACHMENT_FILE_OBJECT')
attachment_file_object = str.strip(new_values['data']['attachment_file_object'])
if 'created_datetime' not in new_values['data'].keys() or \ if 'created_datetime' not in new_values['data'].keys() or \
not isinstance(new_values['data']['created_datetime'], str) or \ not isinstance(new_values['data']['created_datetime'], str) or \
len(str.strip(new_values['data']['created_datetime'])) == 0: len(str.strip(new_values['data']['created_datetime'])) == 0: