本文整理汇总了Python中webob.Response.conditional_response方法的典型用法代码示例。如果您正苦于以下问题:Python Response.conditional_response方法的具体用法?Python Response.conditional_response怎么用?Python Response.conditional_response使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类webob.Response
的用法示例。
在下文中一共展示了Response.conditional_response方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: test_content_length
# 需要导入模块: from webob import Response [as 别名]
# 或者: from webob.Response import conditional_response [as 别名]
def test_content_length():
r0 = Response('x'*10, content_length=10)
req_head = Request.blank('/', method='HEAD')
r1 = req_head.get_response(r0)
eq_(r1.status_int, 200)
eq_(r1.body, '')
eq_(r1.content_length, 10)
req_get = Request.blank('/')
r2 = req_get.get_response(r0)
eq_(r2.status_int, 200)
eq_(r2.body, 'x'*10)
eq_(r2.content_length, 10)
r3 = Response(app_iter=['x']*10)
eq_(r3.content_length, None)
eq_(r3.body, 'x'*10)
eq_(r3.content_length, 10)
r4 = Response(app_iter=['x']*10, content_length=20) # wrong content_length
eq_(r4.content_length, 20)
assert_raises(AssertionError, lambda: r4.body)
req_range = Request.blank('/', range=(0,5))
r0.conditional_response = True
r5 = req_range.get_response(r0)
eq_(r5.status_int, 206)
eq_(r5.body, 'xxxxx')
eq_(r5.content_length, 5)
示例2: __json_response
# 需要导入模块: from webob import Response [as 别名]
# 或者: from webob.Response import conditional_response [as 别名]
def __json_response(self, serial_obj):
'''Serialize an object into JSON then return as webob Response
:param serial_obj: object acceptable by json.dumps()
'''
resp = Response(json.dumps(serial_obj))
self.logger.debug( json.dumps(serial_obj))
resp.conditional_response = True
return resp
示例3: action_view_GET
# 需要导入模块: from webob import Response [as 别名]
# 或者: from webob.Response import conditional_response [as 别名]
def action_view_GET(self, req, page):
if not page.exists:
return exc.HTTPTemporaryRedirect(location=req.url + "?action=edit")
if req.cookies.get("message"):
message = req.cookies["message"]
else:
message = None
text = self.view_template.substitute(page=page, req=req, message=message)
resp = Response(text)
if message:
resp.delete_cookie("message")
else:
resp.last_modified = page.mtime
resp.conditional_response = True
return resp
示例4: hello_app_cookie
# 需要导入模块: from webob import Response [as 别名]
# 或者: from webob.Response import conditional_response [as 别名]
def hello_app_cookie(req):
r = Response(charset='UTF-8')
if 'name' in req.params:
name = req.params['name']
r.set_cookie('name', name)
elif 'name' in req.cookies:
name = req.cookies['name']
#r.delete_cookie('name')
else:
return form_app
r.unicode_body = u'Hello, %s!' % name
r.conditional_response = True
r.md5_etag()
return r
示例5: __forward
# 需要导入模块: from webob import Response [as 别名]
# 或者: from webob.Response import conditional_response [as 别名]
def __forward(self, method, path, body, headers):
'''Send an HTTP request and return its webob Response.
:param method: the http request method "GET", "POST"
:param path: the path of the request
:param body: body data string
:param headers: dictionary like object of request headers
'''
if 'x-auth-token' in headers:
token = headers['x-auth-token']
else:
method = headers["x-auth-key"]
identifier = headers["x-auth-user"]
_, token = self.__authenticate(method, identifier)
user_info = self.mc.get(token)
if "master_tenantId" not in user_info:
user_info["master_tenantId"] = None
# iterate through the user_info hitting each host with the
# requests and updating the info based on that
for key in user_info:
if key in AuthProxy.RESERVED_WORDS or not self.__is_openstack_auth(
key):
continue
conn = httplib.HTTPConnection(user_info[key]["host"],
user_info[key]["port"], False)
if 'x-auth-token' in headers:
headers["x-auth-token"] = user_info[key]["access"]["token"]["id"]
new_path = path.replace(token, headers["x-auth-token"])
new_body = body.replace(token, headers["x-auth-token"])
if user_info["master_tenantId"] is not None and "tenantId" in user_info[key]:
new_body = new_body.replace(user_info["master_tenantId"],
user_info[key]["tenantId"])
conn.request(method, new_path, new_body, headers)
temp_res = conn.getresponse().read()
conn.close()
temp_res_object = json.loads(temp_res)
# what we need to fetch are the token and the tenantId
if "tenants" in temp_res_object:
for tenant in temp_res_object["tenants"]:
if tenant["enabled"]:
user_info[key]["tenantId"] = tenant["id"]
if "access" in temp_res_object and "token" in temp_res_object["access"]:
token_object = temp_res_object["access"]["token"]
if "tenant" in token_object and "id" in token_object["tenant"]:
user_info[key]["tokenId"] = token_object["id"]
user_info[key]["tenantId"] = token_object["tenant"]["id"]
if user_info[key]["host"] == user_info["host"]:
if "tenantId" in user_info[key]:
user_info["master_tenantId"] = user_info[key]["tenantId"]
res_object = temp_res_object
res = temp_res
if "access" in res_object and "token" in res_object["access"]:
new_token = str(res_object["access"]["token"]["id"])
self.mc.set(new_token, user_info, local_settings.AUTH_TOKEN_EXPIRATION)
self.mc.set(token, user_info, local_settings.AUTH_TOKEN_EXPIRATION)
for old in local_settings.PROXY_REPLACE.keys():
self.logger.debug("REPLACEING %s with %s", old,
local_settings.PROXY_REPLACE[old])
res = res.replace(old, local_settings.PROXY_REPLACE[old])
for port in local_settings.PROXY_ENDPOINT_PORTS:
# maybe just do a regex and replace any host not just
# the keystone host
res = res.replace("%s:%d" % (user_info["host"], port),
"%s:%d" % (local_settings.API_HOST, port))
self.logger.debug( "Forwarded request")
self.logger.debug(res)
resp = Response(res)
resp.conditional_response = True
return resp
示例6: handle_openstack_api
# 需要导入模块: from webob import Response [as 别名]
# 或者: from webob.Response import conditional_response [as 别名]
def handle_openstack_api(self, req, auth_token, values):
''' Handle against the OpenStack API be translating and aggregating
the results of lots of messed up nonsense '''
try:
global_values = self.__path_to_params(req.path)
global_values[GLOBAL].update(values)
global_values[GLOBAL]['auth-token'] = auth_token
global_values[GLOBAL]['method'] = req.method
if 'x-auth-project-id' in req.headers:
global_values[GLOBAL]['auth-project-id'] = req.headers[
'x-auth-project-id']
global_values[GLOBAL].update(req.params)
command = self.__path_to_command(req.path)
self.logger.debug("The command is %s", command)
name = self.get_name(command, req.method)
if req.method == "POST":
body_values = json.loads(req.body)
if name in body_values:
body_values = json.loads(req.body)[name]
cloud, body_values['name'] = self.split_cloud_name(
body_values['name'])
req.body = json.dumps({name: body_values})
global_values[GLOBAL].update(body_values)
elif req.method == "DELETE" and name in ['keypairs']:
cloud, global_values[GLOBAL]['id'] = self.split_cloud_name(
global_values[GLOBAL]['id'])
values.update(global_values)
if "master_tenantId" in global_values[GLOBAL]:
default_tenant = global_values[GLOBAL]["master_tenantId"]
else:
default_tenant = getattr(global_values[GLOBAL], "project_id",
None)
cli = TukeyCli(jsonTrans())
try:
cli.load_config_dir(local_settings.CONF_DIR + cloud)
except NameError:
cli.load_config_dir(local_settings.CONF_DIR)
return_headers = {"headers": []}
result = cli.execute_commands(command, values, object_name=name,
single=self.is_single(command, req.method),
proxy_method=self.openstack_proxy(req, self.path(req.path,
req.method, req.query_string, name),
return_headers, default_tenant))
result = self.remove_error(name, result)
result = self.apply_os_exceptions(command, result)
logger.debug(result)
resp = Response(result)
resp.conditional_response = True
result_object = json.loads(result)
if 'message' in result_object[name] \
and 'code' in result_object[name] \
and result_object[name]['code'] in [409,413,402]:
resp.status = result_object[name]['code']
resp.headers.add('Content-Type','application/json')
if req.method == "HEAD":
for header, value in return_headers["headers"]:
resp.headers.add(header, value)
except exc.HTTPException, e:
resp = e