def __call__(self, data, **metadata): try: img = Image.open(BytesIO(data)) except IOError: return None parts = [ ("Format", str(img.format_description)), ("Size", "%s x %s px" % img.size), ("Mode", str(img.mode)), ] for i in sorted(img.info.keys()): if i != "exif": parts.append( (str(i), str(img.info[i])) ) if hasattr(img, "_getexif"): ex = img._getexif() if ex: for i in sorted(ex.keys()): tag = ExifTags.TAGS.get(i, i) parts.append( (str(tag), str(ex[i])) ) fmt = format_dict(multidict.MultiDict(parts)) return "%s image" % img.format, fmt
def __call__(self, data, **metadata): try: data = data.decode("ascii", "strict") except ValueError: return None d = url.decode(data) return "URLEncoded form", format_dict(multidict.MultiDict(d))
def test_view_auto(self): v = cv.ViewAuto() f = v( "foo", headers=Headers() ) assert f[0] == "Raw" f = v( "<html></html>", headers=Headers(content_type="text/html") ) assert f[0] == "HTML" f = v( "foo", headers=Headers(content_type="text/flibble") ) assert f[0] == "Raw" f = v( "<xml></xml>", headers=Headers(content_type="text/flibble") ) assert f[0].startswith("XML") f = v( "", headers=Headers() ) assert f[0] == "No content" f = v( "", headers=Headers(), query=multidict.MultiDict([("foo", "bar")]), ) assert f[0] == "Query"
def _format(v): yield [("highlight", "Form data:\n")] for message in format_dict(multidict.MultiDict(v)): yield message
def __call__(self, data, **metadata): d = url.decode(data) return "URLEncoded form", format_dict(multidict.MultiDict(d))
def test_view_query(self): d = "" v = cv.ViewQuery() f = v(d, query=multidict.MultiDict([("foo", "bar")])) assert f[0] == "Query" assert [x for x in f[1]] == [[("header", "foo: "), ("text", "bar")]]