1
0
mirror of https://github.com/spl0k/supysonic.git synced 2024-12-23 01:16:18 +00:00

B"H api: use GET and POST values

This commit is contained in:
hhm 2016-08-24 01:45:07 -04:00
parent eeb23a641e
commit 306a7b3ec3
9 changed files with 30 additions and 30 deletions

View File

@ -32,7 +32,7 @@ def set_formatter():
return return
"""Return a function to create the response.""" """Return a function to create the response."""
(f, callback) = map(request.args.get, ['f', 'callback']) (f, callback) = map(request.values.get, ['f', 'callback'])
if f == 'jsonp': if f == 'jsonp':
# Some clients (MiniSub, Perisonic) set f to jsonp without callback for streamed data # Some clients (MiniSub, Perisonic) set f to jsonp without callback for streamed data
if not callback and request.endpoint not in [ 'stream_media', 'cover_art' ]: if not callback and request.endpoint not in [ 'stream_media', 'cover_art' ]:
@ -64,7 +64,7 @@ def authorize():
request.user = user request.user = user
return return
(username, password) = map(request.args.get, [ 'u', 'p' ]) (username, password) = map(request.values.get, [ 'u', 'p' ])
if not username or not password: if not username or not password:
return error return error
@ -81,7 +81,7 @@ def set_headers(response):
return response return response
if response.mimetype.startswith('text'): if response.mimetype.startswith('text'):
f = request.args.get('f') f = request.values.get('f')
response.headers['Content-Type'] = 'application/json' if f in [ 'jsonp', 'json' ] else 'text/xml' response.headers['Content-Type'] = 'application/json' if f in [ 'jsonp', 'json' ] else 'text/xml'
response.headers['Access-Control-Allow-Origin'] = '*' response.headers['Access-Control-Allow-Origin'] = '*'

View File

@ -31,8 +31,8 @@ from supysonic.db import now
@app.route('/rest/getRandomSongs.view', methods = [ 'GET', 'POST' ]) @app.route('/rest/getRandomSongs.view', methods = [ 'GET', 'POST' ])
def rand_songs(): def rand_songs():
size = request.args.get('size', '10') size = request.values.get('size', '10')
genre, fromYear, toYear, musicFolderId = map(request.args.get, [ 'genre', 'fromYear', 'toYear', 'musicFolderId' ]) genre, fromYear, toYear, musicFolderId = map(request.values.get, [ 'genre', 'fromYear', 'toYear', 'musicFolderId' ])
try: try:
size = int(size) if size else 10 size = int(size) if size else 10
@ -69,7 +69,7 @@ def rand_songs():
@app.route('/rest/getAlbumList.view', methods = [ 'GET', 'POST' ]) @app.route('/rest/getAlbumList.view', methods = [ 'GET', 'POST' ])
def album_list(): def album_list():
ltype, size, offset = map(request.args.get, [ 'type', 'size', 'offset' ]) ltype, size, offset = map(request.values.get, [ 'type', 'size', 'offset' ])
try: try:
size = int(size) if size else 10 size = int(size) if size else 10
offset = int(offset) if offset else 0 offset = int(offset) if offset else 0
@ -119,7 +119,7 @@ def album_list():
@app.route('/rest/getAlbumList2.view', methods = [ 'GET', 'POST' ]) @app.route('/rest/getAlbumList2.view', methods = [ 'GET', 'POST' ])
def album_list_id3(): def album_list_id3():
ltype, size, offset = map(request.args.get, [ 'type', 'size', 'offset' ]) ltype, size, offset = map(request.values.get, [ 'type', 'size', 'offset' ])
try: try:
size = int(size) if size else 10 size = int(size) if size else 10
offset = int(offset) if offset else 0 offset = int(offset) if offset else 0

View File

