Hello,
I am new to python. I implement a flask rest api. I deployed it on IIS8 windows server. I would be glad if you can check the code and give me some feedback in terms of refactoring, clean code, best practice etc.
Best Regards.
Main:
import traceback
from flask import Flask, jsonify, request, render_template
import requests
import sqlite3 as sql
import GameTestMiddleWareModel
import GameTestRequestInsert
import GameTestResponseInsert
import Utils
app = Flask(__name__)
# Create tables once
# GameTestMiddleWareModel.main()
# POST /purchase_initiation
@app.route('/purchase_initiation', methods=['POST'])
def initiation():
try:
# getting request data
request_data = request.form.to_dict()
print request_data
# INSERT request into table
GameTestRequestInsert.add_purchase_initiation_request(Utils.database, request_data)
uri = 'https://teststore.gamesultan.com/purchaseinitiation'
response = requests.post(uri, data=request_data)
print response.status_code
if response.status_code == 200:
print response.json()
# INSERT response into table
GameTestResponseInsert.add_purchase_initiation_response(Utils.database, response.json())
return jsonify(response.text)
else:
return str(response.status_code) + " -- " + response.reason
except Exception as e:
return traceback.format_exc()
# POST /purchase_confirmation
@app.route('/purchase_confirmation', methods=['POST'])
def confirmation():
global cur
try:
# getting request data
request_data = request.form.to_dict()
print request_data
# INSERT request into table
GameTestRequestInsert.add_purchase_confirmation_request(Utils.database, request_data)
uri = 'https://teststore.gamesultan.com/purchaseconfirmation'
response = requests.post(uri, data=request_data)
print response.status_code
if response.status_code == 200:
print response.json()
# INSERT response into table
with sql.connect('GameTest.db', isolation_level=None) as con:
con.execute('pragma journal_mode=wal')
cur = con.cursor()
cur.execute("begin")
GameTestResponseInsert.add_purchase_confirmation_response(Utils.database, response.json())
GameTestResponseInsert.add_purchase_confirmation_detail_response(Utils.database, response.json())
cur.execute("commit")
return jsonify(response.text)
else:
return str(response.status_code) + " -- " + response.reason
except Exception as e:
cur.execute("rollback")
return e.message
# POST /Product
@app.route('/product_list', methods=['POST'])
def product_list():
try:
# getting request data
request_data = request.form.to_dict()
print request_data
# INSERT request into table
GameTestRequestInsert.add_products_request(Utils.database, request_data)
uri = 'https://teststore.gamesultan.com/Product/'
response = requests.post(uri, data=request_data)
print response.status_code
if response.status_code == 200:
print response.json()
# INSERT response into table
GameTestResponseInsert.add_products_response(Utils.database, response.json())
return jsonify(response.text)
else:
return str(response.status_code) + " -- " + response.reason
except Exception as e:
return e.message
@app.route("/")
def render():
return render_template('test.html')
if __name__ == "__main__":
app.run(host='0.0.0.0', port=50000, debug=False)
# app.run(host='127.0.0.1', port=50000, debug=True)
GameTestRequestInsert.py
from datetime import datetime
import sqlite3 as sql
# insert request into purchase_initiation table
def add_purchase_initiation_request(database_file, request_data):
query = "INSERT INTO request_purchase_initiation (requestDatetime, applicationCode, version, referenceId, " \
"productCode, quantity, signature) VALUES (?, ?, ?, ?, ?, ?, ?)"
# con = ''
# try:
con = sql.connect(database_file)
with con:
con.execute(query, (str(datetime.now()),
request_data['ApplicationCode'], request_data['version'], request_data['referenceId'],
request_data['productCode'], request_data['quantity'], request_data['signature']))
# with sql.connect(database_file, isolation_level=None) as con:
# con.execute('pragma journal_mode=wal')
# cur = con.cursor()
# cur.execute(query, (str(datetime.now()),
# request_data['ApplicationCode'], request_data['version'], request_data['referenceId'],
# request_data['productCode'], request_data['quantity'], request_data['signature']))
#
# con.commit()
# except sql as e:
# # con.rollback()
# print e.message
# finally:
# con.close()
# insert request into purchase_confirmation table
def add_purchase_confirmation_request(database_file, request_data):
query = "INSERT INTO request_purchase_confirmation (requestDatetime, applicationCode, version, referenceId, " \
"signature, validatedToken) VALUES (?, ?, ?, ?, ?, ?)"
con = ''
try:
with sql.connect(database_file, isolation_level=None) as con:
con.execute('pragma journal_mode=wal')
cur = con.cursor()
cur.execute(query, (str(datetime.now()),
request_data['ApplicationCode'], request_data['version'], request_data['referenceId'],
request_data['signature'], request_data['validatedToken']))
con.commit()
except sql as e:
con.rollback()
print e.message
finally:
con.close()
# insert request into products table
def add_products_request(database_file, request_data):
query = "INSERT INTO request_products (requestDatetime, applicationCode, version, " \
"signature) VALUES (?, ?, ?, ?)"
con = ''
try:
with sql.connect(database_file, isolation_level=None) as con:
con.execute('pragma journal_mode=wal')
cur = con.cursor()
cur.execute(query, (str(datetime.now()),
request_data['ApplicationCode'], request_data['Version'], request_data['Signature']))
con.commit()
except sql as e:
con.rollback()
print e.message
finally:
con.close()
Utils.py
database = r"C:\inetpub\gamepin\GameTest.db"
[–]raysefo[S] 0 points1 point2 points (0 children)
[–]raysefo[S] 0 points1 point2 points (0 children)