Exemple #1
0
def message_post() -> Response:
    """
    Create a new message in a group or team.
    :return: A response object for the POST API request.
    """
    message_data: dict = request.get_json()

    if message_data is None:
        response = jsonify({
            'self': f'/v2/messages',
            'added': False,
            'message': None,
            'error': "the request body isn't populated"
        })
        response.status_code = 400
        return response

    message_to_add = Message(message_data)

    if None in [
            message_to_add.username, message_to_add.first, message_to_add.last,
            message_to_add.group_name, message_to_add.time
    ]:
        response = jsonify({
            'self':
            f'/v2/messages',
            'added':
            False,
            'message':
            None,
            'error':
            "'username', 'first', 'last', 'group_name', and 'time' are required fields"
        })
        response.status_code = 400
        return response

    message_to_add.created_date = datetime.now()
    message_to_add.created_app = 'saints-xctf-api'
    message_to_add.created_user = None
    message_to_add.modified_date = None
    message_to_add.modified_app = None
    message_to_add.modified_user = None
    message_to_add.deleted_date = None
    message_to_add.deleted_app = None
    message_to_add.deleted_user = None
    message_to_add.deleted = False

    message_added_successfully = MessageDao.add_message(
        new_message=message_to_add)

    if message_added_successfully:
        message_added = MessageDao.get_message_by_id(
            message_id=message_to_add.message_id)

        message_dict = MessageData(message_added).__dict__

        if message_dict.get('time') is not None:
            message_dict['time'] = str(message_dict['time'])

        response = jsonify({
            'self': '/v2/messages',
            'added': True,
            'message': message_dict
        })
        response.status_code = 200
        return response
    else:
        response = jsonify({
            'self': '/v2/messages',
            'added': False,
            'message': None,
            'error': 'failed to create a new message'
        })
        response.status_code = 500
        return response