当前位置: 首页>>代码示例>>Python>>正文


Python Response.headers["Location"]方法代码示例

本文整理汇总了Python中swift.common.swob.Response.headers["Location"]方法的典型用法代码示例。如果您正苦于以下问题:Python Response.headers["Location"]方法的具体用法?Python Response.headers["Location"]怎么用?Python Response.headers["Location"]使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在swift.common.swob.Response的用法示例。


在下文中一共展示了Response.headers["Location"]方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: PUT

# 需要导入模块: from swift.common.swob import Response [as 别名]
# 或者: from swift.common.swob.Response import headers["Location"] [as 别名]
    def PUT(self, env, start_response):
        """
        Handle PUT Bucket request
        """
        # checking params available
        AMZ_ACL = set(
            [
                "HTTP_X_AMZ_GRANT_READ",
                "HTTP_X_AMZ_GRANT_WRITE",
                "HTTP_X_AMZ_GRANT_READ_ACP",
                "HTTP_X_AMZ_GRANT_WRITE_ACP",
                "HTTP_X_AMZ_GRANT_FULL_CONTROL",
            ]
        )
        qs = env.get("QUERY_STRING", "")
        args = urlparse.parse_qs(qs, 1)
        if not args:
            if not self.validate_bucket_name(self.container_name):
                return self.get_err_response("InvalidBucketName")

            if not self.is_unique(self.container_name):
                return self.get_err_response("BucketAlreadyExists")

            # to create a new one
            if "HTTP_X_AMZ_ACL" in env:
                amz_acl = env["HTTP_X_AMZ_ACL"]
                translated_acl = self.swift_acl_translate(canned=amz_acl)
                for header, value in translated_acl:
                    env[header] = value
            elif AMZ_ACL & set(env.keys()):
                acld = dict()
                if "HTTP_X_AMZ_GRANT_READ" in env.keys():
                    acld["read"] = self.keyvalue2dict(env["HTTP_X_AMZ_GRANT_READ"])
                if "HTTP_X_AMZ_GRANT_WRITE" in env.keys():
                    acld["write"] = self.keyvalue2dict(env["HTTP_X_AMZ_GRANT_WRITE"])
                if "HTTP_X_AMZ_GRANT_FULL_CONTROL" in env.keys():
                    acld["full"] = self.keyvalue2dict(env["HTTP_X_AMZ_GRANT_FULL_CONTROL"])
                translated_acl = self.swift_acl_translate(acl=acld)
                for header, value in translated_acl:
                    env[header] = value

            # modify env put to swift
            body_iter = self._app_call(env)
            status = self._get_status_int()

            if status != HTTP_CREATED:
                if status in (HTTP_UNAUTHORIZED, HTTP_FORBIDDEN):
                    return self.get_err_response("AccessDenied")
                elif status == HTTP_ACCEPTED:
                    return self.get_err_response("BucketAlreadyExists")
                else:
                    return self.get_err_response("InvalidURI")

            resp = Response()
            resp.headers["Location"] = self.container_name
            resp.status = HTTP_OK
            return resp

        if len(args) > 1:
            return self.get_err_response("InvalidURI")

        # now args only 1
        action = args.keys().pop()
        if action == "acl":
            # put acl
            acl = env["wsgi.input"].read()
            env["REQUEST_METHOD"] = "POST"
            env["QUERY_STRING"] = ""
            env["HTTP_X_CONTAINER_META_ACL"] = quote(acl)
            body_iter = self._app_call(env)
            status = self._get_status_int()
            if is_success(status):
                resp = Response()
                resp.status = HTTP_OK
                return resp
            elif status in (HTTP_UNAUTHORIZED, HTTP_FORBIDDEN):
                return self.get_err_response("AccessDenied")
            else:
                return self.get_err_response("InvalidURI")
        elif action == "cors":
            # put cors
            bodye = self.xmlbody2elem(env["wsgi.input"].read())
            env["HTTP_X_CONTAINER_META_ACCESS_CONTROL_ALLOW_ORIGIN"] = ",".join(
                [i.text for i in bodye.xpath("/CORSConfiguration/CORSRule/AllowedOrigin")]
            )
            env["HTTP_X_CONTAINER_META_ACCESS_CONTROL_MAX_AGE"] = ",".join(
                [i.text for i in bodye.xpath("/CORSConfiguration/CORSRule/MaxAgeSeconds")]
            )
            env["HTTP_X_CONTAINER_META_ACCESS_CONTROL_EXPOSE_HEADERS"] = ",".join(
                [i.text for i in bodye.xpath("/CORSConfiguration/CORSRule/ExposeHeader")]
            )
            env["HTTP_X_CONTAINER_META_ACCESS_CONTROL_ALLOW_METHOD"] = ",".join(
                i.text for i in bodye.xpath("/CORSConfiguration/CORSRule/AllowedMethod")
            )
            env["QUERY_STRING"] = ""
            env["REQUEST_METHOD"] = "POST"

            body_iter = self._app_call(env)
            status = self._get_status_int()

#.........这里部分代码省略.........
开发者ID:pyKun,项目名称:swift3,代码行数:103,代码来源:bucket.py


注:本文中的swift.common.swob.Response.headers["Location"]方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。