7
by Jean-Paul Calderone
Basics of Deferreds |
1 |
from twisted.internet import reactor |
2 |
from twisted.internet.protocol import ClientFactory |
|
3 |
from twisted.protocols.basic import LineOnlyReceiver |
|
4 |
||
5 |
||
6 |
def printDateAndExit(date): |
|
7 |
print 'Server time is', date.strip() |
|
8 |
reactor.stop() |
|
9 |
||
10 |
def main(): |
|
11 |
factory = ClientFactory() |
|
12 |
factory.protocol = lambda: DateReader(printDateAndExit) |
|
13 |
reactor.connectTCP('google.com', 80, factory) |
|
14 |
reactor.run() |
|
15 |
||
16 |
||
17 |
class DateReader(LineOnlyReceiver): |
|
18 |
def __init__(self, dateHeaderReceived): |
|
19 |
self.dateHeaderReceived = dateHeaderReceived |
|
20 |
||
21 |
||
22 |
def connectionMade(self): |
|
23 |
self.transport.write('HEAD / HTTP/1.0\r\n\r\n') |
|
24 |
||
25 |
||
26 |
def lineReceived(self, line): |
|
27 |
if line.lower().startswith('date:'): |
|
28 |
ignored, date = line.split(':', 1) |
|
29 |
self.dateHeaderReceived(date) |
|
30 |
self.transport.loseConnection() |
|
31 |
||
32 |
main() |
|
33 |
||
34 |