Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Leap:42.2:Ports
python-Coherence
coherence-getPage.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File coherence-getPage.patch of Package python-Coherence
Index: Coherence-0.6.6.2/coherence/upnp/core/test/test_utils.py =================================================================== --- Coherence-0.6.6.2.orig/coherence/upnp/core/test/test_utils.py +++ Coherence-0.6.6.2/coherence/upnp/core/test/test_utils.py @@ -9,9 +9,14 @@ Test cases for L{upnp.core.utils} """ +import os from twisted.trial import unittest +from twisted.python.filepath import FilePath +from twisted.internet import reactor +from twisted.web import static, server +from twisted.protocols import policies -from coherence.upnp.core.utils import * +from coherence.upnp.core import utils # This data is joined using CRLF pairs. testChunkedData = ['200', @@ -121,9 +126,49 @@ class TestUpnpUtils(unittest.TestCase): based on a test and data provided by Lawrence """ testData = '\r\n'.join(testChunkedData) - newData = de_chunk_payload(testData) + newData = utils.de_chunk_payload(testData) # see whether we can parse the result self.assertEqual(newData, '\r\n'.join( testChunkedDataResult)) +class TestClient(unittest.TestCase): + + def _listen(self, site): + return reactor.listenTCP(0, site, interface="127.0.0.1") + + def setUp(self): + name = self.mktemp() + os.mkdir(name) + FilePath(name).child("file").setContent("0123456789") + r = static.File(name) + self.site = server.Site(r, timeout=None) + self.wrapper = policies.WrappingFactory(self.site) + self.port = self._listen(self.wrapper) + self.portno = self.port.getHost().port + + def tearDown(self): + return self.port.stopListening() + + def getURL(self, path): + return "http://127.0.0.1:%d/%s" % (self.portno, path) + + def assertResponse(self, original, content, headers): + self.assertIsInstance(original, tuple) + self.assertEqual(original[0], content) + originalHeaders = original[1] + for header in headers: + self.assertIn(header, originalHeaders) + self.assertEqual(originalHeaders[header], headers[header]) + + def test_getPage(self): + content = '0123456789' + headers = {'accept-ranges': ['bytes'], + 'content-length': ['10'], + 'content-type': ['text/html']} + d = utils.getPage(self.getURL("file")) + d.addCallback(self.assertResponse, content, headers) + return d + + + # $Id:$ Index: Coherence-0.6.6.2/coherence/upnp/core/utils.py =================================================================== --- Coherence-0.6.6.2.orig/coherence/upnp/core/utils.py +++ Coherence-0.6.6.2/coherence/upnp/core/utils.py @@ -517,48 +517,14 @@ class HeaderAwareHTTPClientFactory(clien protocol = myHTTPPageGetter noisy = False - def __init__(self, url, method='GET', postdata=None, headers=None, - agent="Twisted PageGetter", timeout=0, cookies=None, - followRedirect=True, redirectLimit=20): - self.followRedirect = followRedirect - self.redirectLimit = redirectLimit - self._redirectCount = 0 - self.timeout = timeout - self.agent = agent - - if cookies is None: - cookies = {} - self.cookies = cookies - if headers is not None: - self.headers = InsensitiveDict(headers) - else: - self.headers = InsensitiveDict() - if postdata is not None: - self.headers.setdefault('Content-Length', len(postdata)) - # just in case a broken http/1.1 decides to keep connection alive - self.headers.setdefault("connection", "close") - self.postdata = postdata - self.method = method - - self.setURL(url) - - self.waiting = 1 - self.deferred = defer.Deferred() - self.response_headers = None - def buildProtocol(self, addr): - p = protocol.ClientFactory.buildProtocol(self, addr) + p = client.HTTPClientFactory.buildProtocol(self, addr) p.method = self.method p.followRedirect = self.followRedirect - if self.timeout: - timeoutCall = reactor.callLater(self.timeout, p.timeout) - self.deferred.addBoth(self._cancelTimeout, timeoutCall) return p def page(self, page): - if self.waiting: - self.waiting = 0 - self.deferred.callback((page, self.response_headers)) + client.HTTPClientFactory.page(self, (page, self.response_headers)) class HeaderAwareHTTPDownloader(client.HTTPDownloader): @@ -577,24 +543,22 @@ class HeaderAwareHTTPDownloader(client.H self.requestedPartial = 0 + def getPage(url, contextFactory=None, *args, **kwargs): - """Download a web page as a string. + """ + Download a web page as a string. Download a page. Return a deferred, which will callback with a page (as a string) or errback with a description of the error. See HTTPClientFactory to see what extra args can be passed. """ - scheme, host, port, path = client._parse(url) - factory = HeaderAwareHTTPClientFactory(url, *args, **kwargs) - if scheme == 'https': - from twisted.internet import ssl - if contextFactory is None: - contextFactory = ssl.ClientContextFactory() - reactor.connectSSL(host, port, factory, contextFactory) - else: - reactor.connectTCP(host, port, factory) - return factory.deferred + kwargs['agent'] = "Coherence PageGetter" + return client._makeGetterFactory( + url, + HeaderAwareHTTPClientFactory, + contextFactory=contextFactory, + *args, **kwargs).deferred def downloadPage(url, file, contextFactory=None, *args, **kwargs):
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor