from flask import Flask, request, jsonify
import requests
from pipeline import pdf2markdown_pipeline
import concurrent.futures
from loguru import logger


app = Flask(__name__)
executor = concurrent.futures.ThreadPoolExecutor(max_workers=1)


def pdf2markdown_task(pdf_paths, callback_url):
    for pdf_path in pdf_paths:
        process_status, pdf_id = pdf2markdown_pipeline(pdf_path)
        requests.post(callback_url, json={'pdfId': pdf_id, 'processStatus': process_status})


@app.route('/pdf-qa-server/pdf-to-md', methods=['POST'])
def pdf2markdown():
    data = request.json
    logger.info(f'request params: {data}')
    pdf_paths = data['pathList']
    callback_url = data['webhookUrl']
    executor.submit(pdf2markdown_task, pdf_paths, callback_url)
    return jsonify({})


if __name__ == '__main__':
    app.run(host='0.0.0.0', port=8000)