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