#!/usr/bin/env python3 # -*- coding: utf-8 -*- from flask import Blueprint, jsonify, Response from app.decorators import require_header_token, require_get_token from app.classes.whitelist import WhiteList import json whitelist_bp = Blueprint("whitelist", __name__) whitelist = WhiteList() @whitelist_bp.route('/add//', methods=['GET']) @require_header_token def add(elem_type, elem_value): """ Parse and add an element to be whitelisted. :return: status of the operation in JSON """ source = "backend" res = whitelist.add(elem_type, elem_value, source) return jsonify(res) @whitelist_bp.route('/delete/', methods=['GET']) @require_header_token def delete(elem_id): """ Delete an element by its id to the database. :return: status of the operation in JSON """ res = whitelist.delete(elem_id) return jsonify(res) @whitelist_bp.route('/search/', methods=['GET']) @require_header_token def search(element): """ Search elements in the database. :return: potential results in JSON. """ res = whitelist.search(element) return jsonify({"results": [e for e in res]}) @whitelist_bp.route('/get/types') @require_header_token def get_types(): """ Retrieve a list of whitelisted elements types. :return: list of types in JSON. """ res = whitelist.get_types() return jsonify({"types": [t for t in res]}) @whitelist_bp.route('/export') @require_get_token def get_all(): """ Retreive a list of all elements. :return: list of elements in JSON. """ res = whitelist.get_all() return Response(json.dumps({"elements": [e for e in res]}), mimetype='application/json', headers={'Content-Disposition': 'attachment;filename=whitelist-export.json'})