From d4bbab20b6813c215e55fa7e1e39ff1a127adf00 Mon Sep 17 00:00:00 2001 From: Quentin Rouland Date: Wed, 27 Sep 2017 11:44:18 +0200 Subject: [PATCH] Add /last and //last Showing last pacakge available for all repos or for specific repo --- App.py | 13 +++++++++++-- api/Repo.py | 14 ++++++++++++++ utils/PackageVersioning.py | 9 +++++++-- 3 files changed, 32 insertions(+), 4 deletions(-) diff --git a/App.py b/App.py index 991a355..ae62451 100644 --- a/App.py +++ b/App.py @@ -5,7 +5,7 @@ from Config import CURRENT_CONFIG from flask import Flask from flask_restful import Api import api.Repo as repoApi -from api.Repo import BrowseRepo, InfoLastPackage, DownloadLastPackage, DownloadPackage, DownloadPackageVersion, \ +from api.Repo import BrowseRepo, InfoLast, InfoLastRepo, InfoLastPackage, DownloadLastPackage, DownloadPackage, DownloadPackageVersion, \ BrowseRepoVersion from utils.PackageVersioning import PackageVersioning @@ -31,6 +31,16 @@ api.add_resource( # Retrieve data version from ) +api.add_resource( + InfoLast, + '/last' +) + +api.add_resource( + InfoLastRepo, + '//last' +) + api.add_resource( InfoLastPackage, '///last', # Info for last version from @@ -57,7 +67,6 @@ api.add_resource( '/download//', # Download version from repo_name ) - @app.before_first_request def setup(): repoApi.package_versioning = PackageVersioning(json.load(open(app.config['REPOS_JSON_CONFIG_PATH']))) diff --git a/api/Repo.py b/api/Repo.py index 3a6bb14..8369e5e 100644 --- a/api/Repo.py +++ b/api/Repo.py @@ -31,6 +31,20 @@ class BrowseRepoVersion(Resource): abort(404) +class InfoLast(Resource): + def get(self): + try: + return package_versioning.get_last_version_package(), 200 + except (RepoDoNotExist, PackageDoNotExist): + abort(404) + +class InfoLastRepo(Resource): + def get(self, repo_name): + try: + return package_versioning.get_last_version_package(repo_name=repo_name), 200 + except (RepoDoNotExist, PackageDoNotExist): + abort(404) + class InfoLastPackage(Resource): def get(self, package_name, repo_name): try: diff --git a/utils/PackageVersioning.py b/utils/PackageVersioning.py index 568003e..ee6b62f 100644 --- a/utils/PackageVersioning.py +++ b/utils/PackageVersioning.py @@ -146,8 +146,13 @@ class PackageVersioning(FileSystemEventHandler): return package[str(last_version)] - def get_last_version_package(self, package_name, repo_name): - return self.__repos_last[repo_name][package_name] + def get_last_version_package(self, package_name=None, repo_name=None): + if package_name and repo_name: + return self.__repos_last[repo_name][package_name] + elif repo_name : + return self.__repos_last[repo_name] + else : + return self.__repos_last def get_path_package(self, filename, repo_name): _, _, repo_private = self.__get_repo(repo_name)