[Twisted-Python] HTTP client with authorization
    Johan Lübcke 
    johan.lubcke at appload.net
       
    Tue Mar 18 05:58:53 MST 2003
    
    
  
Hi
I've just started to use twisted for a small project to relay GSM SMS
messages to Zope, and for that I need to do HTTP requests with basic
authentication. Would this be something that would be interesting to
have in twisted.web.client?
I ended up with this:
import base64
import twisted.internet.reactor
import twisted.web.client
import urlparse
class AuthHTTPPageGetter(twisted.web.client.HTTPPageGetter):
    def connectionMade(self):
        self.sendCommand('GET', self.factory.url)
        self.sendHeader('Host', self.factory.host)
        self.sendHeader('User-Agent', self.factory.agent)
        if self.factory.http_user:
            cred = '%s:%s' % (self.factory.http_user,
                              self.factory.http_password)
            auth = "Basic " +
base64.encodestring(cred).replace('\012','')
            self.sendHeader('Authorization', auth)
        self.endHeaders()
        self.headers = {}
def _parse(url):
    parsed = urlparse.urlparse(url)
    path = urlparse.urlunparse(('','')+parsed[2:])
    host, port = parsed[1], 80
    if ':' in host:
        host, port = host.split(':')
        port = int(port)
    return host, port, path
def getPage(url, http_user=None, http_password=None):
    host, port, url = _parse(url)
    factory = twisted.web.client.HTTPClientFactory(host, url)
    factory.http_user = http_user
    factory.http_password = http_password
    factory.protocol = AuthHTTPPageGetter
    twisted.internet.reactor.connectTCP(host, port, factory)
    return factory.deferred
Thanks for a great framework! Comming from asyncore, twisted makes
things quite a lot easier...
  / Johan
-- 
Johan Lübcke, System Architect                         Appload Nordic AB          
Mobile: +46 730 632303                            http://www.appload.com
Office: +46 8 4420933                    mailto:johan.lubcke at appload.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part
URL: </pipermail/twisted-python/attachments/20030318/5ddcdcb5/attachment.sig>
    
    
More information about the Twisted-Python
mailing list