Source code for coherence.upnp.services.servers.media_receiver_registrar_server

# Licensed under the MIT license
# http://opensource.org/licenses/mit-license.php

# Copyright 2006, Frank Scholz <coherence@beebits.net>

# Content Directory service

from twisted.web import resource

from coherence.upnp.core import service
from coherence.upnp.core.soap_service import UPnPPublisher


[docs]class FakeMediaReceiverRegistrarBackend:
[docs] def upnp_IsAuthorized(self, *args, **kwargs): r = {'Result': 1} return r
[docs] def upnp_IsValidated(self, *args, **kwargs): r = {'Result': 1} return r
[docs] def upnp_RegisterDevice(self, *args, **kwargs): """ in parameter RegistrationReqMsg """ RegistrationReqMsg = kwargs['RegistrationReqMsg'] """ FIXME: check with WMC and WMP """ r = {'RegistrationRespMsg': 'WTF should be in here?'} return r
[docs]class MediaReceiverRegistrarControl(service.ServiceControl, UPnPPublisher): def __init__(self, server): service.ServiceControl.__init__(self) UPnPPublisher.__init__(self) self.service = server self.variables = server.get_variables() self.actions = server.get_actions()
[docs]class MediaReceiverRegistrarServer(service.ServiceServer, resource.Resource): implementation = 'optional' def __init__(self, device, backend=None): self.device = device if backend is None: backend = self.device.backend resource.Resource.__init__(self) self.version = 1 self.namespace = 'microsoft.com' self.id_namespace = 'microsoft.com' service.ServiceServer.__init__(self, 'X_MS_MediaReceiverRegistrar', self.version, backend) self.device_description_tmpl = 'xbox-description-1.xml' self.control = MediaReceiverRegistrarControl(self) self.putChild(b'scpd.xml', service.scpdXML(self, self.control)) self.putChild(b'control', self.control)
[docs] def listchilds(self, uri): if isinstance(uri, bytes): uri = uri.decode('utf-8') cl = '' for c in self.children: cl += '<li><a href=%s/%s>%s</a></li>' % (uri, c, c) return cl
[docs] def render(self, request): return \ '<html><p>root of the MediaReceiverRegistrar</p>' \ '<p><ul>%s</ul></p></html>' % self.listchilds( request.uri.decode('utf-8'))