aboutsummaryrefslogtreecommitdiff
path: root/app/views/api.py
diff options
context:
space:
mode:
authorrubenwardy <rw@rubenwardy.com>2019-09-03 00:42:51 +0100
committerrubenwardy <rw@rubenwardy.com>2019-09-03 00:42:51 +0100
commit4082863b5a48fb6a66537591137361e18349996a (patch)
treead2a5ff1c4bed168eb60142d280615980f2f45f9 /app/views/api.py
parentcc564af44e1fc7b03fa4d2c8d6b00a07aad7b539 (diff)
downloadcheatdb-4082863b5a48fb6a66537591137361e18349996a.tar.xz
Add basic dependency resolutionv1.17.0
Diffstat (limited to 'app/views/api.py')
-rw-r--r--app/views/api.py30
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)