FEATURE: Add registry API endpoint

This commit is contained in:
Dominique Barton 2019-02-21 18:51:53 +01:00
parent 95c49a1456
commit aac4cf139e
3 changed files with 65 additions and 10 deletions

View file

@ -10,12 +10,13 @@ import os
from mopidy import config, ext
from .frontend import PummeluffFrontend
from .web import LatestHandler, RegisterHandler
from .web import LatestHandler, RegistryHandler, RegisterHandler
def app_factory(config, core):
return [
('/latest/', LatestHandler, {'core': core}),
('/registry/', RegistryHandler, {'core': core}),
('/register/', RegisterHandler, {'core': core}),
]

View file

@ -125,6 +125,26 @@ class Card(object):
return Card.all().get(uid)
@property
def dict(self):
'''
Return the dict version of this card.
:return: The dict version of this card
:rtype: dict
'''
d = {
'uid': self.uid,
'alias': self.alias,
'type': self.get_type(),
'parameter': self.parameter,
}
if hasattr(self, 'scanned'):
d['scanned'] = self.scanned
return d
class TracklistCard(Card):
'''

View file

@ -7,6 +7,7 @@ from __future__ import absolute_import, unicode_literals
__all__ = (
'LatestHandler',
'RegistryHandler',
'RegisterHandler',
)
@ -52,13 +53,43 @@ class LatestHandler(RequestHandler):
data = {
'success': True,
'message': 'Scanned card found',
'scanned': card.scanned,
'uid': card.uid,
'alias': card.alias,
'type': card.get_type(),
'parameter': card.parameter,
}
data.update(card.dict)
self.set_header('Content-type', 'application/json')
self.write(dumps(data))
class RegistryHandler(RequestHandler):
'''
Request handler which returns all registered cards.
'''
last_scan = {}
def initialize(self, core):
'''
Initialize request handler with Mopidy core.
:param mopidy.core.Core mopidy_core: The mopidy core instance
'''
self.core = core
def get(self):
'''
Handle GET request.
'''
cards = []
for uid, card in Card.all().items():
cards.append(card.dict)
data = {
'success': True,
'message': 'Registry successfully read',
'cards': cards
}
self.set_header('Content-type', 'application/json')
self.write(dumps(data))
@ -88,12 +119,15 @@ class RegisterHandler(RequestHandler):
card_type=self.get_argument('type')
)
self.set_header('Content-type', 'application/json')
self.write({
data = {
'success': True,
'message': 'Card successfully registered',
'card': str(card)
})
}
data.update(card.dict)
self.set_header('Content-type', 'application/json')
self.write(dumps(data))
def put(self):
'''