def request(self, uri, uriParams = {}, body = None, headers = {}): """ Make a HTTP request using Request and return Response. @param (str) uri @param (dict) uriParams @param (mixed) body @param (dict) headers @return (couch.http.Response) @throws (Exception) """ # match for a valid request i.e: HEAD /foo r = re.match("^([A-Z]+)\s+(/.*)", uri) if not r: raise Exception("Usage: <REQUEST METHOD> <REQUEST URI>!") m = r.groups() if len(m) < 2: raise Exception("Usage: <REQUEST METHOD> <REQUEST URI>!") self.Request = Request(self) self.Response = Response() # merge host, port and uri uri = "%s:%s/%s" % (self.host, self.port, m[1].strip(" /")) # set request method, uri, body self.Request \ .setMethod(m[0]) \ .setUri(uri, uriParams) \ .setBody(body) # set request headers (if any) for key, value in headers.items(): self.Request.setHeader(key, value) result = self.Request.send() if result != "": headers, body = result.split("\r\n\r\n", 1) headers = util.parseHeaders(headers) if headers: for key, value in headers.items(): # status line if key == "0": self.Response.setStatus(value) self.Response.setHeader(key, value) self.Response.setBody(body) # is error? if self.Response.getStatusCode() >= 400: self.Response.setError() return self.Response
def request(self, uri, uriParams={}, body=None, headers={}): """ Make a HTTP request using Request and return Response. @param (str) uri @param (dict) uriParams @param (mixed) body @param (dict) headers @return (couch.http.Response) @throws (Exception) """ # match for a valid request i.e: HEAD /foo r = re.match("^([A-Z]+)\s+(/.*)", uri) if not r: raise Exception("Usage: <REQUEST METHOD> <REQUEST URI>!") m = r.groups() if len(m) < 2: raise Exception("Usage: <REQUEST METHOD> <REQUEST URI>!") self.Request = Request(self) self.Response = Response() # merge host, port and uri uri = "%s:%s/%s" % (self.host, self.port, m[1].strip(" /")) # set request method, uri, body self.Request \ .setMethod(m[0]) \ .setUri(uri, uriParams) \ .setBody(body) # set request headers (if any) for key, value in headers.items(): self.Request.setHeader(key, value) result = self.Request.send() if result != "": headers, body = result.split("\r\n\r\n", 1) headers = util.parseHeaders(headers) if headers: for key, value in headers.items(): # status line if key == "0": self.Response.setStatus(value) self.Response.setHeader(key, value) self.Response.setBody(body) # is error? if self.Response.getStatusCode() >= 400: self.Response.setError() return self.Response