Source code for aiidalab.registry.api

"""Generate API endpoints."""
import json

from .apps_index import validate_apps_index_and_apps


[docs]def build_api_v1(api_path, apps_index, apps_data, scan_app_repository): """Build tree for API endpoint v1.""" # Create base path if necessary. api_path.mkdir(parents=True, exist_ok=True) # Write apps_index.json file. outfile = api_path / "apps_index.json" rendered = json.dumps(apps_index, ensure_ascii=False) outfile.write_text(rendered, encoding="utf-8") yield outfile api_path.joinpath("apps").mkdir() for app_id, app_data in apps_data.items(): # Write apps/{appId}.json outfile = api_path / "apps" / f"{app_id}.json" rendered = json.dumps(app_data, ensure_ascii=False) outfile.write_text(rendered, encoding="utf-8") yield outfile
[docs]def validate_api_v1(api_path, schemas): """Validate tree for API endpoint v1.""" apps_index = json.loads(api_path.joinpath("apps_index.json").read_text()) apps = [ json.loads(api_path.joinpath("apps", f"{app_id}.json").read_text()) for app_id in apps_index["apps"] ] validate_apps_index_and_apps( apps_index, apps_index_schema=schemas.apps_index, apps=apps, app_schema=schemas.app, )