diff options
author | rubenwardy <rw@rubenwardy.com> | 2019-09-03 00:42:51 +0100 |
---|---|---|
committer | rubenwardy <rw@rubenwardy.com> | 2019-09-03 00:42:51 +0100 |
commit | 4082863b5a48fb6a66537591137361e18349996a (patch) | |
tree | ad2a5ff1c4bed168eb60142d280615980f2f45f9 /app/views/api.py | |
parent | cc564af44e1fc7b03fa4d2c8d6b00a07aad7b539 (diff) | |
download | cheatdb-4082863b5a48fb6a66537591137361e18349996a.tar.xz |
Add basic dependency resolutionv1.17.0
Diffstat (limited to 'app/views/api.py')
-rw-r--r-- | app/views/api.py | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/app/views/api.py b/app/views/api.py index 6d54fdf..ba42aca 100644 --- a/app/views/api.py +++ b/app/views/api.py @@ -32,12 +32,42 @@ def api_packages_page(): for package in query.all()] return jsonify(pkgs) + @app.route("/api/packages/<author>/<name>/") @is_package_page def api_package_page(package): return jsonify(package.getAsDictionary(app.config["BASE_URL"])) +@app.route("/api/packages/<author>/<name>/dependencies/") +@is_package_page +def api_package_deps_page(package): + ret = [] + + for dep in package.dependencies: + name = None + fulfilled_by = None + + if dep.package: + name = dep.package.name + fulfilled_by = [ dep.package.getAsDictionaryKey() ] + + elif dep.meta_package: + name = dep.meta_package.name + fulfilled_by = [ pkg.getAsDictionaryKey() for pkg in dep.meta_package.packages] + + else: + raise "Malformed dependency" + + ret.append({ + "name": name, + "is_optional": dep.optional, + "packages": fulfilled_by + }) + + return jsonify(ret) + + @app.route("/api/topics/") def api_topics_page(): qb = QueryBuilder(request.args) |