from flask import Flask
from flask import jsonify, request
from eu.dnetlib.exporter.ScrollResult import ScrollResult
from eu.dnetlib.exporter.dataciteExporter import is_available

app = Flask(__name__)

scroll_map = {}


@app.route("/new_scan", methods=['get'])
def new_scan():
    timestamp = request.args.get('timestamp')
    print(timestamp)
    active = request.args.get('active')
    if active is not None and 'false' == active.lower():
        active = False
    else:
        active = True
    s = ScrollResult()
    s.generate_scroll(timestamp=timestamp, only_active=active)
    scroll_map[str(s.id)] = s
    return jsonify(s.next_page())


@app.route("/scan/<s_id>")
def continue_scan(s_id):
    if s_id in scroll_map:
        try:
            return jsonify(scroll_map[s_id].next_page())
        except Exception as e:
            print(e)
            del(scroll_map[s_id])
            return jsonify([])
    return jsonify([])


@app.route("/status", methods=['get'])
def get_status():
    try:
        if is_available() :
            return jsonify(dict(status = 'OK'))    
    except:
        pass
    return jsonify(dict(status = 'FAIL'))
    



if __name__ == '__main__':
    print("Starting flask")
    app.run(host='0.0.0.0', debug=False)
