diff --git a/docs/urls.html b/docs/urls.html index 8267ca2..c23753b 100644 --- a/docs/urls.html +++ b/docs/urls.html @@ -37,8 +37,8 @@

Module pywebcopy.urls

import os import re -from cgi import parse_header from collections import namedtuple +from email.message import Message from hashlib import md5 from zlib import adler32 @@ -53,7 +53,7 @@

Module pywebcopy.urls

__all__ = [ 'url2path', 'filename_present', 'relate', 'get_etag', 'HIERARCHY', 'LINEAR', - 'parse_url', 'parse_header', 'get_host', 'get_prefix', 'get_suffix', + 'parse_url', 'Message', 'get_host', 'get_prefix', 'get_suffix', 'Url', 'LocationParseError', 'secure_filename', 'split_first', 'common_prefix_map', 'common_suffix_map', 'get_content_type_from_headers', 'Context', 'ContextError', @@ -296,11 +296,18 @@

Module pywebcopy.urls

return md5(string).hexdigest() +def parse_separated_header(value: str): + msg = EmailMessage() + msg['content-type'] = 'application/json; charset="utf8"' + main, params = msg.get_content_type(), msg['content-type'].params + return main, params + + def get_content_type_from_headers(headers, default=None): content_type = headers.get('Content-Type', default) if not content_type: return default - content_type, params = parse_header(content_type) + content_type = parse_separated_header(content_type) return content_type @@ -769,6 +776,22 @@

Functions

return bool(_filter_and_group_segments(url, remove_query=True, remove_frag=True)[1]) +
+ def parse_separated_header(value: str) +
+
+
+
+ + Expand source code + +
def parse_separated_header(value: str):
+        msg = EmailMessage()
+        msg['content-type'] = 'application/json; charset='utf8''
+        main, params = msg.get_content_type(), msg['content-type'].params
+        return main, params
+
+
def get_content_type_from_headers(headers, default=None)
@@ -782,7 +805,7 @@

Functions

content_type = headers.get('Content-Type', default) if not content_type: return default - content_type, params = parse_header(content_type) + content_type = parse_separated_header(content_type) return content_type @@ -844,37 +867,6 @@

Functions

return common_suffix_map.get(content_type) -
-def parse_header(line) -
-
-

Parse a Content-type like header.

-

Return the main content-type and a dictionary of options.

-
- -Expand source code - -
def parse_header(line):
-    """Parse a Content-type like header.
-
-    Return the main content-type and a dictionary of options.
-
-    """
-    parts = _parseparam(';' + line)
-    key = parts.__next__()
-    pdict = {}
-    for p in parts:
-        i = p.find('=')
-        if i >= 0:
-            name = p[:i].strip().lower()
-            value = p[i+1:].strip()
-            if len(value) >= 2 and value[0] == value[-1] == '"':
-                value = value[1:-1]
-                value = value.replace('\\\\', '\\').replace('\\"', '"')
-            pdict[name] = value
-    return key, pdict
-
-
def parse_url(url)
@@ -1649,7 +1641,7 @@

Index

  • get_host
  • get_prefix
  • get_suffix
  • -
  • parse_header
  • +
  • parse_separated_header
  • parse_url
  • relate
  • secure_filename
  • diff --git a/pywebcopy/urls.py b/pywebcopy/urls.py index 18480cc..a8ab7f0 100644 --- a/pywebcopy/urls.py +++ b/pywebcopy/urls.py @@ -9,8 +9,8 @@ import os import re -from cgi import parse_header from collections import namedtuple +from email.message import EmailMessage from hashlib import md5 from zlib import adler32 @@ -25,7 +25,7 @@ __all__ = [ 'url2path', 'filename_present', 'relate', 'get_etag', 'HIERARCHY', 'LINEAR', - 'parse_url', 'parse_header', 'get_host', 'get_prefix', 'get_suffix', + 'parse_url', 'Message', 'get_host', 'get_prefix', 'get_suffix', 'Url', 'LocationParseError', 'secure_filename', 'split_first', 'common_prefix_map', 'common_suffix_map', 'get_content_type_from_headers', 'Context', 'ContextError', @@ -272,11 +272,18 @@ def get_etag(string): return md5(string).hexdigest() +def parse_separated_header(value: str): + msg = EmailMessage() + msg['content-type'] = 'application/json; charset="utf8"' + main, params = msg.get_content_type(), msg['content-type'].params + return main, params + + def get_content_type_from_headers(headers, default=None): content_type = headers.get('Content-Type', default) if not content_type: return default - content_type, params = parse_header(content_type) + content_type = parse_separated_header(content_type) return content_type