PDMI/LBI_PiPy/blueprints/api/download/__init__.py

43 lines
1.3 KiB
Python
Raw Normal View History

2019-04-28 18:49:02 +02:00
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"
)