/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to breezy/tests/http_server.py

  • Committer: Jelmer Vernooij
  • Date: 2017-10-26 11:10:38 UTC
  • mfrom: (6791.2.7 python3)
  • Revision ID: jelmer@jelmer.uk-20171026111038-cvils4aykn7ffcju
Merge lp:~jelmer/brz/fix-imports.

Show diffs side-by-side

added added

removed removed

Lines of Context:
15
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
16
 
17
17
import errno
18
 
import httplib
 
18
try:
 
19
    import http.client as http_client
 
20
    import http.server as http_server
 
21
except ImportError:
 
22
    import httplib as http_client
 
23
    import SimpleHTTPServer as http_server
19
24
import os
20
25
import posixpath
21
26
import random
22
27
import re
23
 
import SimpleHTTPServer
24
28
import socket
25
 
import urlparse
 
29
try:
 
30
    from urlparse import urlparse
 
31
except ImportError:
 
32
    from urllib.parse import urlparse
26
33
 
27
34
from .. import (
28
35
    osutils,
36
43
        return 'path %s is not in %s' % self.args
37
44
 
38
45
 
39
 
class TestingHTTPRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
 
46
class TestingHTTPRequestHandler(http_server.SimpleHTTPRequestHandler):
40
47
    """Handles one request.
41
48
 
42
49
    A TestingHTTPRequestHandler is instantiated for every request received by
48
55
    protocol_version = 'HTTP/1.1'
49
56
 
50
57
    # The Message-like class used to parse the request headers
51
 
    MessageClass = httplib.HTTPMessage
 
58
    MessageClass = http_client.HTTPMessage
52
59
 
53
60
    def setup(self):
54
 
        SimpleHTTPServer.SimpleHTTPRequestHandler.setup(self)
 
61
        http_server.SimpleHTTPRequestHandler.setup(self)
55
62
        self._cwd = self.server._home_dir
56
63
        tcs = self.server.test_case_server
57
64
        if tcs.protocol_version is not None:
121
128
            self.wfile.write(content)
122
129
 
123
130
    def _handle_one_request(self):
124
 
        SimpleHTTPServer.SimpleHTTPRequestHandler.handle_one_request(self)
 
131
        http_server.SimpleHTTPRequestHandler.handle_one_request(self)
125
132
 
126
133
    _range_regexp = re.compile(r'^(?P<start>\d+)-(?P<end>\d+)?$')
127
134
    _tail_regexp = re.compile(r'^-(?P<tail>\d+)$')
200
207
            self.end_headers()
201
208
            return None
202
209
 
203
 
        return SimpleHTTPServer.SimpleHTTPRequestHandler.send_head(self)
 
210
        return http_server.SimpleHTTPRequestHandler.send_head(self)
204
211
 
205
212
    def send_range_content(self, file, start, length):
206
213
        file.seek(start)
263
270
        ranges_header_value = self.headers.get('Range')
264
271
        if ranges_header_value is None or os.path.isdir(path):
265
272
            # Let the mother class handle most cases
266
 
            return SimpleHTTPServer.SimpleHTTPRequestHandler.do_GET(self)
 
273
            return http_server.SimpleHTTPRequestHandler.do_GET(self)
267
274
 
268
275
        try:
269
276
            # Always read in binary mode. Opening files in text
312
319
            # do beginning with python 2.4.3: abandon query
313
320
            # parameters, scheme, host port, etc (which ensure we
314
321
            # provide the right behaviour on all python versions).
315
 
            path = urlparse.urlparse(path)[2]
 
322
            path = urlparse(path)[2]
316
323
            # And now, we can apply *our* trick to proxy files
317
324
            path += '-proxied'
318
325
 
330
337
        Override from python standard library to stop it calling os.getcwd()
331
338
        """
332
339
        # abandon query parameters
333
 
        path = urlparse.urlparse(path)[2]
 
340
        path = urlparse(path)[2]
334
341
        path = posixpath.normpath(urlutils.unquote(path))
335
342
        path = path.decode('utf-8')
336
343
        words = path.split('/')
419
426
        # Get the appropriate server class for the required protocol
420
427
        serv_cls = self.http_server_class.get(proto_vers, None)
421
428
        if serv_cls is None:
422
 
            raise httplib.UnknownProtocol(proto_vers)
 
429
            raise http_client.UnknownProtocol(proto_vers)
423
430
        self.host = 'localhost'
424
431
        self.port = 0
425
432
        super(HttpServer, self).__init__((self.host, self.port),