def accept_property(header, rfc_section, AcceptClass=Accept, NilClass=NilAccept): key = header_to_key(header) doc = header_docstring(header, rfc_section) #doc += " Converts it as a %s." % convert_name def fget(req): value = req.environ.get(key) if not value: return NilClass() return AcceptClass(value) def fset(req, val): if val: if isinstance(val, (list, tuple, dict)): val = AcceptClass('') + val val = str(val) req.environ[key] = val or None def fdel(req): del req.environ[key] return property(fget, fset, fdel, doc)
def environ_decoder(key, default=_not_given, rfc_section=None, encattr=None): if rfc_section: doc = header_docstring(key, rfc_section) else: doc = "Gets and sets the ``%s`` key in the environment." % key if default is _not_given: def fget(req): return req.encget(key, encattr=encattr) def fset(req, val): return req.encset(key, val, encattr=encattr) fdel = None else: def fget(req): return req.encget(key, default, encattr=encattr) def fset(req, val): if val is None: if key in req.environ: del req.environ[key] else: return req.encset(key, val, encattr=encattr) def fdel(req): del req.environ[key] return property(fget, fset, fdel, doc=doc)
def header_getter(header, rfc_section): doc = header_docstring(header, rfc_section) key = header.lower() def fget(r): for k, v in r._headerlist: if k.lower() == key: return v def fset(r, value): fdel(r) if value is not None: if '\n' in value or '\r' in value: raise ValueError('Header value may not contain control characters') if isinstance(value, text_type) and not PY3: value = value.encode('latin-1') r._headerlist.append((header, value)) def fdel(r): items = r._headerlist for i in range(len(items)-1, -1, -1): if items[i][0].lower() == key: del items[i] return property(fget, fset, fdel, doc)
def header_getter(header, rfc_section): doc = header_docstring(header, rfc_section) key = header.lower() def fget(r): for k, v in r._headerlist: if k.lower() == key: return v def fset(r, value): fdel(r) if value is not None: if "\n" in value or "\r" in value: raise ValueError( "Header value may not contain control characters") if isinstance(value, text_type) and PY2: value = value.encode("latin-1") r._headerlist.append((header, value)) def fdel(r): r._headerlist[:] = [(k, v) for (k, v) in r._headerlist if k.lower() != key] return property(fget, fset, fdel, doc)
def environ_getter(key, default=_not_given, rfc_section=None): if rfc_section: doc = header_docstring(key, rfc_section) else: doc = "Gets and sets the ``%s`` key in the environment." % key if default is _not_given: def fget(req): return req.environ[key] def fset(req, val): req.environ[key] = val fdel = None else: def fget(req): return req.environ.get(key, default) def fset(req, val): if val is None: if key in req.environ: del req.environ[key] else: req.environ[key] = val def fdel(req): del req.environ[key] return property(fget, fset, fdel, doc=doc)
def environ_decoder(key, default=_not_given, rfc_section=None, encattr=None): """这种取出前要先解码""" if rfc_section: doc = header_docstring(key, rfc_section) else: doc = "Gets and sets the ``%s`` key in the environment." % key if default is _not_given: def fget(req): return req.encget(key, encattr=encattr) def fset(req, val): return req.encset(key, val, encattr=encattr) fdel = None else: def fget(req): return req.encget(key, default, encattr=encattr) def fset(req, val): if val is None: if key in req.environ: del req.environ[key] else: return req.encset(key, val, encattr=encattr) def fdel(req): del req.environ[key] return property(fget, fset, fdel, doc=doc)
def etag_property(key, default, rfc_section, strong=True): doc = header_docstring(key, rfc_section) doc += " Converts it as a Etag." def fget(req): value = req.environ.get(key) if not value: return default else: return ETagMatcher.parse(value, strong=strong) def fset(req, val): if val is None: req.environ[key] = None else: req.environ[key] = str(val) def fdel(req): del req.environ[key] return property(fget, fset, fdel, doc=doc)
def accept_property(header, rfc_section, AcceptClass=Accept, NilClass=NilAccept ): key = header_to_key(header) doc = header_docstring(header, rfc_section) #doc += " Converts it as a %s." % convert_name def fget(req): value = req.environ.get(key) if not value: return NilClass() return AcceptClass(value) def fset(req, val): if val: if isinstance(val, (list, tuple, dict)): val = AcceptClass('') + val val = str(val) req.environ[key] = val or None def fdel(req): del req.environ[key] return property(fget, fset, fdel, doc)
def header_getter(header, rfc_section): doc = header_docstring(header, rfc_section) key = header.lower() def fget(r): for k, v in r._headerlist: if k.lower() == key: return v def fset(r, value): fdel(r) if value is not None: if '\n' in value or '\r' in value: raise ValueError('Header value may not contain control characters') if isinstance(value, text_type) and PY2: value = value.encode('latin-1') r._headerlist.append((header, value)) def fdel(r): r._headerlist[:] = [(k, v) for (k, v) in r._headerlist if k.lower() != key] return property(fget, fset, fdel, doc)
def header_getter(header, rfc_section): doc = header_docstring(header, rfc_section) key = header.lower() def fget(r): for k, v in r._headerlist: if k.lower() == key: return v def fset(r, value): fdel(r) if value is not None: if isinstance(value, unicode): value = value.encode('ISO-8859-1') # standard encoding for headers r._headerlist.append((header, value)) def fdel(r): items = r._headerlist for i in range(len(items)-1, -1, -1): if items[i][0].lower() == key: del items[i] return property(fget, fset, fdel, doc)
def header_getter(header, rfc_section): doc = header_docstring(header, rfc_section) key = header.lower() def fget(r): for k, v in r._headerlist: if k.lower() == key: return v def fset(r, value): fdel(r) if value is not None: if isinstance(value, text_type) and not PY3: value = value.encode("latin-1") r._headerlist.append((header, value)) def fdel(r): items = r._headerlist for i in range(len(items) - 1, -1, -1): if items[i][0].lower() == key: del items[i] return property(fget, fset, fdel, doc)