Source code for swh.scanner.backend
# Copyright (C) 2020 The Software Heritage developers
# See the AUTHORS file at the top-level directory of this distribution
# License: GNU General Public License version 3, or any later version
# See top-level LICENSE file for more information
from flask import Flask, request
from .db import Db
from .exceptions import LargePayloadExc
from .policy import QUERY_LIMIT
[docs]
def create_app(db: Db):
"""Backend for swh-scanner, implementing the /known endpoint of the
Software Heritage Web API"""
app = Flask(__name__)
@app.route("/api/1/known/", methods=["POST"])
def known():
swhids = request.get_json()
if len(swhids) > QUERY_LIMIT:
raise LargePayloadExc(
f"The maximum number of SWHIDs this endpoint can receive is"
f"{QUERY_LIMIT}"
)
cur = db.conn.cursor()
res = {swhid: {"known": db.known(swhid, cur)} for swhid in swhids}
cur.close()
return res
return app
[docs]
def run(host: str, port: int, db: Db):
"""Serve the local database"""
app = create_app(db)
app.run(host, port, debug=True)