platypush/platypush/backend/http/app/routes/plugins/spotify.py

40 lines
1.0 KiB
Python

import json
from flask import abort, request, Response, Blueprint, escape
from platypush.backend.http.app import template_folder
from platypush.common.spotify import SpotifyMixin
from platypush.utils import get_redis
spotify = Blueprint('spotify', __name__, template_folder=template_folder)
# Declare routes list
__routes__ = [
spotify,
]
@spotify.route('/spotify/auth_callback', methods=['GET'])
def auth_callback():
"""
This route is used as a callback URL for Spotify API authentication flows.
"""
code = request.args.get('code')
state = request.args.get('state')
error = request.args.get('error')
if not state:
abort(400, 'No state parameters provided')
msg = {'error': code} if error else {'code': code}
get_redis().rpush(SpotifyMixin.get_spotify_queue_for_state(state), json.dumps(msg))
if error:
return Response(f'Authentication failed: {escape(error)}')
return Response('Authentication successful. You can now close this window')
# vim:sw=4:ts=4:et: