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


Python HTTPHeaders.parse_line方法代码示例

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


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

示例1: headers_parse_simple

# 需要导入模块: from tornado.httputil import HTTPHeaders [as 别名]
# 或者: from tornado.httputil.HTTPHeaders import parse_line [as 别名]
def headers_parse_simple(headers: str) -> HTTPHeaders:
    h = HTTPHeaders()
    for line in headers.split("\n"):
        if line.endswith("\r"):
            line = line[:-1]
        if line:
            h.parse_line(line)
    return h
开发者ID:bdarnell,项目名称:tornado,代码行数:10,代码来源:parsing_benchmark.py

示例2: parse_headers

# 需要导入模块: from tornado.httputil import HTTPHeaders [as 别名]
# 或者: from tornado.httputil.HTTPHeaders import parse_line [as 别名]
def parse_headers(data):
    headers = HTTPHeaders()

    for line in data.splitlines():
        if line:
            try:
                headers.parse_line(line)
            except Exception, e:
                break
开发者ID:alexmerser,项目名称:python-element,代码行数:11,代码来源:proxy.py

示例3: _curl_header_callback

# 需要导入模块: from tornado.httputil import HTTPHeaders [as 别名]
# 或者: from tornado.httputil.HTTPHeaders import parse_line [as 别名]
 def _curl_header_callback(
     self,
     headers: httputil.HTTPHeaders,
     header_callback: Callable[[str], None],
     header_line_bytes: bytes,
 ) -> None:
     header_line = native_str(header_line_bytes.decode("latin1"))
     if header_callback is not None:
         self.io_loop.add_callback(header_callback, header_line)
     # header_line as returned by curl includes the end-of-line characters.
     # whitespace at the start should be preserved to allow multi-line headers
     header_line = header_line.rstrip()
     if header_line.startswith("HTTP/"):
         headers.clear()
         try:
             (__, __, reason) = httputil.parse_response_start_line(header_line)
             header_line = "X-Http-Reason: %s" % reason
         except httputil.HTTPInputError:
             return
     if not header_line:
         return
     headers.parse_line(header_line)
开发者ID:bdarnell,项目名称:tornado,代码行数:24,代码来源:curl_httpclient.py

示例4: read_headers

# 需要导入模块: from tornado.httputil import HTTPHeaders [as 别名]
# 或者: from tornado.httputil.HTTPHeaders import parse_line [as 别名]
 def read_headers(self):
     parser = HTTPHeaders()
     lastkey = None
     count = 0
     while True:
         line = yield self.stream.read_until(b'\r\n',max_bytes=self.max_header_length)
         if len(line) == 2:
             break
         self.readed += len(line)
         count += 1
         line = line.decode('utf-8')
         if self.max_headers and count > self.max_headers:
             raise iostream.UnsatisfiableReadError("Too many headers "+line+' '+json.dumps(parser))
         parser.parse_line(line)
         if lastkey is None:
             lastkey = parser._last_key
         elif lastkey != parser._last_key:
             self.request.received_header(lastkey,parser[lastkey])
             lastkey = parser._last_key
     self.request.request_headers = parser
     self.request.received_headers()
     note('received all headers')
     raise gen.Return(parser)
开发者ID:cyisfor,项目名称:gnunet-webserver,代码行数:25,代码来源:myserver.py

示例5: ProxyHandler

