mirror of
https://github.com/MCMi460/3DS-RPC.git
synced 2025-06-19 05:55:36 -04:00
General PEP 8 tidying of server
This commit is contained in:
parent
51a6e108fb
commit
9514740fc9
@ -97,25 +97,27 @@ def cacheTitles():
|
|||||||
))
|
))
|
||||||
print('[Saved database to file]')
|
print('[Saved database to file]')
|
||||||
|
|
||||||
|
|
||||||
# Create entry in database with friendCode
|
# Create entry in database with friendCode
|
||||||
def createUser(friendCode:int, network:NetworkType, addNewInstance:bool = False):
|
def create_user(friend_code: int, network: NetworkType, add_new_instance: bool):
|
||||||
if int(friendCode) == int(pretendoBotFC):
|
# Make sure the user isn't trying to create any registered bot friend code.
|
||||||
|
if int(friend_code) == int(pretendoBotFC):
|
||||||
raise Exception('invalid FC')
|
raise Exception('invalid FC')
|
||||||
if int(friendCode) == int(nintendoBotFC):
|
if int(friend_code) == int(nintendoBotFC):
|
||||||
raise Exception('invalid FC')
|
raise Exception('invalid FC')
|
||||||
|
|
||||||
try:
|
try:
|
||||||
friend_code_to_principal_id(friendCode)
|
if not add_new_instance:
|
||||||
if not addNewInstance:
|
|
||||||
raise Exception('UNIQUE constraint failed: friends.friendCode')
|
raise Exception('UNIQUE constraint failed: friends.friendCode')
|
||||||
already_added_check = db.session.scalar(
|
already_added_check = db.session.scalar(
|
||||||
select(Friend)
|
select(Friend)
|
||||||
.where(Friend.friend_code == str(friendCode).zfill(12))
|
.where(Friend.friend_code == str(friend_code).zfill(12))
|
||||||
.where(Friend.network == network)
|
.where(Friend.network == network)
|
||||||
)
|
)
|
||||||
if already_added_check != None:
|
if already_added_check:
|
||||||
raise Exception('UNIQUE constraint failed: friends.friendCode')
|
raise Exception('UNIQUE constraint failed: friends.friendCode')
|
||||||
db.session.add(Friend(
|
db.session.add(Friend(
|
||||||
friend_code=str(friendCode).zfill(12),
|
friend_code=str(friend_code).zfill(12),
|
||||||
network=network,
|
network=network,
|
||||||
online=False,
|
online=False,
|
||||||
title_id='0',
|
title_id='0',
|
||||||
@ -130,12 +132,13 @@ def createUser(friendCode:int, network:NetworkType, addNewInstance:bool = False)
|
|||||||
if 'UNIQUE constraint failed: friends.friendCode' in str(e):
|
if 'UNIQUE constraint failed: friends.friendCode' in str(e):
|
||||||
db.session.execute(
|
db.session.execute(
|
||||||
update(Friend)
|
update(Friend)
|
||||||
.where(Friend.friend_code == str(friendCode).zfill(12))
|
.where(Friend.friend_code == str(friend_code).zfill(12))
|
||||||
.where(Friend.network == network)
|
.where(Friend.network == network)
|
||||||
.values(last_accessed=time.time())
|
.values(last_accessed=time.time())
|
||||||
)
|
)
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
|
|
||||||
|
|
||||||
def fetchBearerToken(code:str):
|
def fetchBearerToken(code:str):
|
||||||
data = {
|
data = {
|
||||||
'client_id': '%s' % CLIENT_ID,
|
'client_id': '%s' % CLIENT_ID,
|
||||||
@ -151,6 +154,7 @@ def fetchBearerToken(code:str):
|
|||||||
r.raise_for_status()
|
r.raise_for_status()
|
||||||
return r.json()
|
return r.json()
|
||||||
|
|
||||||
|
|
||||||
def refreshBearer(token:str):
|
def refreshBearer(token:str):
|
||||||
user = userFromToken(token)
|
user = userFromToken(token)
|
||||||
data = {
|
data = {
|
||||||
@ -167,11 +171,13 @@ def refreshBearer(token:str):
|
|||||||
token, user, pfp = createDiscordUser('', r.json())
|
token, user, pfp = createDiscordUser('', r.json())
|
||||||
return token, user, pfp
|
return token, user, pfp
|
||||||
|
|
||||||
|
|
||||||
def tokenFromID(ID:int) -> str:
|
def tokenFromID(ID:int) -> str:
|
||||||
stmt = select(Discord).where(Discord.id == ID)
|
stmt = select(Discord).where(Discord.id == ID)
|
||||||
result = db.session.scalar(stmt)
|
result = db.session.scalar(stmt)
|
||||||
return result.site_session_token
|
return result.site_session_token
|
||||||
|
|
||||||
|
|
||||||
def userFromToken(token: str) -> Discord:
|
def userFromToken(token: str) -> Discord:
|
||||||
stmt = select(Discord).where(Discord.site_session_token == token)
|
stmt = select(Discord).where(Discord.site_session_token == token)
|
||||||
result = db.session.scalar(stmt)
|
result = db.session.scalar(stmt)
|
||||||
@ -179,6 +185,7 @@ def userFromToken(token: str) -> Discord:
|
|||||||
raise Exception('invalid token!')
|
raise Exception('invalid token!')
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
|
||||||
def createDiscordUser(code:str, response:dict = None):
|
def createDiscordUser(code:str, response:dict = None):
|
||||||
if not response:
|
if not response:
|
||||||
response = fetchBearerToken(code)
|
response = fetchBearerToken(code)
|
||||||
@ -218,11 +225,13 @@ def createDiscordUser(code:str, response:dict = None):
|
|||||||
db.session.commit()
|
db.session.commit()
|
||||||
return token, user['username'], ('https://cdn.discordapp.com/avatars/%s/%s.%s' % (user['id'], user['avatar'], 'gif' if user['avatar'].startswith('a_') else 'png') if user['avatar'] else '')
|
return token, user['username'], ('https://cdn.discordapp.com/avatars/%s/%s.%s' % (user['id'], user['avatar'], 'gif' if user['avatar'].startswith('a_') else 'png') if user['avatar'] else '')
|
||||||
|
|
||||||
|
|
||||||
def deleteDiscordUser(ID:int):
|
def deleteDiscordUser(ID:int):
|
||||||
db.session.delete(db.session.get(Discord, ID))
|
db.session.delete(db.session.get(Discord, ID))
|
||||||
db.session.delete(db.session.get(DiscordFriends, ID))
|
db.session.delete(db.session.get(DiscordFriends, ID))
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
|
|
||||||
|
|
||||||
def getConnectedConsoles(ID:int):
|
def getConnectedConsoles(ID:int):
|
||||||
stmt = select(DiscordFriends).where(DiscordFriends.id == ID)
|
stmt = select(DiscordFriends).where(DiscordFriends.id == ID)
|
||||||
result = db.session.scalars(stmt).all()
|
result = db.session.scalars(stmt).all()
|
||||||
@ -281,14 +290,13 @@ def get_presence(friend_code: int, network: NetworkType, is_api: bool):
|
|||||||
|
|
||||||
# Create a user for this friend code, or update its last access date.
|
# Create a user for this friend code, or update its last access date.
|
||||||
# TODO(spotlightishere): This should be restructured!
|
# TODO(spotlightishere): This should be restructured!
|
||||||
createUser(friend_code, network, False)
|
create_user(friend_code, network, False)
|
||||||
|
|
||||||
network_start_time = db.session.get(Config, network).backend_uptime
|
network_start_time = db.session.get(Config, network).backend_uptime
|
||||||
if network_start_time is None and not disableBackendWarnings:
|
if network_start_time is None and not disableBackendWarnings:
|
||||||
raise Exception('Backend currently offline. please try again later')
|
raise Exception('Backend currently offline. please try again later')
|
||||||
|
|
||||||
principal_id = friend_code_to_principal_id(friend_code)
|
principal_id = friend_code_to_principal_id(friend_code)
|
||||||
|
|
||||||
stmt = (
|
stmt = (
|
||||||
select(Friend)
|
select(Friend)
|
||||||
.where(Friend.friend_code == friend_code)
|
.where(Friend.friend_code == friend_code)
|
||||||
@ -384,16 +392,19 @@ def index():
|
|||||||
response = make_response(render_template('dist/index.html', data = data))
|
response = make_response(render_template('dist/index.html', data = data))
|
||||||
return response
|
return response
|
||||||
|
|
||||||
|
|
||||||
# Index page
|
# Index page
|
||||||
@app.route('/index.html')
|
@app.route('/index.html')
|
||||||
def indexHTML():
|
def indexHTML():
|
||||||
return index()
|
return index()
|
||||||
|
|
||||||
|
|
||||||
# Favicon
|
# Favicon
|
||||||
@app.route('/favicon.ico')
|
@app.route('/favicon.ico')
|
||||||
def favicon():
|
def favicon():
|
||||||
return send_file('static/assets/img/favicon.ico')
|
return send_file('static/assets/img/favicon.ico')
|
||||||
|
|
||||||
|
|
||||||
# Settings page
|
# Settings page
|
||||||
@app.route('/settings')
|
@app.route('/settings')
|
||||||
def settings():
|
def settings():
|
||||||
@ -421,10 +432,12 @@ def settings():
|
|||||||
response = make_response(render_template('dist/settings.html', data = data))
|
response = make_response(render_template('dist/settings.html', data = data))
|
||||||
return response
|
return response
|
||||||
|
|
||||||
|
|
||||||
@app.route('/settings.html')
|
@app.route('/settings.html')
|
||||||
def settingsRedirect():
|
def settingsRedirect():
|
||||||
return redirect('/settings')
|
return redirect('/settings')
|
||||||
|
|
||||||
|
|
||||||
# Roster page
|
# Roster page
|
||||||
@app.route('/roster')
|
@app.route('/roster')
|
||||||
def roster():
|
def roster():
|
||||||
@ -618,7 +631,7 @@ def newUser(friendCode:int, network:int=-1, userCheck:bool = True):
|
|||||||
network = nameToNetworkType(request_arg)
|
network = nameToNetworkType(request_arg)
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
createUser(friendCode, network, True)
|
create_user(friendCode, network, True)
|
||||||
return {
|
return {
|
||||||
'Exception': False,
|
'Exception': False,
|
||||||
}
|
}
|
||||||
@ -705,6 +718,7 @@ def toggler(friendCode:int):
|
|||||||
db.session.commit()
|
db.session.commit()
|
||||||
return 'success!'
|
return 'success!'
|
||||||
|
|
||||||
|
|
||||||
# Delete
|
# Delete
|
||||||
@app.route('/api/delete/<int:friendCode>/', methods=['POST'])
|
@app.route('/api/delete/<int:friendCode>/', methods=['POST'])
|
||||||
@limiter.limit(togglerLimit)
|
@limiter.limit(togglerLimit)
|
||||||
@ -738,6 +752,7 @@ def deleter(friendCode:int):
|
|||||||
db.session.commit()
|
db.session.commit()
|
||||||
return 'success!'
|
return 'success!'
|
||||||
|
|
||||||
|
|
||||||
# Toggle one
|
# Toggle one
|
||||||
@app.route('/api/settings/<string:which>/', methods=['POST'])
|
@app.route('/api/settings/<string:which>/', methods=['POST'])
|
||||||
@limiter.limit(togglerLimit)
|
@limiter.limit(togglerLimit)
|
||||||
@ -761,6 +776,7 @@ def settingsToggler(which:str):
|
|||||||
return 'failure!'
|
return 'failure!'
|
||||||
return 'success!'
|
return 'success!'
|
||||||
|
|
||||||
|
|
||||||
# Make Nintendo's cert a 'secure' cert
|
# Make Nintendo's cert a 'secure' cert
|
||||||
@app.route('/cdn/i/<string:file>/', methods=['GET'])
|
@app.route('/cdn/i/<string:file>/', methods=['GET'])
|
||||||
@limiter.limit(cdnLimit)
|
@limiter.limit(cdnLimit)
|
||||||
@ -769,6 +785,7 @@ def cdnImage(file:str):
|
|||||||
response.headers['Content-Type'] = 'image/jpeg'
|
response.headers['Content-Type'] = 'image/jpeg'
|
||||||
return response
|
return response
|
||||||
|
|
||||||
|
|
||||||
# Local image cache
|
# Local image cache
|
||||||
@app.route('/cdn/l/<string:file>/', methods=['GET'])
|
@app.route('/cdn/l/<string:file>/', methods=['GET'])
|
||||||
@limiter.limit(cdnLimit)
|
@limiter.limit(cdnLimit)
|
||||||
@ -776,6 +793,7 @@ def localImageCdn(file:str):
|
|||||||
file = hex(int(file, 16)).replace('0x', '').zfill(16).upper()
|
file = hex(int(file, 16)).replace('0x', '').zfill(16).upper()
|
||||||
return send_file('cache/' + file + '.png')
|
return send_file('cache/' + file + '.png')
|
||||||
|
|
||||||
|
|
||||||
# Login route
|
# Login route
|
||||||
@app.route('/login', methods=['POST'])
|
@app.route('/login', methods=['POST'])
|
||||||
@limiter.limit(newUserLimit)
|
@limiter.limit(newUserLimit)
|
||||||
@ -791,6 +809,7 @@ def login():
|
|||||||
return redirect('/failure.html')
|
return redirect('/failure.html')
|
||||||
return redirect(f'/success.html?fc={fc}&network={network.lower_name()}')
|
return redirect(f'/success.html?fc={fc}&network={network.lower_name()}')
|
||||||
|
|
||||||
|
|
||||||
# Discord route
|
# Discord route
|
||||||
@app.route('/authorize')
|
@app.route('/authorize')
|
||||||
@limiter.limit(newUserLimit)
|
@limiter.limit(newUserLimit)
|
||||||
@ -804,6 +823,7 @@ def authorize():
|
|||||||
response.set_cookie('pfp', pfp, expires = datetime.datetime.now() + datetime.timedelta(days = 30))
|
response.set_cookie('pfp', pfp, expires = datetime.datetime.now() + datetime.timedelta(days = 30))
|
||||||
return response
|
return response
|
||||||
|
|
||||||
|
|
||||||
@app.route('/refresh')
|
@app.route('/refresh')
|
||||||
def refresh():
|
def refresh():
|
||||||
if local:
|
if local:
|
||||||
@ -818,6 +838,7 @@ def refresh():
|
|||||||
deleteDiscordUser(userFromToken(request.cookies['token']).id)
|
deleteDiscordUser(userFromToken(request.cookies['token']).id)
|
||||||
return redirect('/404.html')
|
return redirect('/404.html')
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
cacheTitles()
|
cacheTitles()
|
||||||
if local:
|
if local:
|
||||||
|
Loading…
Reference in New Issue
Block a user