Exemplo n.º 1
0
    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())
Exemplo n.º 2
0
    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())
Exemplo n.º 3
0
    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>")
Exemplo n.º 4
0
    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>")
Exemplo n.º 5
0
	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>")
Exemplo n.º 6
0
 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)
Exemplo n.º 7
0
 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)
Exemplo n.º 8
0
 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)
Exemplo n.º 9
0
 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)
Exemplo n.º 10
0
 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>")
Exemplo n.º 11
0
	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)
Exemplo n.º 12
0
	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)
Exemplo n.º 13
0
	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)
Exemplo n.º 14
0
	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)
Exemplo n.º 15
0
	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>")