# 需要导入模块: from tornado.httputil import HTTPHeaders [as 别名]
# 或者: from tornado.httputil.HTTPHeaders import parse_line [as 别名]
class ProxyHandler(web.RequestHandler):

    def initialize(self):
        self.proxy_headers = HTTPHeaders()
        # create a new client for each request
        self.http_client = AsyncHTTPClient(max_clients=1)
        self.in_request_headers = False
        self.id = id(self)
        self.request_data = None

    def validate_request(self, request_data):
        if self.request.headers.get("X-Proxy-Agent") == X_Proxy_Agent:
            self.set_status(403, "recursion rejected")
            return False

        try:
            RequstDataValidator.validate(request_data)
        except ValidationError as err:
            self.set_status(400, "/%s: %s" % (
                "::".join(err.path), err.message
            ))
            return False
        return True

    def get_post_request_data(self):
        try:
            request_data = json.loads(self.request.body.decode("utf-8"))
        except ValueError as err:
            self.set_status(400, str(err))
            return
        return request_data

    def _set_proxy_headers(self):
        for k, v in self.proxy_headers.items():
            if k not in RESPONSE_EXCLUDE_HEADERS:
                logger.debug(
                    "[%s] write header %s: %s", self.id, k, v,
                )
                self.set_header(k, v)

    def _streaming_callback(self, chunk):
        if self._finished:
            return

        if not self._headers_written:
            self._set_proxy_headers()
            self.flush()
        self.in_request_headers = False
        self.write(chunk)
        logger.debug("[%s] chunk length %s", self.id, len(chunk))

    def _header_callback(self, header_line):
        if not self.in_request_headers:
            start_line = parse_response_start_line(header_line)
            self.set_status(start_line.code, start_line.reason)
            self.in_request_headers = True
        elif not HTTPHeaderEndLineRex.match(header_line):
            self.proxy_headers.parse_line(header_line)

    def _get_request_body(self, request_data):
        post_type = request_data.get("post_type")
        data = request_data.get("data")
        if data is None:
            return None

        if post_type == "form":
            body = urlencode(data or {})
        elif post_type == "json":
            body = json.dumps(data)
        elif post_type == "string" and isinstance(data, basestring):
            body = native_str(data)
        else:
            body = None
        return body

    @gen.coroutine
    def _get_keystone_auth_headers(self, auth_info, validate_cert=True):
        try:
            response = yield self.http_client.fetch(
                auth_info.get("auth_url"), method="POST",
                headers={"Content-Type": "application/json"},
                validate_cert=validate_cert,
                body=json.dumps({
                    "auth": {
                        "passwordCredentials": {
                            "username": auth_info.get("user_name"),
                            "password": auth_info.get("password"),
                        },
                        "tenantName": auth_info.get("tenant_name"),
                    }
                })
            )
        except Exception as err:
            logger.info(err)
            self.set_status(503, "keystone auth error")
            raise gen.Return()

        if response.error or response.code != 200:
            logger.info("keystone auth error")
            self.set_status(407, "keystone auth error")
#.........这里部分代码省略.........
开发者ID:MrLYC,项目名称:TndHTTPAgent,代码行数:103,代码来源:http_agent.py

示例6: headers_parse_re

# 需要导入模块: from tornado.httputil import HTTPHeaders [as 别名]
# 或者: from tornado.httputil.HTTPHeaders import parse_line [as 别名]
def headers_parse_re(headers: str) -> HTTPHeaders:
    h = HTTPHeaders()
    for line in _CRLF_RE.split(headers):
        if line:
            h.parse_line(line)
    return h
开发者ID:bdarnell,项目名称:tornado,代码行数:8,代码来源:parsing_benchmark.py

示例7: ProxyHandler

# 需要导入模块: from tornado.httputil import HTTPHeaders [as 别名]
# 或者: from tornado.httputil.HTTPHeaders import parse_line [as 别名]

#.........这里部分代码省略.........
                          method=self.request.method,
                          body=self.request.body,
                          headers=self.request.headers,
                          follow_redirects=False,
                          if_modified_since=cache_time,
                          allow_nonstandard_methods=True,
                          connect_timeout=int(self.settings['proxy']['timeout']),
                          request_timeout=2 ** 31 - 1,
                          header_callback=self.process_header,
                          streaming_callback=self.process_body,
                          callback=self.process_finish)

    def process_header(self, line):
        header = line.strip()
        app_log.debug('response header %s', header)
        if header:
            if self.req_headers is None:
                self.req_headers = HTTPHeaders()
                _, status, _ = header.split(' ', 2)
                status = int(status)

                if status == 599:
                    # network error but cache file exists
                    if self.cache_file.exists():
                        status = 200
                elif status == 304:
                    status = 200
                elif status == 200:
                    app_log.debug('prepare temp file for %s', self.req_path)
                    self.cache_fd = NamedTemporaryFile(dir=str(self.cache_dir), delete=False)

                self.set_status(status)
            else:
                self.req_headers.parse_line(line)
            return

        for header in ('Date', 'Cache-Control', 'Server', 'Content-Type', 'Location'):
            val = self.req_headers.get(header)
            if val:
                self.set_header(header, val)

        if 'content-encoding' not in self.req_headers:
            val = self.req_headers.get('Content-Length')
            if val:
                self.set_header('Content-Length', val)

        self.flush()

    def process_body(self, chunk):
        if self._finished:
            return

        if self.cache_fd is not None:
            self.cache_fd.write(chunk)

        self.write(chunk)
        self.flush()

    def process_finish(self, response):
        app_log.debug('process finish %s', self.req_path)
        if self._finished or self.cache_used:
            app_log.debug('skip process finish')
            return

        app_log.info('code %s fo %s', response.code, self.request.uri)
开发者ID:hurie,项目名称:tyumproxy,代码行数:69,代码来源:handler.py


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