@ -30,7 +30,7 @@ from supysonic.db import RatingTrack, RatingFolder
@app.route('/rest/star.view', methods = [ 'GET', 'POST' ]) @app.route('/rest/star.view', methods = [ 'GET', 'POST' ])
def star(): def star():
id, albumId, artistId = map(request.args.getlist, [ 'id', 'albumId', 'artistId' ]) id, albumId, artistId = map(request.values.getlist, [ 'id', 'albumId', 'artistId' ])
def try_star(ent, starred_ent, eid): def try_star(ent, starred_ent, eid):
try: try:
@ -75,7 +75,7 @@ def star():
@app.route('/rest/unstar.view', methods = [ 'GET', 'POST' ]) @app.route('/rest/unstar.view', methods = [ 'GET', 'POST' ])
def unstar(): def unstar():
id, albumId, artistId = map(request.args.getlist, [ 'id', 'albumId', 'artistId' ]) id, albumId, artistId = map(request.values.getlist, [ 'id', 'albumId', 'artistId' ])
def try_unstar(ent, eid): def try_unstar(ent, eid):
try: try:
@ -109,7 +109,7 @@ def unstar():
@app.route('/rest/setRating.view', methods = [ 'GET', 'POST' ]) @app.route('/rest/setRating.view', methods = [ 'GET', 'POST' ])
def rate(): def rate():
id, rating = map(request.args.get, [ 'id', 'rating' ]) id, rating = map(request.values.get, [ 'id', 'rating' ])
if not id or not rating: if not id or not rating:
return request.error_formatter(10, 'Missing parameter') return request.error_formatter(10, 'Missing parameter')
@ -153,7 +153,7 @@ def scrobble():
if not status: if not status:
return res return res
t, submission = map(request.args.get, [ 'time', 'submission' ]) t, submission = map(request.values.get, [ 'time', 'submission' ])
if t: if t:
try: try:

View File

@ -37,8 +37,8 @@ def list_folders():
@app.route('/rest/getIndexes.view', methods = [ 'GET', 'POST' ]) @app.route('/rest/getIndexes.view', methods = [ 'GET', 'POST' ])
def list_indexes(): def list_indexes():
musicFolderId = request.args.get('musicFolderId') musicFolderId = request.values.get('musicFolderId')
ifModifiedSince = request.args.get('ifModifiedSince') ifModifiedSince = request.values.get('ifModifiedSince')
if ifModifiedSince: if ifModifiedSince:
try: try:
ifModifiedSince = int(ifModifiedSince) / 1000 ifModifiedSince = int(ifModifiedSince) / 1000

View File

@ -24,7 +24,7 @@ from supysonic.db import ChatMessage
@app.route('/rest/getChatMessages.view', methods = [ 'GET', 'POST' ]) @app.route('/rest/getChatMessages.view', methods = [ 'GET', 'POST' ])
def get_chat(): def get_chat():
since = request.args.get('since') since = request.values.get('since')
try: try:
since = int(since) / 1000 if since else None since = int(since) / 1000 if since else None
except: except:
@ -38,7 +38,7 @@ def get_chat():
@app.route('/rest/addChatMessage.view', methods = [ 'GET', 'POST' ]) @app.route('/rest/addChatMessage.view', methods = [ 'GET', 'POST' ])
def add_chat_message(): def add_chat_message():
msg = request.args.get('message') msg = request.values.get('message')
if not msg: if not msg:
return request.error_formatter(10, 'Missing message') return request.error_formatter(10, 'Missing message')

View File

