aboutsummaryrefslogtreecommitdiff
path: root/app/blueprints/api/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'app/blueprints/api/__init__.py')
-rw-r--r--app/blueprints/api/__init__.py83
1 files changed, 2 insertions, 81 deletions
diff --git a/app/blueprints/api/__init__.py b/app/blueprints/api/__init__.py
index 5092f21..03adaf8 100644
--- a/app/blueprints/api/__init__.py
+++ b/app/blueprints/api/__init__.py
@@ -14,87 +14,8 @@
# 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.models import *
-from app.utils import is_package_page
-from app.querybuilder import QueryBuilder
+from flask import Blueprint
bp = Blueprint("api", __name__)
-@bp.route("/api/packages/")
-def packages():
- qb = QueryBuilder(request.args)
- query = qb.buildPackageQuery()
- ver = qb.getMinetestVersion()
-
- pkgs = [package.getAsDictionaryShort(current_app.config["BASE_URL"], version=ver) \
- for package in query.all()]
- return jsonify(pkgs)
-
-
-@bp.route("/api/packages/<author>/<name>/")
-@is_package_page
-def package(package):
- return jsonify(package.getAsDictionary(current_app.config["BASE_URL"]))
-
-
-@bp.route("/api/packages/<author>/<name>/dependencies/")
-@is_package_page
-def package_dependencies(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)
-
-
-@bp.route("/api/topics/")
-def topics():
- qb = QueryBuilder(request.args)
- query = qb.buildTopicQuery(show_added=True)
- return jsonify([t.getAsDictionary() for t in query.all()])
-
-
-@bp.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())
-
-
-@bp.route("/api/minetest_versions/")
-def versions():
- return jsonify([{ "name": rel.name, "protocol_version": rel.protocol }\
- for rel in MinetestRelease.query.all() if rel.getActual() is not None])
+from . import tokens, endpoints