~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/transport/http/_urllib.py

  • Committer: Patch Queue Manager
  • Date: 2016-04-21 04:10:52 UTC
  • mfrom: (6616.1.1 fix-en-user-guide)
  • Revision ID: pqm@pqm.ubuntu.com-20160421041052-clcye7ns1qcl2n7w
(richard-wilbur) Ensure build of English use guide always uses English text
 even when user's locale specifies a different language. (Jelmer Vernooij)

Show diffs side-by-side

added added

removed removed

Lines of Context:
14
14
# along with this program; if not, write to the Free Software
15
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
16
 
17
 
from cStringIO import StringIO
18
 
import urllib
19
 
import urlparse
 
17
from __future__ import absolute_import
20
18
 
21
19
from bzrlib import (
22
20
    errors,
23
21
    trace,
24
 
    urlutils,
25
22
    )
26
23
from bzrlib.transport import http
27
24
# TODO: handle_response should be integrated into the http/__init__.py
41
38
 
42
39
    _opener_class = Opener
43
40
 
44
 
    def __init__(self, base, _from_transport=None):
 
41
    def __init__(self, base, _from_transport=None, ca_certs=None):
45
42
        super(HttpTransport_urllib, self).__init__(
46
43
            base, 'urllib', _from_transport=_from_transport)
47
44
        if _from_transport is not None:
48
45
            self._opener = _from_transport._opener
49
46
        else:
50
47
            self._opener = self._opener_class(
51
 
                report_activity=self._report_activity)
 
48
                report_activity=self._report_activity, ca_certs=ca_certs)
52
49
 
53
50
    def _perform(self, request):
54
51
        """Send the request to the server and handles common errors.
138
135
        abspath = self._remote_path('.bzr/smart')
139
136
        # We include 403 in accepted_errors so that send_http_smart_request can
140
137
        # handle a 403.  Otherwise a 403 causes an unhandled TransportError.
141
 
        response = self._perform(Request('POST', abspath, body_bytes,
142
 
                                         accepted_errors=[200, 403]))
 
138
        response = self._perform(
 
139
            Request('POST', abspath, body_bytes,
 
140
                    {'Content-Type': 'application/octet-stream'},
 
141
                    accepted_errors=[200, 403]))
143
142
        code = response.code
144
143
        data = handle_response(abspath, code, response.info(), response)
145
144
        return code, data
170
169
 
171
170
def get_test_permutations():
172
171
    """Return the permutations to be used in testing."""
173
 
    from bzrlib import tests
174
 
    from bzrlib.tests import http_server
 
172
    from bzrlib.tests import (
 
173
        features,
 
174
        http_server,
 
175
        )
175
176
    permutations = [(HttpTransport_urllib, http_server.HttpServer_urllib),]
176
 
    if tests.HTTPSServerFeature.available():
177
 
        from bzrlib.tests import https_server
178
 
        permutations.append((HttpTransport_urllib,
 
177
    if features.HTTPSServerFeature.available():
 
178
        from bzrlib.tests import (
 
179
            https_server,
 
180
            ssl_certs,
 
181
            )
 
182
 
 
183
        class HTTPS_urllib_transport(HttpTransport_urllib):
 
184
 
 
185
            def __init__(self, base, _from_transport=None):
 
186
                super(HTTPS_urllib_transport, self).__init__(
 
187
                    base, _from_transport=_from_transport,
 
188
                    ca_certs=ssl_certs.build_path('ca.crt'))
 
189
 
 
190
        permutations.append((HTTPS_urllib_transport,
179
191
                             https_server.HTTPSServer_urllib))
180
192
    return permutations