@ -45,7 +45,7 @@ def stream_media():
if not status: if not status:
return res return res
maxBitRate, format, timeOffset, size, estimateContentLength, client = map(request.args.get, [ 'maxBitRate', 'format', 'timeOffset', 'size', 'estimateContentLength', 'c' ]) maxBitRate, format, timeOffset, size, estimateContentLength, client = map(request.values.get, [ 'maxBitRate', 'format', 'timeOffset', 'size', 'estimateContentLength', 'c' ])
if format: if format:
format = format.lower() format = format.lower()
@ -138,7 +138,7 @@ def cover_art():
if not res.has_cover_art or not os.path.isfile(os.path.join(res.path, 'cover.jpg')): if not res.has_cover_art or not os.path.isfile(os.path.join(res.path, 'cover.jpg')):
return request.error_formatter(70, 'Cover art not found') return request.error_formatter(70, 'Cover art not found')
size = request.args.get('size') size = request.values.get('size')
if size: if size:
try: try:
size = int(size) size = int(size)
@ -164,7 +164,7 @@ def cover_art():
@app.route('/rest/getLyrics.view', methods = [ 'GET', 'POST' ]) @app.route('/rest/getLyrics.view', methods = [ 'GET', 'POST' ])
def lyrics(): def lyrics():
artist, title = map(request.args.get, [ 'artist', 'title' ]) artist, title = map(request.values.get, [ 'artist', 'title' ])
if not artist: if not artist:
return request.error_formatter(10, 'Missing artist parameter') return request.error_formatter(10, 'Missing artist parameter')
if not title: if not title:

View File

@ -29,7 +29,7 @@ from . import get_entity
def list_playlists(): def list_playlists():
query = store.find(Playlist, Or(Playlist.user_id == request.user.id, Playlist.public == True)).order_by(Playlist.name) query = store.find(Playlist, Or(Playlist.user_id == request.user.id, Playlist.public == True)).order_by(Playlist.name)
username = request.args.get('username') username = request.values.get('username')
if username: if username:
if not request.user.admin: if not request.user.admin:
return request.error_formatter(50, 'Restricted to admins') return request.error_formatter(50, 'Restricted to admins')
@ -51,9 +51,9 @@ def show_playlist():
@app.route('/rest/createPlaylist.view', methods = [ 'GET', 'POST' ]) @app.route('/rest/createPlaylist.view', methods = [ 'GET', 'POST' ])
def create_playlist(): def create_playlist():
# Only(?) method where the android client uses form data rather than GET params # Only(?) method where the android client uses form data rather than GET params
playlist_id, name = map(lambda x: request.args.get(x) or request.form.get(x), [ 'playlistId', 'name' ]) playlist_id, name = map(request.values.get, [ 'playlistId', 'name' ])
# songId actually doesn't seem to be required # songId actually doesn't seem to be required
songs = request.args.getlist('songId') or request.form.getlist('songId') songs = request.values.getlist('songId')
try: try:
playlist_id = uuid.UUID(playlist_id) if playlist_id else None playlist_id = uuid.UUID(playlist_id) if playlist_id else None
songs = set(map(uuid.UUID, songs)) songs = set(map(uuid.UUID, songs))
@ -112,8 +112,8 @@ def update_playlist():
return request.error_formatter(50, "You're not allowed to delete a playlist that isn't yours") return request.error_formatter(50, "You're not allowed to delete a playlist that isn't yours")
playlist = res playlist = res
name, comment, public = map(request.args.get, [ 'name', 'comment', 'public' ]) name, comment, public = map(request.values.get, [ 'name', 'comment', 'public' ])
to_add, to_remove = map(request.args.getlist, [ 'songIdToAdd', 'songIndexToRemove' ]) to_add, to_remove = map(request.values.getlist, [ 'songIdToAdd', 'songIndexToRemove' ])
try: try:
to_add = set(map(uuid.UUID, to_add)) to_add = set(map(uuid.UUID, to_add))
to_remove = sorted(set(map(int, to_remove))) to_remove = sorted(set(map(int, to_remove)))

View File

