import os import shutil from flask import send_from_directory from flask_restful import Resource, abort from LBI_PiPy.models import Module class ApiIndex(Resource): def get(self): return { "api version": "0.0.1" } class ApiModuleList(Resource): def get(self): modules = Module.query.filter().all() return {module.name: [version.version for version in module.versions] for module in modules} class ApiModuleVersions(Resource): def get(self, module): module = Module.query.filter_by(name=module).first_or_404() return {"versions": [version.version for version in module.versions]} class ApiModuleGet(Resource): def get(self, module, version): module = Module.query.filter_by(name=module).first_or_404() versions = [version.version for version in module.versions] if version not in versions: abort(404) print(os.getcwd()) if not os.path.exists(os.path.join("modules", module.name, version + ".zip")): shutil.make_archive(os.path.join("modules", module.name, version), 'zip', os.path.join("modules", module.name, version)) return send_from_directory( os.path.join("modules", module.name, ), version + ".zip" )