/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/transport/http/__init__.py

  • Committer: Jelmer Vernooij
  • Date: 2018-11-16 23:19:12 UTC
  • mfrom: (7180 work)
  • mto: This revision was merged to the branch mainline in revision 7294.
  • Revision ID: jelmer@jelmer.uk-20181116231912-e043vpq22bdkxa6q
Merge trunk.

Show diffs side-by-side

added added

removed removed

Lines of Context:
47
47
    )
48
48
 
49
49
 
50
 
 
51
50
class HttpTransport(ConnectedTransport):
52
51
    """HTTP Client implementations.
53
52
 
71
70
            raise AssertionError("not a http url: %r" % base)
72
71
        self._unqualified_scheme = proto_match.group(1)
73
72
        super(HttpTransport, self).__init__(
74
 
                base, _from_transport=_from_transport)
 
73
            base, _from_transport=_from_transport)
75
74
        self._medium = None
76
75
        # range hint is handled dynamically throughout the life
77
76
        # of the transport object. We start by trying multi-range
126
125
 
127
126
        code = response.code
128
127
        if (request.follow_redirections is False
129
 
            and code in (301, 302, 303, 307)):
 
128
                and code in (301, 302, 303, 307)):
130
129
            raise errors.RedirectRequested(request.get_full_url(),
131
130
                                           request.redirected_to,
132
131
                                           is_permanent=(code == 301))
148
147
        response = self._head(relpath)
149
148
 
150
149
        code = response.code
151
 
        if code == 200: # "ok",
 
150
        if code == 200:  # "ok",
152
151
            return True
153
152
        else:
154
153
            return False
188
187
        response = self._perform(request)
189
188
 
190
189
        code = response.code
191
 
        if code == 404: # not found
 
190
        if code == 404:  # not found
192
191
            raise errors.NoSuchFile(abspath)
193
192
        elif code in (400, 416):
194
193
            # We don't know which, but one of the ranges we specified was
287
286
            coalesced = list(coalesced)
288
287
            if 'http' in debug.debug_flags:
289
288
                mutter('http readv of %s  offsets => %s collapsed %s',
290
 
                    relpath, len(offsets), len(coalesced))
 
289
                       relpath, len(offsets), len(coalesced))
291
290
 
292
291
            # Cache the data read, but only until it's been used
293
292
            data_map = {}
339
338
                    errors.InvalidHttpRange, errors.HttpBoundaryMissing) as e:
340
339
                mutter('Exception %r: %s during http._readv', e, e)
341
340
                if (not isinstance(e, errors.ShortReadvError)
342
 
                    or retried_offset == cur_offset_and_size):
 
341
                        or retried_offset == cur_offset_and_size):
343
342
                    # We don't degrade the range hint for ShortReadvError since
344
343
                    # they do not indicate a problem with the server ability to
345
344
                    # handle ranges. Except when we fail to get back a required
387
386
            ranges = []
388
387
            for coal in coalesced:
389
388
                if ((self._get_max_size > 0
390
 
                     and cumul + coal.length > self._get_max_size)
391
 
                    or len(ranges) >= max_ranges):
 
389
                     and cumul + coal.length > self._get_max_size) or
 
390
                        len(ranges) >= max_ranges):
392
391
                    # Get that much and yield
393
392
                    for c, rfile in get_and_yield(relpath, ranges):
394
393
                        yield c, rfile
442
441
 
443
442
        return response
444
443
 
445
 
 
446
444
        raise NotImplementedError(self._post)
447
445
 
448
446
    def put_file(self, relpath, f, mode=None):
487
485
                'http cannot be the target of copy_to()')
488
486
        else:
489
487
            return super(HttpTransport, self).\
490
 
                    copy_to(relpaths, other, mode=mode, pb=pb)
 
488
                copy_to(relpaths, other, mode=mode, pb=pb)
491
489
 
492
490
    def move(self, rel_from, rel_to):
493
491
        """Move the item at rel_from to the location at rel_to"""
527
525
        class BogusLock(object):
528
526
            def __init__(self, path):
529
527
                self.path = path
 
528
 
530
529
            def unlock(self):
531
530
                pass
532
531
        return BogusLock(relpath)
643
642
                # user)
644
643
                redir_scheme = parsed_target.scheme
645
644
                new_url = self._unsplit_url(redir_scheme,
646
 
                    self._parsed_url.user,
647
 
                    self._parsed_url.password,
648
 
                    parsed_target.host, parsed_target.port,
649
 
                    target_path)
 
645
                                            self._parsed_url.user,
 
646
                                            self._parsed_url.password,
 
647
                                            parsed_target.host, parsed_target.port,
 
648
                                            target_path)
650
649
                return transport.get_transport_from_url(new_url)
651
650
        else:
652
651
            # Redirected to a different protocol
653
652
            new_url = self._unsplit_url(parsed_target.scheme,
654
 
                    parsed_target.user,
655
 
                    parsed_target.password,
656
 
                    parsed_target.host, parsed_target.port,
657
 
                    target_path)
 
653
                                        parsed_target.user,
 
654
                                        parsed_target.password,
 
655
                                        parsed_target.host, parsed_target.port,
 
656
                                        target_path)
658
657
            return transport.get_transport_from_url(new_url)
659
658
 
660
659
 
762
761
        features,
763
762
        http_server,
764
763
        )
765
 
    permutations = [(HttpTransport, http_server.HttpServer),]
 
764
    permutations = [(HttpTransport, http_server.HttpServer), ]
766
765
    if features.HTTPSServerFeature.available():
767
766
        from breezy.tests import (
768
767
            https_server,