@ -25,7 +25,7 @@ from supysonic.db import Folder, Track, Artist, Album
@app.route('/rest/search.view', methods = [ 'GET', 'POST' ]) @app.route('/rest/search.view', methods = [ 'GET', 'POST' ])
def old_search(): def old_search():
artist, album, title, anyf, count, offset, newer_than = map(request.args.get, [ 'artist', 'album', 'title', 'any', 'count', 'offset', 'newerThan' ]) artist, album, title, anyf, count, offset, newer_than = map(request.values.get, [ 'artist', 'album', 'title', 'any', 'count', 'offset', 'newerThan' ])
try: try:
count = int(count) if count else 20 count = int(count) if count else 20
offset = int(offset) if offset else 0 offset = int(offset) if offset else 0
@ -66,7 +66,7 @@ def old_search():
@app.route('/rest/search2.view', methods = [ 'GET', 'POST' ]) @app.route('/rest/search2.view', methods = [ 'GET', 'POST' ])
def new_search(): def new_search():
query, artist_count, artist_offset, album_count, album_offset, song_count, song_offset = map( query, artist_count, artist_offset, album_count, album_offset, song_count, song_offset = map(
request.args.get, [ 'query', 'artistCount', 'artistOffset', 'albumCount', 'albumOffset', 'songCount', 'songOffset' ]) request.values.get, [ 'query', 'artistCount', 'artistOffset', 'albumCount', 'albumOffset', 'songCount', 'songOffset' ])
try: try:
artist_count = int(artist_count) if artist_count else 20 artist_count = int(artist_count) if artist_count else 20
@ -95,7 +95,7 @@ def new_search():
@app.route('/rest/search3.view', methods = [ 'GET', 'POST' ]) @app.route('/rest/search3.view', methods = [ 'GET', 'POST' ])
def search_id3(): def search_id3():
query, artist_count, artist_offset, album_count, album_offset, song_count, song_offset = map( query, artist_count, artist_offset, album_count, album_offset, song_count, song_offset = map(
request.args.get, [ 'query', 'artistCount', 'artistOffset', 'albumCount', 'albumOffset', 'songCount', 'songOffset' ]) request.values.get, [ 'query', 'artistCount', 'artistOffset', 'albumCount', 'albumOffset', 'songCount', 'songOffset' ])
try: try:
artist_count = int(artist_count) if artist_count else 20 artist_count = int(artist_count) if artist_count else 20

View File

@ -25,7 +25,7 @@ from supysonic.managers.user import UserManager
@app.route('/rest/getUser.view', methods = [ 'GET', 'POST' ]) @app.route('/rest/getUser.view', methods = [ 'GET', 'POST' ])
def user_info(): def user_info():
username = request.args.get('username') username = request.values.get('username')
if username is None: if username is None:
return request.error_formatter(10, 'Missing username') return request.error_formatter(10, 'Missing username')
@ -50,7 +50,7 @@ def user_add():
if not request.user.admin: if not request.user.admin:
return request.error_formatter(50, 'Admin restricted') return request.error_formatter(50, 'Admin restricted')
username, password, email, admin = map(request.args.get, [ 'username', 'password', 'email', 'adminRole' ]) username, password, email, admin = map(request.values.get, [ 'username', 'password', 'email', 'adminRole' ])
if not username or not password or not email: if not username or not password or not email:
return request.error_formatter(10, 'Missing parameter') return request.error_formatter(10, 'Missing parameter')
admin = True if admin in (True, 'True', 'true', 1, '1') else False admin = True if admin in (True, 'True', 'true', 1, '1') else False
@ -66,7 +66,7 @@ def user_del():
if not request.user.admin: if not request.user.admin:
return request.error_formatter(50, 'Admin restricted') return request.error_formatter(50, 'Admin restricted')
username = request.args.get('username') username = request.values.get('username')
user = store.find(User, User.name == username).one() user = store.find(User, User.name == username).one()
if not user: if not user:
return request.error_formatter(70, 'Unknown user') return request.error_formatter(70, 'Unknown user')
@ -79,7 +79,7 @@ def user_del():
@app.route('/rest/changePassword.view', methods = [ 'GET', 'POST' ]) @app.route('/rest/changePassword.view', methods = [ 'GET', 'POST' ])
def user_changepass(): def user_changepass():
username, password = map(request.args.get, [ 'username', 'password' ]) username, password = map(request.values.get, [ 'username', 'password' ])
if not username or not password: if not username or not password:
return request.error_formatter(10, 'Missing parameter') return request.error_formatter(10, 'Missing parameter')