Example #1
0
 def raise_for_status(self):
     if self.status_code == 404:
         raise NotFound(self.status_code, "Not Found")
     if (self.status_code >= 300) and (self.status_code < 400):
         raise ResponseError(self.status_code,
                             '%s Redirection' % self.status_code)
     elif (self.status_code >= 400) and (self.status_code < 500):
         raise ResponseError(self.status_code,
                             '%s Client Error' % self.status_code)
     elif (self.status_code >= 500) and (self.status_code < 600):
         raise ResponseError(self.status_code,
                             '%s Server Error' % self.status_code)
 def test_delete_container_raises_other_error(self):
     self.client.make_request = Mock()
     self.client.make_request.side_effect = ResponseError(
         404, '404 Not Found')
     self.connection.make_request().content
     self.assertRaises(ResponseError, self.client.delete_container,
                       'container')
 def test_delete_container_raises_not_empty(self):
     self.client.make_request = Mock()
     self.client.make_request.side_effect = ResponseError(
         409, '409 Client Error')
     self.connection.make_request().content
     self.assertRaises(ContainerNotEmpty, self.client.delete_container,
                       'container')
Example #4
0
    def __init__(self, conn, method, url, size=None, headers=None):
        self.conn = conn
        self.method = method
        self.req = None
        self._chunked_encoding = True
        headers = headers or {}

        if size is None:
            headers['Transfer-Encoding'] = 'chunked'
        else:
            self._chunked_encoding = False
            headers['Content-Length'] = str(size)

        if 'ETag' in headers:
            del headers['ETag']

        scheme, netloc, path, params, query, fragment = urlparse(url)
        match = re.match('([a-zA-Z0-9\-\.]+):?([0-9]{2,5})?', netloc)

        if match:
            (host, port) = match.groups()
        else:
            ValueError('Invalid URL')

        if not port:
            if scheme == 'https':
                port = 443
            else:
                port = 80

        if scheme == 'https':
            self.req = httplib.HTTPSConnection(host, port)
        else:
            self.req = httplib.HTTPConnection(host, port)
        try:
            self.req.putrequest('PUT', path)
            for key, value in headers.iteritems():
                self.req.putheader(key, value)
            self.req.endheaders()
        except Exception:
            raise ResponseError(0, 'Disconnected')
Example #5
0
        except Exception:
            raise ResponseError(0, 'Disconnected')

    def send(self, chunk):
        """ Sends a chunk of data. """
        try:
            if self._chunked_encoding:
                self.req.send("%X\r\n" % len(chunk))
                self.req.send(chunk)
                self.req.send("\r\n")
            else:
                self.req.send(chunk)
        except timeout, err:
            raise err
        except:
            raise ResponseError(0, 'Disconnected')

    def finish(self):
        """ Finished the request out and receives a response. """
        try:
            if self._chunked_encoding:
                self.req.send("0\r\n\r\n")
        except timeout, err:
            raise err
        except:
            raise ResponseError(0, 'Disconnected')

        res = self.req.getresponse()
        content = res.read()

        r = Response()