def api_copy_account_emails(account, folder) -> Response: ''' Copy emails from one folder to another within a given account. ''' request_data = request.get_json() message_uids = get_or_400(request_data, 'message_uids') new_folder = get_or_400(request_data, 'new_folder') copy_folder_emails(account, folder, message_uids, new_folder) return jsonify(copied=True)
def api_post_contacts(): ''' Create a new contact. ''' request_data = request.get_json() new_contact = Contact( name=get_or_400(request_data, 'name'), email=get_or_400(request_data, 'email'), ) save_contact(new_contact) return jsonify(added=True, id=new_contact.id)
def api_activate_license() -> Union[Response, Tuple[Response, int]]: request_data = request.get_json() license_data = get_or_400(request_data, 'license') # Cleanup any copy/paste issues with the license license_data = license_data.strip() license_data = license_data.strip('-') license_data = license_data.strip() try: email, token = [line.strip() for line in license_data.splitlines()] except ValueError: return jsonify( activated=False, error_message= 'Invalid license format, it should include both email and token.', ), 400 try: activate_license(email, token) except LicenseActivationError as e: abort(400, f'{e}') reload_main_window() return jsonify(activated=True)
def api_put_contact(contact_id) -> Response: ''' Update a single contact. ''' request_data = request.get_json() contact = Contact.query.get_or_404(contact_id) contact.name = get_or_400(request_data, 'name') contact.email = get_or_400(request_data, 'email') try: save_contact(contact) except IntegrityError: abort(400, 'This contact already exists') return jsonify(updated=True)
def api_post_contacts() -> Response: ''' Create a new contact. ''' request_data = request.get_json() new_contact = Contact( name=get_or_400(request_data, 'name'), email=get_or_400(request_data, 'email'), ) try: save_contact(new_contact) except IntegrityError: abort(400, 'This contact already exists') return jsonify(added=True, id=new_contact.id)
def api_put_contact(contact_id): ''' Update a single contact. ''' request_data = request.get_json() contact = Contact.query.get_or_404(contact_id) contact.name = get_or_400(request_data, 'name') contact.email = get_or_400(request_data, 'email') try: save_contact(contact) # If a duplicate of the updated contact exists, just remove this one except IntegrityError: db.session.rollback() delete_contact(contact) return jsonify(updated=True)
def api_unstar_account_emails(account, folder) -> Response: ''' Unstar emails in a given account/folder. ''' request_data = request.get_json() message_uids = get_or_400(request_data, 'message_uids') unstar_folder_emails(account, folder, message_uids) return jsonify(unstarred=True)
def create_send(): data = request.get_json() message_data = get_or_400(data, 'message') message_data['reply_all'] = data.get('reply_all', False) message_data['forward'] = data.get('forward', False) uid = str(uuid4()) SEND_WINDOW_DATA[uid] = message_data logger.debug(f'Created send data with UID={uid}') endpoint = f'/send/{uid}' return jsonify(endpoint=endpoint)
def api_activate_license(): request_data = request.get_json() license_data = get_or_400(request_data, 'license') try: email, token = [line.strip() for line in license_data.splitlines()] except ValueError: return jsonify(activated=False, error='Invalid license format!'), 400 try: activate_license(email, token) except LicenseActivationError as e: abort(400, f'{e}') reload_main_window() return jsonify(activated=True)