def make_request(self, resource, method="GET", body=None, params={}, headers={}): """ Make a request to a given resource @param resource: The resource URI to fetch from (ex. /users) @type resource: str @param method: The HTTP/1.1 Method to use, (GET/PUT/DELETE/POST/HEAD) @type method: str @param body: Optional body text to send @type body: str @param params: Optional additional GET/POST parameters to send (GET if GET, POST if POST) @type params: dict @param headers: Optional extra headers to send @type headers: dict """ from botoweb.request import Request from botoweb.response import Response import urllib query_params = [] for k in params: query_params.append("%s=%s" % (k, urllib.quote_plus(params[k]))) if method == "POST": req = Request.blank(resource) if query_params: body = "&".join(query_params) req.environ[ 'CONTENT_TYPE'] = 'application/x-www-form-urlencoded' else: if query_params: resource = "%s?%s" % (resource, "&".join(query_params)) req = Request.blank(resource) if body: req.body = body req.environ['CONTENT_LENGTH'] = str(len(req.body)) for k in headers: req.headers[k] = headers[k] req.method = method if self.user: req._user = self.user from pprint import pprint pprint(req.GET) return self.mapper.handle(req, Response())
def make_request(self, resource, method="GET", body=None, params={}, headers={}): """ Make a request to a given resource @param resource: The resource URI to fetch from (ex. /users) @type resource: str @param method: The HTTP/1.1 Method to use, (GET/PUT/DELETE/POST/HEAD) @type method: str @param body: Optional body text to send @type body: str @param params: Optional additional GET/POST parameters to send (GET if GET, POST if POST) @type params: dict @param headers: Optional extra headers to send @type headers: dict """ from botoweb.request import Request from botoweb.response import Response import urllib query_params = [] for k in params: query_params.append("%s=%s" % (k, urllib.quote_plus(params[k]))) if method == "POST": req = Request.blank(resource) if query_params: body = "&".join(query_params) req.environ["CONTENT_TYPE"] = "application/x-www-form-urlencoded" else: if query_params: resource = "%s?%s" % (resource, "&".join(query_params)) req = Request.blank(resource) if body: req.body = body req.environ["CONTENT_LENGTH"] = str(len(req.body)) for k in headers: req.headers[k] = headers[k] req.method = method if self.user: req._user = self.user from pprint import pprint pprint(req.GET) return self.mapper.handle(req, Response())
def test_handle_get_noargs(self): """ Test handing a GET request """ r = Request.blank("/foo") r.method = "GET" content = self.url_mapper.handle(r, Response()) assert (content.body == "<string>GET</string>")
def test_handle_get_with_args_and_id(self): """ Test handing a GET request """ r = Request.blank("/foo/my_object_id?bar=biz&diz=dazzle") r.method = "GET" content = self.url_mapper.handle(r, Response()) assert (content.body == "<string>GET: my_object_id</string>")
def test_handle_get_with_args(self): """ Test handing a GET request """ r = Request.blank("/foo?bar=biz&diz=dazzle") r.method = "GET" content = self.url_mapper.handle(r, Response()) assert(content.body == "<string>GET</string>")
def test_path_with_object_id_with_slash(self): my_obj_id = "bucket_name/key_name/foo.avi" (handler, obj_id) = self.url_mapper.parse_path( Request.blank("/foo/%s" % my_obj_id)) assert (handler.__class__.__name__ == "SimpleHandler") assert (obj_id == my_obj_id)
def test_path_with_trailing_slash(self): (handler, obj_id) = self.url_mapper.parse_path(Request.blank("/foo/")) assert (handler.__class__.__name__ == "SimpleHandler") assert (obj_id == None)
def test_path_with_object_id(self): my_obj_id = "2934823-423423432-asdf34AA-5498574298.avi" (handler, obj_id) = self.url_mapper.parse_path( Request.blank("/foo/%s" % my_obj_id)) assert (handler.__class__.__name__ == "SimpleHandler") assert (obj_id == my_obj_id)
def test_path_no_object(self): (handler, obj_id) = self.url_mapper.parse_path(Request.blank("/foo")) assert (handler.__class__.__name__ == "SimpleHandler") assert (obj_id == None)
def test_handle_post_with_args_and_id(self): r = Request.blank("/foo/my_object_id?bar=biz&diz=dazzle") r.method = "POST" content = self.url_mapper.handle(r, Response()) assert (content.body == "<string>POST: my_object_id</string>")
def test_path_with_object_id_with_slash(self): my_obj_id = "bucket_name/key_name/foo.avi" (handler, obj_id) = self.url_mapper.parse_path(Request.blank("/foo/%s" % my_obj_id)) assert(handler.__class__.__name__ == "SimpleHandler") assert(obj_id == my_obj_id)
def test_path_with_trailing_slash(self): (handler, obj_id) = self.url_mapper.parse_path(Request.blank("/foo/")) assert(handler.__class__.__name__ == "SimpleHandler") assert(obj_id == None)
def test_path_with_object_id(self): my_obj_id = "2934823-423423432-asdf34AA-5498574298.avi" (handler, obj_id) = self.url_mapper.parse_path(Request.blank("/foo/%s" % my_obj_id)) assert(handler.__class__.__name__ == "SimpleHandler") assert(obj_id == my_obj_id)
def test_path_no_object(self): (handler, obj_id) = self.url_mapper.parse_path(Request.blank("/foo")) assert(handler.__class__.__name__ == "SimpleHandler") assert(obj_id == None)
def test_handle_post_with_args_and_id(self): r = Request.blank("/foo/my_object_id?bar=biz&diz=dazzle") r.method = "POST" content = self.url_mapper.handle(r, Response()) assert(content.body == "<string>POST: my_object_id</string>")