| 
							- #!/usr/bin/python
 - #
 - # Test harness for UPnP ContentDirectory:1 service.
 - #
 - 
 - # Licensed under the MIT license
 - # http://opensource.org/licenses/mit-license.php
 - 
 - # Copyright 2005, Tim Potter <tpot@samba.org>
 - 
 - from twisted.web import client
 - from twisted.internet import reactor
 - from twisted.python import usage
 - 
 - import sys, string, SOAPpy
 - 
 - class UPnPSOAPProxy:
 - 	"""A proxy for making UPnP SOAP calls."""
 - 
 - 	def __init__(self, url):
 - 		self.url = url
 - 
 - 	def _cbGotResult(self, result):
 - 		return SOAPpy.parseSOAPRPC(result)
 - 
 - 	def callRemote(self, method, *args, **kwargs):
 - 
 - 		payload = SOAPpy.buildSOAP(args = args, kw = kwargs, method = method)
 - 		payload = string.replace(payload, '\n', '\r\n')
 - 		
 - 		action = \
 - 			   '"urn:schemas-upnp-org:service:ContentDirectory:1#%s"' % method
 - 		
 - 		page = client.getPage(self.url, postdata = payload,
 - 		    method = 'POST', headers = {'Content-Type': 'text/xml',
 - 		    'SOAPACTION': action})
 - 
 - 		return page.addCallback(self._cbGotResult)
 - 
 - class Options(usage.Options):
 - 	pass
 - 
 - def printResult(value):
 - 	print value
 - 	reactor.stop()
 - 
 - def printError(error):
 - 	print 'error', error
 - 	reactor.stop()
 - 
 - #proxy = UPnPSOAPProxy('http://192.168.126.128:5643/ContentDirectory/control')
 - proxy = UPnPSOAPProxy('http://127.0.0.1:8080/ContentDirectory/control')
 - #proxy = UPnPSOAPProxy('http://16.176.65.48:5643/ContentDirectory/control')
 - 
 - #proxy.callRemote('GetSearchCapabilities').addCallbacks(printResult, printError)
 - #proxy.callRemote('GetSortCapabilities').addCallbacks(printResult, printError)
 - 
 - proxy.callRemote('Browse',
 - 		ObjectID = '0\\Music\\Genres\\Others\\chimes.wav',
 - 		#BrowseFlag = 'BrowseDirectChildren',
 - 		BrowseFlag = 'BrowseMetadata',
 - 		Filter = '*',
 - 		StartingIndex = 0,
 - 		RequestedCount = 700,
 - 		SortCriteria = None).addCallbacks(printResult, printError)
 - 
 - reactor.run()
 
 
  |