Exemplo n.º 1
0
class ControlProxy(object):
    def __init__(self, proxyname, proxytype, proxytrans, udn, controlpoint,
                 mediaserver, config):
        self.root_device = None
        self.upnp_urn = 'urn:schemas-upnp-org:device:MediaServer:1'
        self.proxyname = proxyname
        self.proxytype = proxytype
        self.proxytrans = proxytrans
        self.udn = udn
        self.controlpoint = controlpoint
        self.mediaserver = mediaserver
        self.destmusicaddress = None
        self.config = config

    def _add_root_device(self):
        """ Creates the root device object which will represent the device
        description.
        """
        project_page = 'http://brisa.garage.maemo.org'
        #        ip = get_ip_address('')
        ip, port = self.controlpoint._event_listener.host()
        if self.proxytype == 'WMP':
            listen_url = "http://" + ip + ':10243'
            model_name = 'Windows Media Player Sharing'
        else:
            listen_url = ''
            model_name = 'Rhapsody'

        self.root_device = Device(
            self.upnp_urn,
            self.proxyname,
            udn=self.udn,
            manufacturer='Henkelis',
            manufacturer_url=project_page,
            model_description='Media Server',
            model_name=model_name,
            model_number='3.0',
            model_url=project_page,
            udp_listener=self.controlpoint._ssdp_server.udp_listener,
            force_listen_url=listen_url)
        self.root_device.webserver.get_render = self.get_render

    def _add_services(self):
        cdservice = ContentDirectory(self.controlpoint, self.mediaserver,
                                     self.root_device.location, self)
        self.root_device.add_service(cdservice)
        cmservice = ConnectionManager(self.controlpoint, self.mediaserver)
        self.root_device.add_service(cmservice)
        mrservice = X_MS_MediaReceiverRegistrar()
        self.root_device.add_service(mrservice)

    def _add_resources(self):
        pass

    def _load(self):
        self._add_root_device()
        self._add_services()
        self._add_resources()

    def start(self):
        self.stop()
        self._load()
        self.root_device.start()

    def stop(self):
        if self.root_device:
            self.root_device.stop()
            self.root_device = None

    def get_render(self, uri, params):
        return self

    def render(self, env, start_response):
        #        if self.destmusicaddress is not None:
        #            address = self.destmusicaddress
        #        else:
        #            address = self.destaddress
        #        respbody = HTTPRedirect().call(address, env, start_response)
        if env['PATH_INFO'] == '/on.mp3':
            print ">>>>>>>>>>>>>>>>>>>>>>"
            print ">>>>>>>>> ON >>>>>>>>>"
            print ">>>>>>>>>>>>>>>>>>>>>>"
        elif env['PATH_INFO'] == '/off.mp3':
            print ">>>>>>>>>>>>>>>>>>>>>>"
            print ">>>>>>>>> OFF >>>>>>>>"
            print ">>>>>>>>>>>>>>>>>>>>>>"

        return []
Exemplo n.º 2
0
class ControlProxy(object):
    
    def __init__(self, proxyname, proxytype, proxytrans, udn, controlpoint, mediaserver, config):
        self.root_device = None
        self.upnp_urn = 'urn:schemas-upnp-org:device:MediaServer:1'
        self.proxyname = proxyname
        self.proxytype = proxytype
        self.proxytrans = proxytrans
        self.udn = udn
        self.controlpoint = controlpoint
        self.mediaserver = mediaserver
        self.destmusicaddress = None
        self.config = config

    def _add_root_device(self):
        """ Creates the root device object which will represent the device
        description.
        """
        project_page = 'http://brisa.garage.maemo.org'
#        ip = get_ip_address('')
        ip, port = self.controlpoint._event_listener.host()
        if self.proxytype == 'WMP':
            listen_url = "http://" + ip + ':10243'
            model_name='Windows Media Player Sharing'
        else:
            listen_url = ''
            model_name='Rhapsody'
        
        self.root_device = Device(self.upnp_urn,
                                  self.proxyname,
                                  udn=self.udn,
                                  manufacturer='Henkelis',
                                  manufacturer_url=project_page,
                                  model_description='Media Server',
                                  model_name=model_name,
                                  model_number='3.0',
                                  model_url=project_page,
                                  udp_listener=self.controlpoint._ssdp_server.udp_listener,
                                  force_listen_url=listen_url)
        self.root_device.webserver.get_render = self.get_render

    def _add_services(self):
        cdservice = ContentDirectory(self.controlpoint, self.mediaserver, self.root_device.location, self)
        self.root_device.add_service(cdservice)
        cmservice = ConnectionManager(self.controlpoint, self.mediaserver)
        self.root_device.add_service(cmservice)
        mrservice = X_MS_MediaReceiverRegistrar()
        self.root_device.add_service(mrservice)

    def _add_resources(self):
        pass

    def _load(self):
        self._add_root_device()
        self._add_services()
        self._add_resources()

    def start(self):
        self.stop()
        self._load()
        self.root_device.start()

    def stop(self):
        if self.root_device:
            self.root_device.stop()
            self.root_device = None

    def get_render(self, uri, params):
        return self

    def render(self, env, start_response):
#        if self.destmusicaddress is not None:
#            address = self.destmusicaddress
#        else:
#            address = self.destaddress
#        respbody = HTTPRedirect().call(address, env, start_response)
        if env['PATH_INFO'] == '/on.mp3':
            print ">>>>>>>>>>>>>>>>>>>>>>"
            print ">>>>>>>>> ON >>>>>>>>>"
            print ">>>>>>>>>>>>>>>>>>>>>>"
        elif env['PATH_INFO'] == '/off.mp3':
            print ">>>>>>>>>>>>>>>>>>>>>>"
            print ">>>>>>>>> OFF >>>>>>>>"
            print ">>>>>>>>>>>>>>>>>>>>>>"

        return []