| | from flask_restful import Resource, reqparse |
| |
|
| | from controllers.console import api |
| | from controllers.console.datasets.error import WebsiteCrawlError |
| | from controllers.console.wraps import account_initialization_required, setup_required |
| | from libs.login import login_required |
| | from services.website_service import WebsiteService |
| |
|
| |
|
| | class WebsiteCrawlApi(Resource): |
| | @setup_required |
| | @login_required |
| | @account_initialization_required |
| | def post(self): |
| | parser = reqparse.RequestParser() |
| | parser.add_argument( |
| | "provider", type=str, choices=["firecrawl", "jinareader"], required=True, nullable=True, location="json" |
| | ) |
| | parser.add_argument("url", type=str, required=True, nullable=True, location="json") |
| | parser.add_argument("options", type=dict, required=True, nullable=True, location="json") |
| | args = parser.parse_args() |
| | WebsiteService.document_create_args_validate(args) |
| | |
| | try: |
| | result = WebsiteService.crawl_url(args) |
| | except Exception as e: |
| | raise WebsiteCrawlError(str(e)) |
| | return result, 200 |
| |
|
| |
|
| | class WebsiteCrawlStatusApi(Resource): |
| | @setup_required |
| | @login_required |
| | @account_initialization_required |
| | def get(self, job_id: str): |
| | parser = reqparse.RequestParser() |
| | parser.add_argument("provider", type=str, choices=["firecrawl", "jinareader"], required=True, location="args") |
| | args = parser.parse_args() |
| | |
| | try: |
| | result = WebsiteService.get_crawl_status(job_id, args["provider"]) |
| | except Exception as e: |
| | raise WebsiteCrawlError(str(e)) |
| | return result, 200 |
| |
|
| |
|
| | api.add_resource(WebsiteCrawlApi, "/website/crawl") |
| | api.add_resource(WebsiteCrawlStatusApi, "/website/crawl/status/<string:job_id>") |
| |
|