syntaxwebsite/app/routes/pointsservice.py

52 lines
2.6 KiB
Python

from flask import Blueprint, render_template, request, redirect, url_for, flash, make_response, jsonify
from app.models.gameservers import GameServer
from app.models.pointsservice import PointsService
from app.extensions import get_remote_address, db, csrf
import logging
PointsServiceRoute = Blueprint('pointsservice', __name__)
@PointsServiceRoute.route("/points/get-point-balance", methods=["GET"])
def get_point_balance():
userId = request.args.get('userId')
placeId = request.args.get('placeId')
if userId is None or placeId is None:
return jsonify({"success": False, "message": "Missing parameters"}),400
if userId.isnumeric() is False or placeId.isnumeric() is False:
return jsonify({"success": False, "message": "Invalid parameters"}),400
RequestIP = get_remote_address()
if RequestIP is None:
return jsonify({"success": False, "message": "Unauthorized"}),401
server = GameServer.query.filter_by(serverIP=RequestIP).first()
if server is None:
return jsonify({"success": False, "message": "Unauthorized"}),401
points : PointsService = PointsService.query.filter_by(userId=userId, placeId=placeId).first()
if points is None:
points = PointsService(userId=userId, placeId=placeId, points=0)
db.session.add(points)
db.session.commit()
return jsonify({"success": True, "pointBalance": points.points}),200
@PointsServiceRoute.route("/points/award-points", methods=["POST"])
@csrf.exempt
def award_points():
userId = request.args.get(key='userId', default=None, type=int)
placeId = request.args.get(key='placeId', default=None, type=int)
amount = request.args.get(key='amount', default=None, type=int)
if userId is None or placeId is None or amount is None:
return jsonify({"success": False, "message": "Missing parameters"}),400
RequestIP = get_remote_address()
if RequestIP is None:
return jsonify({"success": False, "message": "Unauthorized"}),401
server = GameServer.query.filter_by(serverIP=RequestIP).first()
if server is None:
return jsonify({"success": False, "message": "Unauthorized"}),401
points : PointsService = PointsService.query.filter_by(userId=userId, placeId=placeId).first()
if points is None:
points = PointsService(userId=userId, placeId=placeId, points=0)
db.session.add(points)
db.session.commit()
points.points += int(amount)
db.session.commit()
return jsonify({"success": True, "userBalance": points.points, "pointsAwarded": amount, "userGameBalance": points.points}),200