~certify-web-dev/twisted/certify-staging

« back to all changes in this revision

Viewing changes to doc/howto/tutorial/listings/finger/finger10.py

  • Committer: Bazaar Package Importer
  • Author(s): Matthias Klose
  • Date: 2010-01-02 19:38:17 UTC
  • mfrom: (2.2.4 sid)
  • Revision ID: james.westby@ubuntu.com-20100102193817-jphp464ppwh7dulg
Tags: 9.0.0-1
* python-twisted: Depend on the python-twisted-* 9.0 packages.
* python-twisted: Depend on python-zope.interface only. Closes: #557781.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
# Read username, output from factory interfacing to web, drop connections
 
2
 
2
3
from twisted.internet import protocol, reactor, defer, utils
3
4
from twisted.protocols import basic
4
5
from twisted.web import client
 
6
 
5
7
class FingerProtocol(basic.LineReceiver):
6
8
    def lineReceived(self, user):
7
 
        self.factory.getUser(user
8
 
        ).addErrback(lambda _: "Internal error in server"
9
 
        ).addCallback(lambda m:
10
 
                      (self.transport.write(m+"\r\n"),
11
 
                       self.transport.loseConnection()))
 
9
        d = self.factory.getUser(user)
 
10
 
 
11
        def onError(err):
 
12
            return 'Internal error in server'
 
13
        d.addErrback(onError)
 
14
 
 
15
        def writeResponse(message):
 
16
            self.transport.write(message + '\r\n')
 
17
            self.transport.loseConnection()
 
18
        d.addCallback(writeResponse)
 
19
 
12
20
class FingerFactory(protocol.ServerFactory):
13
21
    protocol = FingerProtocol
14
 
    def __init__(self, prefix): self.prefix=prefix
 
22
    
 
23
    def __init__(self, prefix):
 
24
        self.prefix=prefix
 
25
    
15
26
    def getUser(self, user):
16
27
        return client.getPage(self.prefix+user)
 
28
 
17
29
reactor.listenTCP(1079, FingerFactory(prefix='http://livejournal.com/~'))
18
30
reactor.run()