Пример #1
0
 def _charset__del(self):
     header = self.headers.pop('Content-Type', None)
     if header is None:
         # Don't need to remove anything
         return
     match = CHARSET_RE.search(header)
     if match:
         header = header[:match.start()] + header[match.end():]
     self.headers['Content-Type'] = header
Пример #2
0
 def _charset__del(self):
     header = self.headers.pop('Content-Type', None)
     if header is None:
         # Don't need to remove anything
         return
     match = CHARSET_RE.search(header)
     if match:
         header = header[:match.start()] + header[match.end():]
     self.headers['Content-Type'] = header
Пример #3
0
 def _charset__get(self):
     """
     Get/set the charset (in the Content-Type)
     """
     header = self.headers.get('Content-Type')
     if not header:
         return None
     match = CHARSET_RE.search(header)
     if match:
         return match.group(1)
     return None
Пример #4
0
 def _charset__get(self):
     """
     Get/set the charset (in the Content-Type)
     """
     header = self.headers.get('Content-Type')
     if not header:
         return None
     match = CHARSET_RE.search(header)
     if match:
         return match.group(1)
     return None
Пример #5
0
 def _charset__set(self, charset):
     if charset is None:
         del self.charset
         return
     header = self.headers.pop("Content-Type", None)
     if header is None:
         raise AttributeError("You cannot set the charset when no " "content-type is defined")
     match = CHARSET_RE.search(header)
     if match:
         header = header[: match.start()] + header[match.end() :]
     header += "; charset=%s" % charset
     self.headers["Content-Type"] = header
Пример #6
0
 def _charset__set(self, charset):
     if charset is None:
         del self.charset
         return
     header = self.headers.pop('Content-Type', None)
     if header is None:
         raise AttributeError("You cannot set the charset when no "
                              "content-type is defined")
     match = CHARSET_RE.search(header)
     if match:
         header = header[:match.start()] + header[match.end():]
     header += '; charset=%s' % charset
     self.headers['Content-Type'] = header
Пример #7
0
    def _charset__get(self):
        """
        Get/set the charset specified in Content-Type.

        In the case JSON content where the charset param is not standards
        compliant, we ignore this.
        """
        header = self.headers.get('Content-Type')
        if not header:
            return None
        match = CHARSET_RE.search(header)
        if match:
            return match.group(1)
        return None
Пример #8
0
 def _charset__set(self, charset):
     if charset is None:
         del self.charset
         return
     header = self.headers.get('Content-Type', None)
     if header is None:
         raise AttributeError("You cannot set the charset when no "
                              "content-type is defined")
     if _is_json(header):
         return
     match = CHARSET_RE.search(header)
     if match:
         header = header[:match.start()] + header[match.end():]
     header += '; charset=%s' % charset
     self.headers['Content-Type'] = header
Пример #9
0
 def __init__(self, body=None, status=None, headerlist=None, app_iter=None,
              content_type=None, conditional_response=None,
              **kw):
     if app_iter is None and body is None and ('json_body' in kw or 'json' in kw):
         if 'json_body' in kw:
             json_body = kw.pop('json_body')
         else:
             json_body = kw.pop('json')
         body = json.dumps(json_body, separators=(',', ':'))
         if content_type is None:
             content_type = 'application/json'
     if app_iter is None:
         if body is None:
             body = b''
     elif body is not None:
         raise TypeError(
             "You may only give one of the body and app_iter arguments")
     if status is None:
         self._status = '200 OK'
     else:
         self.status = status
     # initialize headers, content_type, and charset
     self._headers = None
     if headerlist is None:
         self._headerlist = []
     else:
         self._headerlist = headerlist
     content_type = content_type or self.headers.get('Content-Type') or \
             self.default_content_type
     if 'Content-Type' not in self.headers:
         self.headers['Content-Type'] = content_type
     charset = kw.get('charset')
     if content_type:
         if charset:
             self.charset = charset
         elif self.default_charset:
             charset_match = CHARSET_RE.search(content_type)
             if charset_match:
                 charset = self.charset
             elif (content_type == 'text/html'
                     or content_type.startswith('text/')
                     or _is_xml(content_type)):
                 charset = self.default_charset
                 self.charset = charset
             elif _is_json(content_type):
                 # don't set charset on the Content-Type for standards
                 # compliance, but still need it locally to encode body text
                 self.charset = None
                 charset = self.default_charset
     if conditional_response is None:
         self.conditional_response = self.default_conditional_response
     else:
         self.conditional_response = bool(conditional_response)
     if app_iter is None:
         if isinstance(body, text_type):
             if charset is None:
                 raise TypeError(
                     "You cannot set the body to a text value without a "
                     "charset")
             body = body.encode(charset)
         app_iter = [body]
         self.headers['Content-Length'] = str(len(body))
     self._app_iter = app_iter
     for name, value in kw.items():
         if not hasattr(self.__class__, name):
             # Not a basic attribute
             raise TypeError(
                 "Unexpected keyword: %s=%r" % (name, value))
         setattr(self, name, value)