allow json format for authmobile, default to XML

This commit is contained in:
duck 2024-01-03 21:57:42 -05:00
parent 5ec8035cb5
commit 16b977d874

View File

@ -54,19 +54,22 @@ class Audioscrobbler(APIHandler):
token = keys.get("authToken") token = keys.get("authToken")
user = keys.get("username") user = keys.get("username")
password = keys.get("password") password = keys.get("password")
format = keys.get("format") or "xml" # Audioscrobbler 2.0 uses XML by default
# either username and password # either username and password
if user is not None and password is not None: if user is not None and password is not None:
client = apikeystore.check_and_identify_key(password) client = apikeystore.check_and_identify_key(password)
if client: if client:
sessionkey = self.generate_key(client) sessionkey = self.generate_key(client)
return 200,"""<lfm status="ok"> if format == "json":
<session> return 200,{"session":{"key":sessionkey}}
<name>%s</name> else:
<key>%s</key> return 200,"""<lfm status="ok">
<subscriber>0</subscriber> <session>
</session> <name>%s</name>
</lfm> <key>%s</key>
""" % (self.xml_escape(user), self.xml_escape(sessionkey)) <subscriber>0</subscriber>
</session>
</lfm>""" % (self.xml_escape(user), self.xml_escape(sessionkey))
else: else:
raise InvalidAuthException() raise InvalidAuthException()
# or username and token (deprecated by lastfm) # or username and token (deprecated by lastfm)
@ -75,14 +78,16 @@ class Audioscrobbler(APIHandler):
key = apikeystore[client] key = apikeystore[client]
if md5(user + md5(key)) == token: if md5(user + md5(key)) == token:
sessionkey = self.generate_key(client) sessionkey = self.generate_key(client)
return 200,"""<lfm status="ok"> if format == "json":
<session> return 200,{"session":{"key":sessionkey}}
<name>%s</name> else:
<key>%s</key> return 200,"""<lfm status="ok">
<subscriber>0</subscriber> <session>
</session> <name>%s</name>
</lfm> <key>%s</key>
""" % (self.xml_escape(user), self.xml_escape(sessionkey)) <subscriber>0</subscriber>
</session>
</lfm>""" % (self.xml_escape(user), self.xml_escape(sessionkey))
raise InvalidAuthException() raise InvalidAuthException()
else: else:
raise BadAuthException() raise BadAuthException()