diff options
author | rubenwardy <rw@rubenwardy.com> | 2019-11-15 23:51:42 +0000 |
---|---|---|
committer | rubenwardy <rw@rubenwardy.com> | 2019-11-15 23:51:42 +0000 |
commit | 64f131ae27a7332245b5a4eb8e1e4879d7d99578 (patch) | |
tree | a0b4101ca9c2132a072f1586c0df693583c91cf7 /app/views/api.py | |
parent | 015abe5a2507ad02273bc89953016c386aae4457 (diff) | |
download | cheatdb-64f131ae27a7332245b5a4eb8e1e4879d7d99578.tar.xz |
Refactor endpoints to use blueprints instead
Diffstat (limited to 'app/views/api.py')
-rw-r--r-- | app/views/api.py | 99 |
1 files changed, 0 insertions, 99 deletions
diff --git a/app/views/api.py b/app/views/api.py deleted file mode 100644 index ba42aca..0000000 --- a/app/views/api.py +++ /dev/null @@ -1,99 +0,0 @@ -# Content DB -# Copyright (C) 2018 rubenwardy -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <https://www.gnu.org/licenses/>. - - -from flask import * -from flask_user import * -from app import app -from app.models import * -from app.utils import is_package_page -from app.querybuilder import QueryBuilder - -@app.route("/api/packages/") -def api_packages_page(): - qb = QueryBuilder(request.args) - query = qb.buildPackageQuery() - ver = qb.getMinetestVersion() - - pkgs = [package.getAsDictionaryShort(app.config["BASE_URL"], version=ver) \ - 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) - query = qb.buildTopicQuery(show_added=True) - return jsonify([t.getAsDictionary() for t in query.all()]) - - -@app.route("/api/topic_discard/", methods=["POST"]) -@login_required -def topic_set_discard(): - tid = request.args.get("tid") - discard = request.args.get("discard") - if tid is None or discard is None: - abort(400) - - topic = ForumTopic.query.get(tid) - if not topic.checkPerm(current_user, Permission.TOPIC_DISCARD): - abort(403) - - topic.discarded = discard == "true" - db.session.commit() - - return jsonify(topic.getAsDictionary()) - - -@app.route("/api/minetest_versions/") -def api_minetest_versions_page(): - return jsonify([{ "name": rel.name, "protocol_version": rel.protocol }\ - for rel in MinetestRelease.query.all() if rel.getActual() is not None]) |