add handle security repo

This commit is contained in:
Quentin Rouland 2017-02-28 13:42:27 +01:00
parent 44f6b7fc17
commit 3b7a73ced8
2 changed files with 15 additions and 6 deletions

View File

@ -6,7 +6,7 @@
"package_regex_name": "^(?P<package_name>[^-]*)-(?P<version_major>\\d+)(\\.(?P<version_minor>\\d+)|\\.apk)(\\.(?P<version_release>\\d+)\\.apk|\\.apk)?$", "package_regex_name": "^(?P<package_name>[^-]*)-(?P<version_major>\\d+)(\\.(?P<version_minor>\\d+)|\\.apk)(\\.(?P<version_release>\\d+)\\.apk|\\.apk)?$",
"security": { "security": {
"is_public": false, "is_public": false,
"allow_hash_key": [] "allow_hash_key": ["SuperApiKey"]
} }
} }
] ]

View File

@ -54,7 +54,7 @@ class PackageVersioning(FileSystemEventHandler):
self.__version_directory(p['directory_path'], p['name'], p['description'], p['package_regex_name']) self.__version_directory(p['directory_path'], p['name'], p['description'], p['package_regex_name'])
def __version_directory(self, directory_path, repo_name, repo_description, regex_package_name): def __version_directory(self, directory_path, repo_name, repo_description, regex_package_name):
repo_public = {"repo_description": repo_description, } repo_public = {"repo_description": repo_description}
repo_private = { repo_private = {
"directory_path": os.path.abspath(directory_path), "directory_path": os.path.abspath(directory_path),
"package_finder": PackageFinder(regex_package_name) "package_finder": PackageFinder(regex_package_name)
@ -114,8 +114,6 @@ class PackageVersioning(FileSystemEventHandler):
self.__repos_private[repo_name] = repo_private self.__repos_private[repo_name] = repo_private
def get_all_packages(self, package_name=None, repo_name=None): def get_all_packages(self, package_name=None, repo_name=None):
if repo_name is None:
return self.__repos_public
repo_name, repo_public, _ = self.__get_repo(repo_name) repo_name, repo_public, _ = self.__get_repo(repo_name)
try: try:
return repo_public[package_name] if \ return repo_public[package_name] if \
@ -145,9 +143,17 @@ class PackageVersioning(FileSystemEventHandler):
raise InvalidPackageName raise InvalidPackageName
return os.path.join(repo_private['directory_path'], filename) return os.path.join(repo_private['directory_path'], filename)
def __get_repo(self, repo_name): def __get_repo(self, repo_name, api_key="SuperApiKey"):
try: try:
return repo_name, self.__repos_public[repo_name], self.__repos_private[repo_name] r_pub = {}
r_pri = {}
for repo in self.__repos_json_conf:
if repo_name is None or repo['name'] == repo_name:
if repo['security']['is_public'] or api_key in repo['security']['allow_hash_key']:
r_pub[repo['name']] = self.__repos_public[repo['name']]
r_pri[repo['name']] = self.__repos_private[repo['name']]
return repo_name, r_pub, r_pri
except KeyError: except KeyError:
raise RepoDoNotExist raise RepoDoNotExist
@ -206,3 +212,6 @@ class RepoDoNotExist(Exception):
class PackageDoNotExist(Exception): class PackageDoNotExist(Exception):
pass pass
class AccessRepoNotAllowed(Exception):
pass