Python twisted.web.client.Agent() Examples
The following are 30
code examples of twisted.web.client.Agent().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
twisted.web.client
, or try the search function
.
Example #1
Source File: test_agent.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 6 votes |
def makeEndpoint(self, host=b'example.com', port=443): """ Create an L{Agent} with an https scheme and return its endpoint created according to the arguments. @param host: The host for the endpoint. @type host: L{bytes} @param port: The port for the endpoint. @type port: L{int} @return: An endpoint of an L{Agent} constructed according to args. @rtype: L{SSL4ClientEndpoint} """ return client.Agent(self.createReactor())._getEndpoint( URI.fromBytes(b'https://' + host + b":" + intToBytes(port) + b"/"))
Example #2
Source File: test_agent.py From learn_python3_spider with MIT License | 6 votes |
def test_nonPersistent(self): """ If C{persistent} is set to C{False} when creating the L{HTTPConnectionPool}, C{Request}s are created with their C{persistent} flag set to C{False}. Elsewhere in the tests for the underlying HTTP code we ensure that this will result in the disconnection of the HTTP protocol once the request is done, so that the connection will not be returned to the pool. """ pool = HTTPConnectionPool(self.reactor, persistent=False) agent = client.Agent(self.reactor, pool=pool) agent._getEndpoint = lambda *args: self agent.request(b"GET", b"http://127.0.0.1") self.assertEqual(self.protocol.requests[0][0].persistent, False)
Example #3
Source File: test_distrib.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 6 votes |
def testDistrib(self): # site1 is the publisher r1 = resource.Resource() r1.putChild("there", static.Data("root", "text/plain")) site1 = server.Site(r1) self.f1 = PBServerFactory(distrib.ResourcePublisher(site1)) self.port1 = reactor.listenTCP(0, self.f1) self.sub = distrib.ResourceSubscription("127.0.0.1", self.port1.getHost().port) r2 = resource.Resource() r2.putChild("here", self.sub) f2 = MySite(r2) self.port2 = reactor.listenTCP(0, f2) agent = client.Agent(reactor) d = agent.request(b"GET", "http://127.0.0.1:%d/here/there" % \ (self.port2.getHost().port,)) d.addCallback(client.readBody) d.addCallback(self.assertEqual, 'root') return d
Example #4
Source File: twisted_test.py From tornado-zh with MIT License | 6 votes |
def twisted_coroutine_fetch(self, url, runner): body = [None] @gen.coroutine def f(): # This is simpler than the non-coroutine version, but it cheats # by reading the body in one blob instead of streaming it with # a Protocol. client = Agent(self.reactor) response = yield client.request(b'GET', utf8(url)) with warnings.catch_warnings(): # readBody has a buggy DeprecationWarning in Twisted 15.0: # https://twistedmatrix.com/trac/changeset/43379 warnings.simplefilter('ignore', category=DeprecationWarning) body[0] = yield readBody(response) self.stop_loop() self.io_loop.add_callback(f) runner() return body[0]
Example #5
Source File: __init__.py From bugbuzz-python with MIT License | 6 votes |
def __init__( self, publish_key, subscribe_key, secret_key=None, cipher_key=None, auth_key=None, ssl_on=False, origin='pubsub.pubnub.com' ): super(PubnubTwisted, self).__init__( publish_key=publish_key, subscribe_key=subscribe_key, secret_key=secret_key, cipher_key=cipher_key, auth_key=auth_key, ssl_on=ssl_on, origin=origin, ) self.headers = {} self.headers['User-Agent'] = ['Python-Twisted'] self.headers['V'] = [self.version] self.pnsdk = 'PubNub-Python-' + 'Twisted' + '/' + self.version
Example #6
Source File: twisted_test.py From tornado-zh with MIT License | 6 votes |
def twisted_coroutine_fetch(self, url, runner): body = [None] @gen.coroutine def f(): # This is simpler than the non-coroutine version, but it cheats # by reading the body in one blob instead of streaming it with # a Protocol. client = Agent(self.reactor) response = yield client.request(b'GET', utf8(url)) with warnings.catch_warnings(): # readBody has a buggy DeprecationWarning in Twisted 15.0: # https://twistedmatrix.com/trac/changeset/43379 warnings.simplefilter('ignore', category=DeprecationWarning) body[0] = yield readBody(response) self.stop_loop() self.io_loop.add_callback(f) runner() return body[0]
Example #7
Source File: __init__.py From bugbuzz-python with MIT License | 6 votes |
def __init__( self, publish_key, subscribe_key, secret_key=None, cipher_key=None, auth_key=None, ssl_on=False, origin='pubsub.pubnub.com' ): super(PubnubTwisted, self).__init__( publish_key=publish_key, subscribe_key=subscribe_key, secret_key=secret_key, cipher_key=cipher_key, auth_key=auth_key, ssl_on=ssl_on, origin=origin, ) self.headers = {} self.headers['User-Agent'] = ['Python-Twisted'] self.headers['V'] = [self.version] self.pnsdk = 'PubNub-Python-' + 'Twisted' + '/' + self.version
Example #8
Source File: test_distrib.py From learn_python3_spider with MIT License | 6 votes |
def _requestTest(self, child, **kwargs): """ Set up a resource on a distrib site using L{ResourcePublisher} and then retrieve it from a L{ResourceSubscription} via an HTTP client. @param child: The resource to publish using distrib. @param **kwargs: Extra keyword arguments to pass to L{Agent.request} when requesting the resource. @return: A L{Deferred} which fires with the result of the request. """ mainPort, mainAddr = self._setupDistribServer(child) agent = client.Agent(reactor) url = "http://%s:%s/child" % (mainAddr.host, mainAddr.port) url = url.encode("ascii") d = agent.request(b"GET", url, **kwargs) d.addCallback(client.readBody) return d
Example #9
Source File: test_distrib.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 6 votes |
def _requestTest(self, child, **kwargs): """ Set up a resource on a distrib site using L{ResourcePublisher} and then retrieve it from a L{ResourceSubscription} via an HTTP client. @param child: The resource to publish using distrib. @param **kwargs: Extra keyword arguments to pass to L{Agent.request} when requesting the resource. @return: A L{Deferred} which fires with the result of the request. """ mainPort, mainAddr = self._setupDistribServer(child) agent = client.Agent(reactor) url = "http://%s:%s/child" % (mainAddr.host, mainAddr.port) d = agent.request(b"GET", url, **kwargs) d.addCallback(client.readBody) return d
Example #10
Source File: test_distrib.py From learn_python3_spider with MIT License | 6 votes |
def testDistrib(self): # site1 is the publisher r1 = resource.Resource() r1.putChild(b"there", static.Data(b"root", "text/plain")) site1 = server.Site(r1) self.f1 = PBServerFactory(distrib.ResourcePublisher(site1)) self.port1 = reactor.listenTCP(0, self.f1) self.sub = distrib.ResourceSubscription("127.0.0.1", self.port1.getHost().port) r2 = resource.Resource() r2.putChild(b"here", self.sub) f2 = MySite(r2) self.port2 = reactor.listenTCP(0, f2) agent = client.Agent(reactor) url = "http://127.0.0.1:{}/here/there".format( self.port2.getHost().port) url = url.encode("ascii") d = agent.request(b"GET", url) d.addCallback(client.readBody) d.addCallback(self.assertEqual, b'root') return d
Example #11
Source File: logs.py From balena-sdk-python with Apache License 2.0 | 6 votes |
def add(self, uuid, callback, error=None, count=None): query = 'stream=1' if count: query = 'stream=1&count={}'.format(count) url = urljoin( self.settings.get('api_endpoint'), '/device/v2/{uuid}/logs?{query}'.format(uuid=uuid, query=query) ) headers = {} headers[b'Authorization'] = ['Bearer {:s}'.format(self.settings.get('token')).encode()] agent = Agent(reactor, self.context_factory) d = agent.request(b'GET', url.encode(), Headers(headers), None) d.addCallback(cbRequest, callback, error) self.run() return d
Example #12
Source File: test_integration.py From autopush with Mozilla Public License 2.0 | 6 votes |
def __init__(self, url, sslcontext=None): self.url = url self.uaid = None self.ws = None self.use_webpush = True self.channels = {} self.messages = {} self.notif_response = None # type: Optional[HTTPResponse] self._crypto_key = """\ keyid="http://example.org/bob/keys/123;salt="XZwpw6o37R-6qoZjw6KwAw"\ """ self.sslcontext = sslcontext self.headers = { "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:61.0) " "Gecko/20100101 Firefox/61.0" }
Example #13
Source File: _validation.py From flocker with Apache License 2.0 | 6 votes |
def treq_with_authentication(reactor, ca_path, user_cert_path, user_key_path): """ Create a ``treq``-API object that implements the REST API TLS authentication. That is, validating the control service as well as presenting a certificate to the control service for authentication. :param reactor: The reactor to use. :param FilePath ca_path: Absolute path to the public cluster certificate. :param FilePath user_cert_path: Absolute path to the user certificate. :param FilePath user_key_path: Absolute path to the user private key. :return: ``treq`` compatible object. """ ca = Certificate.loadPEM(ca_path.getContent()) user_credential = UserCredential.from_files(user_cert_path, user_key_path) policy = ControlServicePolicy( ca_certificate=ca, client_credential=user_credential.credential) return HTTPClient(Agent(reactor, contextFactory=policy))
Example #14
Source File: test_integration.py From autopush with Mozilla Public License 2.0 | 6 votes |
def _agent(method, url, contextFactory=None, headers=None, body=None): kwargs = {} if contextFactory: kwargs['contextFactory'] = contextFactory agent = Agent(reactor, **kwargs) rbody = None if body: rbody = FileBodyProducer(StringIO(body)) response = yield agent.request(method, url, headers=headers, bodyProducer=rbody) proto = AccumulatingProtocol() proto.closedDeferred = Deferred() response.deliverBody(proto) yield proto.closedDeferred returnValue((response, proto.data))
Example #15
Source File: test_agent.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 6 votes |
def test_deprecatedDuckPolicy(self): """ Passing something that duck-types I{like} a L{web client context factory <twisted.web.client.WebClientContextFactory>} - something that does not provide L{IPolicyForHTTPS} - to L{Agent} emits a L{DeprecationWarning} even if you don't actually C{import WebClientContextFactory} to do it. """ def warnMe(): client.Agent(MemoryReactorClock(), "does-not-provide-IPolicyForHTTPS") warnMe() warnings = self.flushWarnings([warnMe]) self.assertEqual(len(warnings), 1) [warning] = warnings self.assertEqual(warning['category'], DeprecationWarning) self.assertEqual( warning['message'], "'does-not-provide-IPolicyForHTTPS' was passed as the HTTPS " "policy for an Agent, but it does not provide IPolicyForHTTPS. " "Since Twisted 14.0, you must pass a provider of IPolicyForHTTPS." )
Example #16
Source File: test_agent.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 6 votes |
def integrationTest(self, hostName, expectedAddress, addressType): """ Wrap L{AgentTestsMixin.integrationTest} with TLS. """ authority, server = certificatesForAuthorityAndServer(hostName .decode('ascii')) def tlsify(serverFactory): return TLSMemoryBIOFactory(server.options(), False, serverFactory) def tlsagent(reactor): from twisted.web.iweb import IPolicyForHTTPS from zope.interface import implementer @implementer(IPolicyForHTTPS) class Policy(object): def creatorForNetloc(self, hostname, port): return optionsForClientTLS(hostname.decode("ascii"), trustRoot=authority) return client.Agent(reactor, contextFactory=Policy()) (super(AgentHTTPSTests, self) .integrationTest(hostName, expectedAddress, addressType, serverWrapper=tlsify, createAgent=tlsagent, scheme=b'https'))
Example #17
Source File: test_agent.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 6 votes |
def test_noRedirect(self): """ L{client.RedirectAgent} behaves like L{client.Agent} if the response doesn't contain a redirect. """ deferred = self.agent.request(b'GET', b'http://example.com/foo') req, res = self.protocol.requests.pop() headers = http_headers.Headers() response = Response((b'HTTP', 1, 1), 200, b'OK', headers, None) res.callback(response) self.assertEqual(0, len(self.protocol.requests)) result = self.successResultOf(deferred) self.assertIdentical(response, result) self.assertIdentical(result.previousResponse, None)
Example #18
Source File: test_cgi.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 6 votes |
def test_protectedServerAndDate(self): """ If the CGI script emits a I{Server} or I{Date} header, these are ignored. """ cgiFilename = self.writeCGI(SPECIAL_HEADER_CGI) portnum = self.startServer(cgiFilename) url = "http://localhost:%d/cgi" % (portnum,) agent = client.Agent(reactor) d = agent.request(b"GET", url) d.addCallback(discardBody) def checkResponse(response): self.assertNotIn('monkeys', response.headers.getRawHeaders('server')) self.assertNotIn('last year', response.headers.getRawHeaders('date')) d.addCallback(checkResponse) return d
Example #19
Source File: test_cgi.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 6 votes |
def test_noDuplicateContentTypeHeaders(self): """ If the CGI script emits a I{content-type} header, make sure that the server doesn't add an additional (duplicate) one, as per ticket 4786. """ cgiFilename = self.writeCGI(NO_DUPLICATE_CONTENT_TYPE_HEADER_CGI) portnum = self.startServer(cgiFilename) url = "http://localhost:%d/cgi" % (portnum,) agent = client.Agent(reactor) d = agent.request(b"GET", url) d.addCallback(discardBody) def checkResponse(response): self.assertEqual( response.headers.getRawHeaders('content-type'), ['text/cgi-duplicate-test']) return response d.addCallback(checkResponse) return d
Example #20
Source File: test_cgi.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 6 votes |
def test_noProxyPassthrough(self): """ The CGI script is never called with the Proxy header passed through. """ cgiFilename = self.writeCGI(HEADER_OUTPUT_CGI) portnum = self.startServer(cgiFilename) url = "http://localhost:%d/cgi" % (portnum,) agent = client.Agent(reactor) headers = http_headers.Headers({"Proxy": ["foo"], "X-Innocent-Header": ["bar"]}) d = agent.request(b"GET", url, headers=headers) def checkResponse(response): headers = json.loads(response) self.assertEqual( set(headers.keys()), {"HTTP_HOST", "HTTP_CONNECTION", "HTTP_X_INNOCENT_HEADER"}) d.addCallback(client.readBody) d.addCallback(checkResponse) return d
Example #21
Source File: test_agent.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 6 votes |
def test_headersUnmodified(self): """ If a I{Host} header must be added to the request, the L{Headers} instance passed to L{Agent.request} is not modified. """ headers = http_headers.Headers() self.agent._getEndpoint = lambda *args: self self.agent.request( b'GET', b'http://example.com/foo', headers) protocol = self.protocol # The request should have been issued. self.assertEqual(len(protocol.requests), 1) # And the headers object passed in should not have changed. self.assertEqual(headers, http_headers.Headers())
Example #22
Source File: test_cgi.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 6 votes |
def test_malformedHeaderCGI(self): """ Check for the error message in the duplicated header """ cgiFilename = self.writeCGI(BROKEN_HEADER_CGI) portnum = self.startServer(cgiFilename) url = "http://localhost:%d/cgi" % (portnum,) agent = client.Agent(reactor) d = agent.request(b"GET", url) d.addCallback(discardBody) loggedMessages = [] def addMessage(eventDict): loggedMessages.append(log.textFromEventDict(eventDict)) log.addObserver(addMessage) self.addCleanup(log.removeObserver, addMessage) def checkResponse(ignored): self.assertIn("ignoring malformed CGI header: 'XYZ'", loggedMessages) d.addCallback(checkResponse) return d
Example #23
Source File: test_cgi.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 6 votes |
def testReadInput(self): cgiFilename = os.path.abspath(self.mktemp()) with open(cgiFilename, 'wt') as cgiFile: cgiFile.write(READINPUT_CGI) portnum = self.startServer(cgiFilename) agent = client.Agent(reactor) d = agent.request( uri="http://localhost:%d/cgi" % (portnum,), method=b"POST", bodyProducer=client.FileBodyProducer( BytesIO(b"Here is your stdin")), ) d.addCallback(client.readBody) d.addCallback(self._testReadInput_1) return d
Example #24
Source File: test_agent.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 6 votes |
def test_nonPersistent(self): """ If C{persistent} is set to C{False} when creating the L{HTTPConnectionPool}, C{Request}s are created with their C{persistent} flag set to C{False}. Elsewhere in the tests for the underlying HTTP code we ensure that this will result in the disconnection of the HTTP protocol once the request is done, so that the connection will not be returned to the pool. """ pool = HTTPConnectionPool(self.reactor, persistent=False) agent = client.Agent(self.reactor, pool=pool) agent._getEndpoint = lambda *args: self agent.request(b"GET", b"http://127.0.0.1") self.assertEqual(self.protocol.requests[0][0].persistent, False)
Example #25
Source File: test_cgi.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 5 votes |
def testCGI(self): cgiFilename = self.writeCGI(DUMMY_CGI) portnum = self.startServer(cgiFilename) d = client.Agent(reactor).request( "GET", 'http://localhost:%d/cgi' % (portnum,)) d.addCallback(client.readBody) d.addCallback(self._testCGI_1) return d
Example #26
Source File: test_agent.py From learn_python3_spider with MIT License | 5 votes |
def test_connectUsesConnectionPool(self): """ When a connection is made by the Agent, it uses its pool's C{getConnection} method to do so, with the endpoint returned by C{self._getEndpoint}. The key used is C{(scheme, host, port)}. """ endpoint = DummyEndpoint() class MyAgent(client.Agent): def _getEndpoint(this, uri): self.assertEqual((uri.scheme, uri.host, uri.port), (b"http", b"foo", 80)) return endpoint class DummyPool(object): connected = False persistent = False def getConnection(this, key, ep): this.connected = True self.assertEqual(ep, endpoint) # This is the key the default Agent uses, others will have # different keys: self.assertEqual(key, (b"http", b"foo", 80)) return defer.succeed(StubHTTPProtocol()) pool = DummyPool() agent = MyAgent(self.reactor, pool=pool) self.assertIdentical(pool, agent._pool) headers = http_headers.Headers() headers.addRawHeader(b"host", b"foo") bodyProducer = object() agent.request(b'GET', b'http://foo/', bodyProducer=bodyProducer, headers=headers) self.assertEqual(agent._pool.connected, True)
Example #27
Source File: test_agent.py From learn_python3_spider with MIT License | 5 votes |
def makeAgent(self): """ @return: a new L{twisted.web.client.Agent} instance """ return client.Agent(self.reactor)
Example #28
Source File: test_agent.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 5 votes |
def test_endpointType(self): """ L{Agent._getEndpoint} return a L{SSL4ClientEndpoint} when passed a scheme of C{'https'}. """ from twisted.internet.endpoints import _WrapperEndpoint endpoint = self.makeEndpoint() self.assertIsInstance(endpoint, _WrapperEndpoint) self.assertIsInstance(endpoint._wrappedEndpoint, HostnameEndpoint)
Example #29
Source File: test_agent.py From learn_python3_spider with MIT License | 5 votes |
def setUp(self): """ Create an L{Agent} wrapped around a fake reactor. """ self.reactor = self.createReactor() self.agent = self.makeAgent()
Example #30
Source File: test_agent.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 5 votes |
def setUp(self): """ Create an L{Agent} wrapped around a fake reactor. """ self.reactor = self.createReactor() self.agent = self.buildAgentForWrapperTest(self.reactor)