##// END OF EJS Templates
test-hgweb-*: replace "XX years ago" by a fixed string in get-with-headers.py...
Gilles Moris -
r7544:c5e37dc3 default
parent child Browse files
Show More
@@ -3,7 +3,7 b''
3 __doc__ = """This does HTTP get requests given a host:port and path and returns
3 __doc__ = """This does HTTP get requests given a host:port and path and returns
4 a subset of the headers plus the body of the result."""
4 a subset of the headers plus the body of the result."""
5
5
6 import httplib, sys
6 import httplib, sys, re
7
7
8 try:
8 try:
9 import msvcrt, os
9 import msvcrt, os
@@ -21,7 +21,9 b' for h in headers:'
21 if response.getheader(h, None) is not None:
21 if response.getheader(h, None) is not None:
22 print "%s: %s" % (h, response.getheader(h))
22 print "%s: %s" % (h, response.getheader(h))
23 print
23 print
24 sys.stdout.write(response.read())
24 data = response.read()
25 data = re.sub('\d+ years', 'many years', data)
26 sys.stdout.write(data)
25
27
26 if 200 <= response.status <= 299:
28 if 200 <= response.status <= 299:
27 sys.exit(0)
29 sys.exit(0)
@@ -20,21 +20,21 b' echo % Logs and changes'
20 "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/log/?style=atom' | sed "s/http:\/\/[^/]*\//http:\/\/127.0.0.1\//"
20 "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/log/?style=atom' | sed "s/http:\/\/[^/]*\//http:\/\/127.0.0.1\//"
21 "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/log/1/?style=atom' | sed "s/http:\/\/[^/]*\//http:\/\/127.0.0.1\//"
21 "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/log/1/?style=atom' | sed "s/http:\/\/[^/]*\//http:\/\/127.0.0.1\//"
22 "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/log/1/foo/?style=atom' | sed "s/http:\/\/[^/]*\//http:\/\/127.0.0.1\//"
22 "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/log/1/foo/?style=atom' | sed "s/http:\/\/[^/]*\//http:\/\/127.0.0.1\//"
23 "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/shortlog/' | sed "s/[0-9]* years/many years/"
23 "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/shortlog/'
24 "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/rev/0/' | sed "s/[0-9]* years ago/long ago/g"
24 "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/rev/0/'
25 "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/rev/1/?style=raw'
25 "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/rev/1/?style=raw'
26
26
27 echo % File-related
27 echo % File-related
28 "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/file/1/foo/?style=raw'
28 "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/file/1/foo/?style=raw'
29 "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/annotate/1/foo/?style=raw'
29 "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/annotate/1/foo/?style=raw'
30 "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/file/1/?style=raw'
30 "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/file/1/?style=raw'
31 "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/file/1/foo' | sed "s/[0-9]* years/many years/"
31 "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/file/1/foo'
32 "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/filediff/1/foo/?style=raw'
32 "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/filediff/1/foo/?style=raw'
33
33
34 echo % Overviews
34 echo % Overviews
35 "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/tags/?style=atom' | sed "s/http:\/\/[^/]*\//http:\/\/127.0.0.1\//"
35 "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/tags/?style=atom' | sed "s/http:\/\/[^/]*\//http:\/\/127.0.0.1\//"
36 "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/summary/?style=gitweb' | sed "s/[0-9]* years ago/long ago/g"
36 "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/summary/?style=gitweb'
37 "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/graph/?style=gitweb' | sed "s/[0-9]* years/long/g"
37 "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/graph/?style=gitweb'
38
38
39 echo % capabilities
39 echo % capabilities
40 "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '?cmd=capabilities'
40 "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '?cmd=capabilities'
1 NO CONTENT: modified file, binary diff hidden
NO CONTENT: modified file, binary diff hidden
@@ -59,7 +59,7 b' files, or words in the commit message</s'
59 </tr>
59 </tr>
60 <tr>
60 <tr>
61 <th class="date">date</th>
61 <th class="date">date</th>
62 <td class="date">Thu Jan 01 00:00:00 1970 +0000 (38 years ago)</td></tr>
62 <td class="date">Thu Jan 01 00:00:00 1970 +0000 (many years ago)</td></tr>
63 <tr>
63 <tr>
64 <th class="author">parents</th>
64 <th class="author">parents</th>
65 <td class="author"></td>
65 <td class="author"></td>
@@ -154,7 +154,7 b' files, or words in the commit message</s'
154 </tr>
154 </tr>
155 <tr>
155 <tr>
156 <th>date</th>
156 <th>date</th>
157 <td>Thu Jan 01 00:00:00 1970 +0000 (38 years ago)</td>
157 <td>Thu Jan 01 00:00:00 1970 +0000 (many years ago)</td>
158 </tr>
158 </tr>
159 <tr>
159 <tr>
160 <th>parents</th>
160 <th>parents</th>
@@ -241,7 +241,7 b' files, or words in the commit message</s'
241 </tr>
241 </tr>
242 <tr>
242 <tr>
243 <th class="date">date</th>
243 <th class="date">date</th>
244 <td class="date">Thu Jan 01 00:00:00 1970 +0000 (38 years ago)</td></tr>
244 <td class="date">Thu Jan 01 00:00:00 1970 +0000 (many years ago)</td></tr>
245 <tr>
245 <tr>
246 <th class="author">parents</th>
246 <th class="author">parents</th>
247 <td class="author"></td>
247 <td class="author"></td>
@@ -338,7 +338,7 b' files, or words in the commit message</s'
338 </tr>
338 </tr>
339 <tr>
339 <tr>
340 <th>date</th>
340 <th>date</th>
341 <td>Thu Jan 01 00:00:00 1970 +0000 (38 years ago)</td>
341 <td>Thu Jan 01 00:00:00 1970 +0000 (many years ago)</td>
342 </tr>
342 </tr>
343 <tr>
343 <tr>
344 <th>parents</th>
344 <th>parents</th>
@@ -120,12 +120,12 b' files, or words in the commit message</s'
120 <th class="description">description</th>
120 <th class="description">description</th>
121 </tr>
121 </tr>
122 <tr class="parity0">
122 <tr class="parity0">
123 <td class="age">38 years</td>
123 <td class="age">many years</td>
124 <td class="author">test</td>
124 <td class="author">test</td>
125 <td class="description"><a href="/rev/01de2d66a28d">second a</a></td>
125 <td class="description"><a href="/rev/01de2d66a28d">second a</a></td>
126 </tr>
126 </tr>
127 <tr class="parity1">
127 <tr class="parity1">
128 <td class="age">38 years</td>
128 <td class="age">many years</td>
129 <td class="author">test</td>
129 <td class="author">test</td>
130 <td class="description"><a href="/rev/5ed941583260">first a</a></td>
130 <td class="description"><a href="/rev/5ed941583260">first a</a></td>
131 </tr>
131 </tr>
@@ -203,12 +203,12 b' files, or words in the commit message</s'
203 <th class="description">description</th>
203 <th class="description">description</th>
204 </tr>
204 </tr>
205 <tr class="parity0">
205 <tr class="parity0">
206 <td class="age">38 years</td>
206 <td class="age">many years</td>
207 <td class="author">test</td>
207 <td class="author">test</td>
208 <td class="description"><a href="/rev/01de2d66a28d">second a</a></td>
208 <td class="description"><a href="/rev/01de2d66a28d">second a</a></td>
209 </tr>
209 </tr>
210 <tr class="parity1">
210 <tr class="parity1">
211 <td class="age">38 years</td>
211 <td class="age">many years</td>
212 <td class="author">test</td>
212 <td class="author">test</td>
213 <td class="description"><a href="/rev/5ed941583260">first a</a></td>
213 <td class="description"><a href="/rev/5ed941583260">first a</a></td>
214 </tr>
214 </tr>
@@ -286,7 +286,7 b' files, or words in the commit message</s'
286 <th class="description">description</th>
286 <th class="description">description</th>
287 </tr>
287 </tr>
288 <tr class="parity0">
288 <tr class="parity0">
289 <td class="age">38 years</td>
289 <td class="age">many years</td>
290 <td class="author">test</td>
290 <td class="author">test</td>
291 <td class="description"><a href="/rev/5ed941583260">first a</a></td>
291 <td class="description"><a href="/rev/5ed941583260">first a</a></td>
292 </tr>
292 </tr>
@@ -364,7 +364,7 b' files, or words in the commit message</s'
364 <th class="description">description</th>
364 <th class="description">description</th>
365 </tr>
365 </tr>
366 <tr class="parity0">
366 <tr class="parity0">
367 <td class="age">38 years</td>
367 <td class="age">many years</td>
368 <td class="author">test</td>
368 <td class="author">test</td>
369 <td class="description"><a href="/rev/5ed941583260">first a</a></td>
369 <td class="description"><a href="/rev/5ed941583260">first a</a></td>
370 </tr>
370 </tr>
@@ -57,7 +57,7 b' files, or words in the commit message</s'
57 </tr>
57 </tr>
58 <tr>
58 <tr>
59 <th class="date">date</th>
59 <th class="date">date</th>
60 <td class="date">Thu Jan 01 00:00:00 1970 +0000 (38 years ago)</td></tr>
60 <td class="date">Thu Jan 01 00:00:00 1970 +0000 (many years ago)</td></tr>
61 <tr>
61 <tr>
62 <th class="author">parents</th>
62 <th class="author">parents</th>
63 <td class="author"><a href="/rev/cb9a9f314b8b">cb9a9f314b8b</a> </td>
63 <td class="author"><a href="/rev/cb9a9f314b8b">cb9a9f314b8b</a> </td>
@@ -148,7 +148,7 b' files, or words in the commit message</s'
148 </tr>
148 </tr>
149 <tr>
149 <tr>
150 <th>date</th>
150 <th>date</th>
151 <td>Thu Jan 01 00:00:00 1970 +0000 (38 years ago)</td>
151 <td>Thu Jan 01 00:00:00 1970 +0000 (many years ago)</td>
152 </tr>
152 </tr>
153 <tr>
153 <tr>
154 <th>parents</th>
154 <th>parents</th>
@@ -24,15 +24,15 b' cat hg.pid >> $DAEMON_PIDS'
24
24
25 echo % hgweb filerevision, html
25 echo % hgweb filerevision, html
26 ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file/tip/get-with-headers.py') \
26 ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file/tip/get-with-headers.py') \
27 | sed "s/[0-9]* years ago/long ago/g" | sed "s/class=\"k\"/class=\"kn\"/g"
27 | sed "s/class=\"k\"/class=\"kn\"/g"
28
28
29 echo % hgweb filerevision, html
29 echo % hgweb filerevision, html
30 ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file/tip/isolatin') \
30 ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file/tip/isolatin') \
31 | sed "s/[0-9]* years ago/long ago/g" | sed "s/class=\"k\"/class=\"kn\"/g"
31 | sed "s/class=\"k\"/class=\"kn\"/g"
32
32
33 echo % hgweb fileannotate, html
33 echo % hgweb fileannotate, html
34 ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/annotate/tip/get-with-headers.py') \
34 ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/annotate/tip/get-with-headers.py') \
35 | sed "s/[0-9]* years ago/long ago/g" | sed "s/class=\"k\"/class=\"kn\"/g"
35 | sed "s/class=\"k\"/class=\"kn\"/g"
36
36
37 echo % hgweb fileannotate, raw
37 echo % hgweb fileannotate, raw
38 ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/annotate/tip/get-with-headers.py?style=raw') \
38 ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/annotate/tip/get-with-headers.py?style=raw') \
@@ -13,7 +13,7 b' 200 Script output follows'
13 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
13 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
14
14
15 <link rel="stylesheet" href="/highlightcss" type="text/css" />
15 <link rel="stylesheet" href="/highlightcss" type="text/css" />
16 <title>test: 7697c52ca9b0 get-with-headers.py</title>
16 <title>test: e55e3a42c53a get-with-headers.py</title>
17 </head>
17 </head>
18 <body>
18 <body>
19
19
@@ -24,26 +24,26 b' 200 Script output follows'
24 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial"></a>
24 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial"></a>
25 </div>
25 </div>
26 <ul>
26 <ul>
27 <li><a href="/shortlog/7697c52ca9b0">log</a></li>
27 <li><a href="/shortlog/e55e3a42c53a">log</a></li>
28 <li><a href="/graph/7697c52ca9b0">graph</a></li>
28 <li><a href="/graph/e55e3a42c53a">graph</a></li>
29 <li><a href="/tags">tags</a></li>
29 <li><a href="/tags">tags</a></li>
30 </ul>
30 </ul>
31 <ul>
31 <ul>
32 <li><a href="/rev/7697c52ca9b0">changeset</a></li>
32 <li><a href="/rev/e55e3a42c53a">changeset</a></li>
33 <li><a href="/file/7697c52ca9b0/">browse</a></li>
33 <li><a href="/file/e55e3a42c53a/">browse</a></li>
34 </ul>
34 </ul>
35 <ul>
35 <ul>
36 <li class="active">file</li>
36 <li class="active">file</li>
37 <li><a href="/diff/7697c52ca9b0/get-with-headers.py">diff</a></li>
37 <li><a href="/diff/e55e3a42c53a/get-with-headers.py">diff</a></li>
38 <li><a href="/annotate/7697c52ca9b0/get-with-headers.py">annotate</a></li>
38 <li><a href="/annotate/e55e3a42c53a/get-with-headers.py">annotate</a></li>
39 <li><a href="/log/7697c52ca9b0/get-with-headers.py">file log</a></li>
39 <li><a href="/log/e55e3a42c53a/get-with-headers.py">file log</a></li>
40 <li><a href="/raw-file/7697c52ca9b0/get-with-headers.py">raw</a></li>
40 <li><a href="/raw-file/e55e3a42c53a/get-with-headers.py">raw</a></li>
41 </ul>
41 </ul>
42 </div>
42 </div>
43
43
44 <div class="main">
44 <div class="main">
45 <h2><a href="/">test</a></h2>
45 <h2><a href="/">test</a></h2>
46 <h3>view get-with-headers.py @ 0:7697c52ca9b0</h3>
46 <h3>view get-with-headers.py @ 0:e55e3a42c53a</h3>
47
47
48 <form class="search" action="/log">
48 <form class="search" action="/log">
49
49
@@ -61,7 +61,7 b' files, or words in the commit message</s'
61 </tr>
61 </tr>
62 <tr>
62 <tr>
63 <th class="date">date</th>
63 <th class="date">date</th>
64 <td class="date">Thu Jan 01 00:00:00 1970 +0000 (long ago)</td>
64 <td class="date">Thu Jan 01 00:00:00 1970 +0000 (many years ago)</td>
65 </tr>
65 </tr>
66 <tr>
66 <tr>
67 <th class="author">parents</th>
67 <th class="author">parents</th>
@@ -76,7 +76,7 b' files, or words in the commit message</s'
76
76
77 <div class="overflow">
77 <div class="overflow">
78 <div class="sourcefirst"> line source</div>
78 <div class="sourcefirst"> line source</div>
79 <div class="parity0 source"><a href="#l1" id="l1"> 1</a> <span class="c">#!/usr/bin/env python</span></div><div class="parity1 source"><a href="#l2" id="l2"> 2</a> </div><div class="parity0 source"><a href="#l3" id="l3"> 3</a> <span class="n">__doc__</span> <span class="o">=</span> <span class="s">&quot;&quot;&quot;This does HTTP get requests given a host:port and path and returns</span></div><div class="parity1 source"><a href="#l4" id="l4"> 4</a> <span class="s">a subset of the headers plus the body of the result.&quot;&quot;&quot;</span></div><div class="parity0 source"><a href="#l5" id="l5"> 5</a> </div><div class="parity1 source"><a href="#l6" id="l6"> 6</a> <span class="kn">import</span> <span class="nn">httplib</span><span class="o">,</span> <span class="nn">sys</span></div><div class="parity0 source"><a href="#l7" id="l7"> 7</a> </div><div class="parity1 source"><a href="#l8" id="l8"> 8</a> <span class="kn">try</span><span class="p">:</span></div><div class="parity0 source"><a href="#l9" id="l9"> 9</a> <span class="kn">import</span> <span class="nn">msvcrt</span><span class="o">,</span> <span class="nn">os</span></div><div class="parity1 source"><a href="#l10" id="l10"> 10</a> <span class="n">msvcrt</span><span class="o">.</span><span class="n">setmode</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">stdout</span><span class="o">.</span><span class="n">fileno</span><span class="p">(),</span> <span class="n">os</span><span class="o">.</span><span class="n">O_BINARY</span><span class="p">)</span></div><div class="parity0 source"><a href="#l11" id="l11"> 11</a> <span class="n">msvcrt</span><span class="o">.</span><span class="n">setmode</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">stderr</span><span class="o">.</span><span class="n">fileno</span><span class="p">(),</span> <span class="n">os</span><span class="o">.</span><span class="n">O_BINARY</span><span class="p">)</span></div><div class="parity1 source"><a href="#l12" id="l12"> 12</a> <span class="kn">except</span> <span class="ne">ImportError</span><span class="p">:</span></div><div class="parity0 source"><a href="#l13" id="l13"> 13</a> <span class="kn">pass</span></div><div class="parity1 source"><a href="#l14" id="l14"> 14</a> </div><div class="parity0 source"><a href="#l15" id="l15"> 15</a> <span class="n">headers</span> <span class="o">=</span> <span class="p">[</span><span class="n">h</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="kn">for</span> <span class="n">h</span> <span class="ow">in</span> <span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mf">3</span><span class="p">:]]</span></div><div class="parity1 source"><a href="#l16" id="l16"> 16</a> <span class="n">conn</span> <span class="o">=</span> <span class="n">httplib</span><span class="o">.</span><span class="n">HTTPConnection</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mf">1</span><span class="p">])</span></div><div class="parity0 source"><a href="#l17" id="l17"> 17</a> <span class="n">conn</span><span class="o">.</span><span class="n">request</span><span class="p">(</span><span class="s">&quot;GET&quot;</span><span class="p">,</span> <span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mf">2</span><span class="p">])</span></div><div class="parity1 source"><a href="#l18" id="l18"> 18</a> <span class="n">response</span> <span class="o">=</span> <span class="n">conn</span><span class="o">.</span><span class="n">getresponse</span><span class="p">()</span></div><div class="parity0 source"><a href="#l19" id="l19"> 19</a> <span class="kn">print</span> <span class="n">response</span><span class="o">.</span><span class="n">status</span><span class="p">,</span> <span class="n">response</span><span class="o">.</span><span class="n">reason</span></div><div class="parity1 source"><a href="#l20" id="l20"> 20</a> <span class="kn">for</span> <span class="n">h</span> <span class="ow">in</span> <span class="n">headers</span><span class="p">:</span></div><div class="parity0 source"><a href="#l21" id="l21"> 21</a> <span class="kn">if</span> <span class="n">response</span><span class="o">.</span><span class="n">getheader</span><span class="p">(</span><span class="n">h</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span></div><div class="parity1 source"><a href="#l22" id="l22"> 22</a> <span class="kn">print</span> <span class="s">&quot;</span><span class="si">%s</span><span class="s">: </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">h</span><span class="p">,</span> <span class="n">response</span><span class="o">.</span><span class="n">getheader</span><span class="p">(</span><span class="n">h</span><span class="p">))</span></div><div class="parity0 source"><a href="#l23" id="l23"> 23</a> <span class="kn">print</span></div><div class="parity1 source"><a href="#l24" id="l24"> 24</a> <span class="n">sys</span><span class="o">.</span><span class="n">stdout</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">response</span><span class="o">.</span><span class="n">read</span><span class="p">())</span></div><div class="parity0 source"><a href="#l25" id="l25"> 25</a> </div><div class="parity1 source"><a href="#l26" id="l26"> 26</a> <span class="kn">if</span> <span class="mf">200</span> <span class="o">&lt;=</span> <span class="n">response</span><span class="o">.</span><span class="n">status</span> <span class="o">&lt;=</span> <span class="mf">299</span><span class="p">:</span></div><div class="parity0 source"><a href="#l27" id="l27"> 27</a> <span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">(</span><span class="mf">0</span><span class="p">)</span></div><div class="parity1 source"><a href="#l28" id="l28"> 28</a> <span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">(</span><span class="mf">1</span><span class="p">)</span></div>
79 <div class="parity0 source"><a href="#l1" id="l1"> 1</a> <span class="c">#!/usr/bin/env python</span></div><div class="parity1 source"><a href="#l2" id="l2"> 2</a> </div><div class="parity0 source"><a href="#l3" id="l3"> 3</a> <span class="n">__doc__</span> <span class="o">=</span> <span class="s">&quot;&quot;&quot;This does HTTP get requests given a host:port and path and returns</span></div><div class="parity1 source"><a href="#l4" id="l4"> 4</a> <span class="s">a subset of the headers plus the body of the result.&quot;&quot;&quot;</span></div><div class="parity0 source"><a href="#l5" id="l5"> 5</a> </div><div class="parity1 source"><a href="#l6" id="l6"> 6</a> <span class="kn">import</span> <span class="nn">httplib</span><span class="o">,</span> <span class="nn">sys</span><span class="o">,</span> <span class="nn">re</span></div><div class="parity0 source"><a href="#l7" id="l7"> 7</a> </div><div class="parity1 source"><a href="#l8" id="l8"> 8</a> <span class="kn">try</span><span class="p">:</span></div><div class="parity0 source"><a href="#l9" id="l9"> 9</a> <span class="kn">import</span> <span class="nn">msvcrt</span><span class="o">,</span> <span class="nn">os</span></div><div class="parity1 source"><a href="#l10" id="l10"> 10</a> <span class="n">msvcrt</span><span class="o">.</span><span class="n">setmode</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">stdout</span><span class="o">.</span><span class="n">fileno</span><span class="p">(),</span> <span class="n">os</span><span class="o">.</span><span class="n">O_BINARY</span><span class="p">)</span></div><div class="parity0 source"><a href="#l11" id="l11"> 11</a> <span class="n">msvcrt</span><span class="o">.</span><span class="n">setmode</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">stderr</span><span class="o">.</span><span class="n">fileno</span><span class="p">(),</span> <span class="n">os</span><span class="o">.</span><span class="n">O_BINARY</span><span class="p">)</span></div><div class="parity1 source"><a href="#l12" id="l12"> 12</a> <span class="kn">except</span> <span class="ne">ImportError</span><span class="p">:</span></div><div class="parity0 source"><a href="#l13" id="l13"> 13</a> <span class="kn">pass</span></div><div class="parity1 source"><a href="#l14" id="l14"> 14</a> </div><div class="parity0 source"><a href="#l15" id="l15"> 15</a> <span class="n">headers</span> <span class="o">=</span> <span class="p">[</span><span class="n">h</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="kn">for</span> <span class="n">h</span> <span class="ow">in</span> <span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mf">3</span><span class="p">:]]</span></div><div class="parity1 source"><a href="#l16" id="l16"> 16</a> <span class="n">conn</span> <span class="o">=</span> <span class="n">httplib</span><span class="o">.</span><span class="n">HTTPConnection</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mf">1</span><span class="p">])</span></div><div class="parity0 source"><a href="#l17" id="l17"> 17</a> <span class="n">conn</span><span class="o">.</span><span class="n">request</span><span class="p">(</span><span class="s">&quot;GET&quot;</span><span class="p">,</span> <span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mf">2</span><span class="p">])</span></div><div class="parity1 source"><a href="#l18" id="l18"> 18</a> <span class="n">response</span> <span class="o">=</span> <span class="n">conn</span><span class="o">.</span><span class="n">getresponse</span><span class="p">()</span></div><div class="parity0 source"><a href="#l19" id="l19"> 19</a> <span class="kn">print</span> <span class="n">response</span><span class="o">.</span><span class="n">status</span><span class="p">,</span> <span class="n">response</span><span class="o">.</span><span class="n">reason</span></div><div class="parity1 source"><a href="#l20" id="l20"> 20</a> <span class="kn">for</span> <span class="n">h</span> <span class="ow">in</span> <span class="n">headers</span><span class="p">:</span></div><div class="parity0 source"><a href="#l21" id="l21"> 21</a> <span class="kn">if</span> <span class="n">response</span><span class="o">.</span><span class="n">getheader</span><span class="p">(</span><span class="n">h</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span></div><div class="parity1 source"><a href="#l22" id="l22"> 22</a> <span class="kn">print</span> <span class="s">&quot;</span><span class="si">%s</span><span class="s">: </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">h</span><span class="p">,</span> <span class="n">response</span><span class="o">.</span><span class="n">getheader</span><span class="p">(</span><span class="n">h</span><span class="p">))</span></div><div class="parity0 source"><a href="#l23" id="l23"> 23</a> <span class="kn">print</span></div><div class="parity1 source"><a href="#l24" id="l24"> 24</a> <span class="n">data</span> <span class="o">=</span> <span class="n">response</span><span class="o">.</span><span class="n">read</span><span class="p">()</span></div><div class="parity0 source"><a href="#l25" id="l25"> 25</a> <span class="n">data</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">sub</span><span class="p">(</span><span class="s">&#39;\d+ years&#39;</span><span class="p">,</span> <span class="s">&#39;many years&#39;</span><span class="p">,</span> <span class="n">data</span><span class="p">)</span></div><div class="parity1 source"><a href="#l26" id="l26"> 26</a> <span class="n">sys</span><span class="o">.</span><span class="n">stdout</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">data</span><span class="p">)</span></div><div class="parity0 source"><a href="#l27" id="l27"> 27</a> </div><div class="parity1 source"><a href="#l28" id="l28"> 28</a> <span class="kn">if</span> <span class="mf">200</span> <span class="o">&lt;=</span> <span class="n">response</span><span class="o">.</span><span class="n">status</span> <span class="o">&lt;=</span> <span class="mf">299</span><span class="p">:</span></div><div class="parity0 source"><a href="#l29" id="l29"> 29</a> <span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">(</span><span class="mf">0</span><span class="p">)</span></div><div class="parity1 source"><a href="#l30" id="l30"> 30</a> <span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">(</span><span class="mf">1</span><span class="p">)</span></div>
80 <div class="sourcelast"></div>
80 <div class="sourcelast"></div>
81 </div>
81 </div>
82 </div>
82 </div>
@@ -99,7 +99,7 b' 200 Script output follows'
99 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
99 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
100
100
101 <link rel="stylesheet" href="/highlightcss" type="text/css" />
101 <link rel="stylesheet" href="/highlightcss" type="text/css" />
102 <title>test: 7697c52ca9b0 isolatin</title>
102 <title>test: e55e3a42c53a isolatin</title>
103 </head>
103 </head>
104 <body>
104 <body>
105
105
@@ -110,26 +110,26 b' 200 Script output follows'
110 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial"></a>
110 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial"></a>
111 </div>
111 </div>
112 <ul>
112 <ul>
113 <li><a href="/shortlog/7697c52ca9b0">log</a></li>
113 <li><a href="/shortlog/e55e3a42c53a">log</a></li>
114 <li><a href="/graph/7697c52ca9b0">graph</a></li>
114 <li><a href="/graph/e55e3a42c53a">graph</a></li>
115 <li><a href="/tags">tags</a></li>
115 <li><a href="/tags">tags</a></li>
116 </ul>
116 </ul>
117 <ul>
117 <ul>
118 <li><a href="/rev/7697c52ca9b0">changeset</a></li>
118 <li><a href="/rev/e55e3a42c53a">changeset</a></li>
119 <li><a href="/file/7697c52ca9b0/">browse</a></li>
119 <li><a href="/file/e55e3a42c53a/">browse</a></li>
120 </ul>
120 </ul>
121 <ul>
121 <ul>
122 <li class="active">file</li>
122 <li class="active">file</li>
123 <li><a href="/diff/7697c52ca9b0/isolatin">diff</a></li>
123 <li><a href="/diff/e55e3a42c53a/isolatin">diff</a></li>
124 <li><a href="/annotate/7697c52ca9b0/isolatin">annotate</a></li>
124 <li><a href="/annotate/e55e3a42c53a/isolatin">annotate</a></li>
125 <li><a href="/log/7697c52ca9b0/isolatin">file log</a></li>
125 <li><a href="/log/e55e3a42c53a/isolatin">file log</a></li>
126 <li><a href="/raw-file/7697c52ca9b0/isolatin">raw</a></li>
126 <li><a href="/raw-file/e55e3a42c53a/isolatin">raw</a></li>
127 </ul>
127 </ul>
128 </div>
128 </div>
129
129
130 <div class="main">
130 <div class="main">
131 <h2><a href="/">test</a></h2>
131 <h2><a href="/">test</a></h2>
132 <h3>view isolatin @ 0:7697c52ca9b0</h3>
132 <h3>view isolatin @ 0:e55e3a42c53a</h3>
133
133
134 <form class="search" action="/log">
134 <form class="search" action="/log">
135
135
@@ -147,7 +147,7 b' files, or words in the commit message</s'
147 </tr>
147 </tr>
148 <tr>
148 <tr>
149 <th class="date">date</th>
149 <th class="date">date</th>
150 <td class="date">Thu Jan 01 00:00:00 1970 +0000 (long ago)</td>
150 <td class="date">Thu Jan 01 00:00:00 1970 +0000 (many years ago)</td>
151 </tr>
151 </tr>
152 <tr>
152 <tr>
153 <th class="author">parents</th>
153 <th class="author">parents</th>
@@ -196,27 +196,27 b' 200 Script output follows'
196 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial"></a>
196 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial"></a>
197 </div>
197 </div>
198 <ul>
198 <ul>
199 <li><a href="/shortlog/7697c52ca9b0">log</a></li>
199 <li><a href="/shortlog/e55e3a42c53a">log</a></li>
200 <li><a href="/graph/7697c52ca9b0">graph</a></li>
200 <li><a href="/graph/e55e3a42c53a">graph</a></li>
201 <li><a href="/tags">tags</a></li>
201 <li><a href="/tags">tags</a></li>
202 </ul>
202 </ul>
203
203
204 <ul>
204 <ul>
205 <li><a href="/rev/7697c52ca9b0">changeset</a></li>
205 <li><a href="/rev/e55e3a42c53a">changeset</a></li>
206 <li><a href="/file/7697c52ca9b0/">browse</a></li>
206 <li><a href="/file/e55e3a42c53a/">browse</a></li>
207 </ul>
207 </ul>
208 <ul>
208 <ul>
209 <li><a href="/file/7697c52ca9b0/get-with-headers.py">file</a></li>
209 <li><a href="/file/e55e3a42c53a/get-with-headers.py">file</a></li>
210 <li><a href="/diff/7697c52ca9b0/get-with-headers.py">diff</a></li>
210 <li><a href="/diff/e55e3a42c53a/get-with-headers.py">diff</a></li>
211 <li class="active">annotate</li>
211 <li class="active">annotate</li>
212 <li><a href="/log/7697c52ca9b0/get-with-headers.py">file log</a></li>
212 <li><a href="/log/e55e3a42c53a/get-with-headers.py">file log</a></li>
213 <li><a href="/raw-annotate/7697c52ca9b0/get-with-headers.py">raw</a></li>
213 <li><a href="/raw-annotate/e55e3a42c53a/get-with-headers.py">raw</a></li>
214 </ul>
214 </ul>
215 </div>
215 </div>
216
216
217 <div class="main">
217 <div class="main">
218 <h2><a href="/">test</a></h2>
218 <h2><a href="/">test</a></h2>
219 <h3>annotate get-with-headers.py @ 0:7697c52ca9b0</h3>
219 <h3>annotate get-with-headers.py @ 0:e55e3a42c53a</h3>
220
220
221 <form class="search" action="/log">
221 <form class="search" action="/log">
222
222
@@ -234,7 +234,7 b' files, or words in the commit message</s'
234 </tr>
234 </tr>
235 <tr>
235 <tr>
236 <th class="date">date</th>
236 <th class="date">date</th>
237 <td class="date">Thu Jan 01 00:00:00 1970 +0000 (long ago)</td>
237 <td class="date">Thu Jan 01 00:00:00 1970 +0000 (many years ago)</td>
238 </tr>
238 </tr>
239 <tr>
239 <tr>
240 <th class="author">parents</th>
240 <th class="author">parents</th>
@@ -255,7 +255,7 b' files, or words in the commit message</s'
255 <th class="annotate">rev</th>
255 <th class="annotate">rev</th>
256 <th class="line">&nbsp;&nbsp;line source</th>
256 <th class="line">&nbsp;&nbsp;line source</th>
257 </tr>
257 </tr>
258 <tr class="parity0"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#1" title="7697c52ca9b0: a">test@0</a></td><td class="source"><a href="#l1" id="l1"> 1</a> <span class="c">#!/usr/bin/env python</span></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#2" title="7697c52ca9b0: a">test@0</a></td><td class="source"><a href="#l2" id="l2"> 2</a> </td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#3" title="7697c52ca9b0: a">test@0</a></td><td class="source"><a href="#l3" id="l3"> 3</a> <span class="n">__doc__</span> <span class="o">=</span> <span class="s">&quot;&quot;&quot;This does HTTP get requests given a host:port and path and returns</span></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#4" title="7697c52ca9b0: a">test@0</a></td><td class="source"><a href="#l4" id="l4"> 4</a> <span class="s">a subset of the headers plus the body of the result.&quot;&quot;&quot;</span></td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#5" title="7697c52ca9b0: a">test@0</a></td><td class="source"><a href="#l5" id="l5"> 5</a> </td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#6" title="7697c52ca9b0: a">test@0</a></td><td class="source"><a href="#l6" id="l6"> 6</a> <span class="kn">import</span> <span class="nn">httplib</span><span class="o">,</span> <span class="nn">sys</span></td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#7" title="7697c52ca9b0: a">test@0</a></td><td class="source"><a href="#l7" id="l7"> 7</a> </td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#8" title="7697c52ca9b0: a">test@0</a></td><td class="source"><a href="#l8" id="l8"> 8</a> <span class="kn">try</span><span class="p">:</span></td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#9" title="7697c52ca9b0: a">test@0</a></td><td class="source"><a href="#l9" id="l9"> 9</a> <span class="kn">import</span> <span class="nn">msvcrt</span><span class="o">,</span> <span class="nn">os</span></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#10" title="7697c52ca9b0: a">test@0</a></td><td class="source"><a href="#l10" id="l10"> 10</a> <span class="n">msvcrt</span><span class="o">.</span><span class="n">setmode</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">stdout</span><span class="o">.</span><span class="n">fileno</span><span class="p">(),</span> <span class="n">os</span><span class="o">.</span><span class="n">O_BINARY</span><span class="p">)</span></td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#11" title="7697c52ca9b0: a">test@0</a></td><td class="source"><a href="#l11" id="l11"> 11</a> <span class="n">msvcrt</span><span class="o">.</span><span class="n">setmode</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">stderr</span><span class="o">.</span><span class="n">fileno</span><span class="p">(),</span> <span class="n">os</span><span class="o">.</span><span class="n">O_BINARY</span><span class="p">)</span></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#12" title="7697c52ca9b0: a">test@0</a></td><td class="source"><a href="#l12" id="l12"> 12</a> <span class="kn">except</span> <span class="ne">ImportError</span><span class="p">:</span></td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#13" title="7697c52ca9b0: a">test@0</a></td><td class="source"><a href="#l13" id="l13"> 13</a> <span class="kn">pass</span></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#14" title="7697c52ca9b0: a">test@0</a></td><td class="source"><a href="#l14" id="l14"> 14</a> </td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#15" title="7697c52ca9b0: a">test@0</a></td><td class="source"><a href="#l15" id="l15"> 15</a> <span class="n">headers</span> <span class="o">=</span> <span class="p">[</span><span class="n">h</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="kn">for</span> <span class="n">h</span> <span class="ow">in</span> <span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mf">3</span><span class="p">:]]</span></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#16" title="7697c52ca9b0: a">test@0</a></td><td class="source"><a href="#l16" id="l16"> 16</a> <span class="n">conn</span> <span class="o">=</span> <span class="n">httplib</span><span class="o">.</span><span class="n">HTTPConnection</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mf">1</span><span class="p">])</span></td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#17" title="7697c52ca9b0: a">test@0</a></td><td class="source"><a href="#l17" id="l17"> 17</a> <span class="n">conn</span><span class="o">.</span><span class="n">request</span><span class="p">(</span><span class="s">&quot;GET&quot;</span><span class="p">,</span> <span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mf">2</span><span class="p">])</span></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#18" title="7697c52ca9b0: a">test@0</a></td><td class="source"><a href="#l18" id="l18"> 18</a> <span class="n">response</span> <span class="o">=</span> <span class="n">conn</span><span class="o">.</span><span class="n">getresponse</span><span class="p">()</span></td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#19" title="7697c52ca9b0: a">test@0</a></td><td class="source"><a href="#l19" id="l19"> 19</a> <span class="kn">print</span> <span class="n">response</span><span class="o">.</span><span class="n">status</span><span class="p">,</span> <span class="n">response</span><span class="o">.</span><span class="n">reason</span></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#20" title="7697c52ca9b0: a">test@0</a></td><td class="source"><a href="#l20" id="l20"> 20</a> <span class="kn">for</span> <span class="n">h</span> <span class="ow">in</span> <span class="n">headers</span><span class="p">:</span></td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#21" title="7697c52ca9b0: a">test@0</a></td><td class="source"><a href="#l21" id="l21"> 21</a> <span class="kn">if</span> <span class="n">response</span><span class="o">.</span><span class="n">getheader</span><span class="p">(</span><span class="n">h</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#22" title="7697c52ca9b0: a">test@0</a></td><td class="source"><a href="#l22" id="l22"> 22</a> <span class="kn">print</span> <span class="s">&quot;</span><span class="si">%s</span><span class="s">: </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">h</span><span class="p">,</span> <span class="n">response</span><span class="o">.</span><span class="n">getheader</span><span class="p">(</span><span class="n">h</span><span class="p">))</span></td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#23" title="7697c52ca9b0: a">test@0</a></td><td class="source"><a href="#l23" id="l23"> 23</a> <span class="kn">print</span></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#24" title="7697c52ca9b0: a">test@0</a></td><td class="source"><a href="#l24" id="l24"> 24</a> <span class="n">sys</span><span class="o">.</span><span class="n">stdout</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">response</span><span class="o">.</span><span class="n">read</span><span class="p">())</span></td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#25" title="7697c52ca9b0: a">test@0</a></td><td class="source"><a href="#l25" id="l25"> 25</a> </td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#26" title="7697c52ca9b0: a">test@0</a></td><td class="source"><a href="#l26" id="l26"> 26</a> <span class="kn">if</span> <span class="mf">200</span> <span class="o">&lt;=</span> <span class="n">response</span><span class="o">.</span><span class="n">status</span> <span class="o">&lt;=</span> <span class="mf">299</span><span class="p">:</span></td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#27" title="7697c52ca9b0: a">test@0</a></td><td class="source"><a href="#l27" id="l27"> 27</a> <span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">(</span><span class="mf">0</span><span class="p">)</span></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/7697c52ca9b0/get-with-headers.py#28" title="7697c52ca9b0: a">test@0</a></td><td class="source"><a href="#l28" id="l28"> 28</a> <span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">(</span><span class="mf">1</span><span class="p">)</span></td></tr>
258 <tr class="parity0"><td class="annotate"><a href="/annotate/e55e3a42c53a/get-with-headers.py#1" title="e55e3a42c53a: a">test@0</a></td><td class="source"><a href="#l1" id="l1"> 1</a> <span class="c">#!/usr/bin/env python</span></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/e55e3a42c53a/get-with-headers.py#2" title="e55e3a42c53a: a">test@0</a></td><td class="source"><a href="#l2" id="l2"> 2</a> </td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/e55e3a42c53a/get-with-headers.py#3" title="e55e3a42c53a: a">test@0</a></td><td class="source"><a href="#l3" id="l3"> 3</a> <span class="n">__doc__</span> <span class="o">=</span> <span class="s">&quot;&quot;&quot;This does HTTP get requests given a host:port and path and returns</span></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/e55e3a42c53a/get-with-headers.py#4" title="e55e3a42c53a: a">test@0</a></td><td class="source"><a href="#l4" id="l4"> 4</a> <span class="s">a subset of the headers plus the body of the result.&quot;&quot;&quot;</span></td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/e55e3a42c53a/get-with-headers.py#5" title="e55e3a42c53a: a">test@0</a></td><td class="source"><a href="#l5" id="l5"> 5</a> </td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/e55e3a42c53a/get-with-headers.py#6" title="e55e3a42c53a: a">test@0</a></td><td class="source"><a href="#l6" id="l6"> 6</a> <span class="kn">import</span> <span class="nn">httplib</span><span class="o">,</span> <span class="nn">sys</span><span class="o">,</span> <span class="nn">re</span></td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/e55e3a42c53a/get-with-headers.py#7" title="e55e3a42c53a: a">test@0</a></td><td class="source"><a href="#l7" id="l7"> 7</a> </td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/e55e3a42c53a/get-with-headers.py#8" title="e55e3a42c53a: a">test@0</a></td><td class="source"><a href="#l8" id="l8"> 8</a> <span class="kn">try</span><span class="p">:</span></td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/e55e3a42c53a/get-with-headers.py#9" title="e55e3a42c53a: a">test@0</a></td><td class="source"><a href="#l9" id="l9"> 9</a> <span class="kn">import</span> <span class="nn">msvcrt</span><span class="o">,</span> <span class="nn">os</span></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/e55e3a42c53a/get-with-headers.py#10" title="e55e3a42c53a: a">test@0</a></td><td class="source"><a href="#l10" id="l10"> 10</a> <span class="n">msvcrt</span><span class="o">.</span><span class="n">setmode</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">stdout</span><span class="o">.</span><span class="n">fileno</span><span class="p">(),</span> <span class="n">os</span><span class="o">.</span><span class="n">O_BINARY</span><span class="p">)</span></td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/e55e3a42c53a/get-with-headers.py#11" title="e55e3a42c53a: a">test@0</a></td><td class="source"><a href="#l11" id="l11"> 11</a> <span class="n">msvcrt</span><span class="o">.</span><span class="n">setmode</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">stderr</span><span class="o">.</span><span class="n">fileno</span><span class="p">(),</span> <span class="n">os</span><span class="o">.</span><span class="n">O_BINARY</span><span class="p">)</span></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/e55e3a42c53a/get-with-headers.py#12" title="e55e3a42c53a: a">test@0</a></td><td class="source"><a href="#l12" id="l12"> 12</a> <span class="kn">except</span> <span class="ne">ImportError</span><span class="p">:</span></td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/e55e3a42c53a/get-with-headers.py#13" title="e55e3a42c53a: a">test@0</a></td><td class="source"><a href="#l13" id="l13"> 13</a> <span class="kn">pass</span></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/e55e3a42c53a/get-with-headers.py#14" title="e55e3a42c53a: a">test@0</a></td><td class="source"><a href="#l14" id="l14"> 14</a> </td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/e55e3a42c53a/get-with-headers.py#15" title="e55e3a42c53a: a">test@0</a></td><td class="source"><a href="#l15" id="l15"> 15</a> <span class="n">headers</span> <span class="o">=</span> <span class="p">[</span><span class="n">h</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="kn">for</span> <span class="n">h</span> <span class="ow">in</span> <span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mf">3</span><span class="p">:]]</span></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/e55e3a42c53a/get-with-headers.py#16" title="e55e3a42c53a: a">test@0</a></td><td class="source"><a href="#l16" id="l16"> 16</a> <span class="n">conn</span> <span class="o">=</span> <span class="n">httplib</span><span class="o">.</span><span class="n">HTTPConnection</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mf">1</span><span class="p">])</span></td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/e55e3a42c53a/get-with-headers.py#17" title="e55e3a42c53a: a">test@0</a></td><td class="source"><a href="#l17" id="l17"> 17</a> <span class="n">conn</span><span class="o">.</span><span class="n">request</span><span class="p">(</span><span class="s">&quot;GET&quot;</span><span class="p">,</span> <span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mf">2</span><span class="p">])</span></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/e55e3a42c53a/get-with-headers.py#18" title="e55e3a42c53a: a">test@0</a></td><td class="source"><a href="#l18" id="l18"> 18</a> <span class="n">response</span> <span class="o">=</span> <span class="n">conn</span><span class="o">.</span><span class="n">getresponse</span><span class="p">()</span></td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/e55e3a42c53a/get-with-headers.py#19" title="e55e3a42c53a: a">test@0</a></td><td class="source"><a href="#l19" id="l19"> 19</a> <span class="kn">print</span> <span class="n">response</span><span class="o">.</span><span class="n">status</span><span class="p">,</span> <span class="n">response</span><span class="o">.</span><span class="n">reason</span></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/e55e3a42c53a/get-with-headers.py#20" title="e55e3a42c53a: a">test@0</a></td><td class="source"><a href="#l20" id="l20"> 20</a> <span class="kn">for</span> <span class="n">h</span> <span class="ow">in</span> <span class="n">headers</span><span class="p">:</span></td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/e55e3a42c53a/get-with-headers.py#21" title="e55e3a42c53a: a">test@0</a></td><td class="source"><a href="#l21" id="l21"> 21</a> <span class="kn">if</span> <span class="n">response</span><span class="o">.</span><span class="n">getheader</span><span class="p">(</span><span class="n">h</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/e55e3a42c53a/get-with-headers.py#22" title="e55e3a42c53a: a">test@0</a></td><td class="source"><a href="#l22" id="l22"> 22</a> <span class="kn">print</span> <span class="s">&quot;</span><span class="si">%s</span><span class="s">: </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">h</span><span class="p">,</span> <span class="n">response</span><span class="o">.</span><span class="n">getheader</span><span class="p">(</span><span class="n">h</span><span class="p">))</span></td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/e55e3a42c53a/get-with-headers.py#23" title="e55e3a42c53a: a">test@0</a></td><td class="source"><a href="#l23" id="l23"> 23</a> <span class="kn">print</span></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/e55e3a42c53a/get-with-headers.py#24" title="e55e3a42c53a: a">test@0</a></td><td class="source"><a href="#l24" id="l24"> 24</a> <span class="n">data</span> <span class="o">=</span> <span class="n">response</span><span class="o">.</span><span class="n">read</span><span class="p">()</span></td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/e55e3a42c53a/get-with-headers.py#25" title="e55e3a42c53a: a">test@0</a></td><td class="source"><a href="#l25" id="l25"> 25</a> <span class="n">data</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">sub</span><span class="p">(</span><span class="s">&#39;\d+ years&#39;</span><span class="p">,</span> <span class="s">&#39;many years&#39;</span><span class="p">,</span> <span class="n">data</span><span class="p">)</span></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/e55e3a42c53a/get-with-headers.py#26" title="e55e3a42c53a: a">test@0</a></td><td class="source"><a href="#l26" id="l26"> 26</a> <span class="n">sys</span><span class="o">.</span><span class="n">stdout</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">data</span><span class="p">)</span></td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/e55e3a42c53a/get-with-headers.py#27" title="e55e3a42c53a: a">test@0</a></td><td class="source"><a href="#l27" id="l27"> 27</a> </td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/e55e3a42c53a/get-with-headers.py#28" title="e55e3a42c53a: a">test@0</a></td><td class="source"><a href="#l28" id="l28"> 28</a> <span class="kn">if</span> <span class="mf">200</span> <span class="o">&lt;=</span> <span class="n">response</span><span class="o">.</span><span class="n">status</span> <span class="o">&lt;=</span> <span class="mf">299</span><span class="p">:</span></td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/e55e3a42c53a/get-with-headers.py#29" title="e55e3a42c53a: a">test@0</a></td><td class="source"><a href="#l29" id="l29"> 29</a> <span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">(</span><span class="mf">0</span><span class="p">)</span></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/e55e3a42c53a/get-with-headers.py#30" title="e55e3a42c53a: a">test@0</a></td><td class="source"><a href="#l30" id="l30"> 30</a> <span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">(</span><span class="mf">1</span><span class="p">)</span></td></tr>
259 </table>
259 </table>
260 </div>
260 </div>
261 </div>
261 </div>
General Comments 0
You need to be logged in to leave comments. Login now