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')
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')
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()