add web
This commit is contained in:
@@ -0,0 +1,89 @@
|
||||
from flask import Blueprint, render_template, request, redirect, url_for, flash, session, abort, jsonify, make_response
|
||||
from app.util import auth, friends, websiteFeatures
|
||||
import logging
|
||||
from app.services import economy
|
||||
from app.extensions import db, limiter, csrf, get_remote_address
|
||||
from app.models.gameservers import GameServer
|
||||
from app.models.place_developer_product import DeveloperProduct
|
||||
from app.models.product_receipt import ProductReceipt
|
||||
|
||||
GameTransactionsRoute = Blueprint("gametransactions", __name__, url_prefix="/")
|
||||
|
||||
@GameTransactionsRoute.before_request
|
||||
def VerifyUserAgent():
|
||||
RequestAddress = get_remote_address()
|
||||
TargetServerObj : GameServer = GameServer.query.filter_by( serverIP = RequestAddress ).first()
|
||||
if TargetServerObj is None:
|
||||
abort(404)
|
||||
|
||||
AccessKey = request.headers.get( key = "AccessKey", default = None , type = str )
|
||||
if AccessKey is None:
|
||||
abort(403)
|
||||
|
||||
if AccessKey != TargetServerObj.accessKey:
|
||||
abort(403)
|
||||
|
||||
@GameTransactionsRoute.route("/gametransactions/getpendingtransactions/", methods=["GET"])
|
||||
def GetPendingTransactions():
|
||||
PlayerId = request.args.get( key = "PlayerId", default = None, type = int )
|
||||
PlaceId = request.args.get( key = "PlaceId", default = None, type = int )
|
||||
|
||||
if PlayerId is None or PlaceId is None:
|
||||
return jsonify({
|
||||
"success": False,
|
||||
"message": "Invalid request"
|
||||
}), 400
|
||||
|
||||
PendingProductReceipts : list[ProductReceipt] = ProductReceipt.query.filter_by(
|
||||
user_id = PlayerId, is_processed = False
|
||||
).outerjoin(
|
||||
DeveloperProduct, DeveloperProduct.productid == ProductReceipt.product_id
|
||||
).filter( DeveloperProduct.placeid == PlaceId ).all()
|
||||
|
||||
PendingProductReceiptsDict = []
|
||||
for PendingProductReceipt in PendingProductReceipts:
|
||||
PendingProductReceiptsDict.append({
|
||||
"playerId": PendingProductReceipt.user_id,
|
||||
"placeId": PlaceId,
|
||||
"receipt": PendingProductReceipt.receipt_id,
|
||||
"actionArgs": [
|
||||
{
|
||||
"Key": "productId",
|
||||
"Value": PendingProductReceipt.product_id
|
||||
},
|
||||
{
|
||||
"Key": "currencyTypeId",
|
||||
"Value": 1
|
||||
},
|
||||
{
|
||||
"Key": "unitPrice",
|
||||
"Value": PendingProductReceipt.robux_amount
|
||||
}
|
||||
]
|
||||
})
|
||||
|
||||
return jsonify(PendingProductReceiptsDict)
|
||||
|
||||
@GameTransactionsRoute.route("/gametransactions/settransactionstatuscomplete", methods=["POST"])
|
||||
@csrf.exempt
|
||||
def SetTransactionStatusComplete():
|
||||
receiptId : int = request.form.get( key = "receipt", default = None, type = int )
|
||||
if receiptId is None:
|
||||
logging.error("Invalid request")
|
||||
return jsonify({
|
||||
"success": False,
|
||||
"message": "Invalid request"
|
||||
}), 400
|
||||
ReceiptObj : ProductReceipt = ProductReceipt.query.filter_by( receipt_id = receiptId ).first()
|
||||
if ReceiptObj is None:
|
||||
logging.error("Receipt not found")
|
||||
return jsonify({
|
||||
"success": False,
|
||||
"message": "Invalid request"
|
||||
}), 400
|
||||
ReceiptObj.is_processed = True
|
||||
db.session.commit()
|
||||
|
||||
return jsonify({
|
||||
"success": True,
|
||||
})
|
||||
Reference in New Issue
Block a user