MCPcopy Index your code
hub / github.com/RustPython/RustPython / data_open

Method data_open

Lib/urllib/request.py:1622–1654  ·  view source on GitHub ↗
(self, req)

Source from the content-addressed store, hash-verified

1620
1621class DataHandler(BaseHandler):
1622 def data_open(self, req):
1623 # data URLs as specified in RFC 2397.
1624 #
1625 # ignores POSTed data
1626 #
1627 # syntax:
1628 # dataurl := "data:" [ mediatype ] [ ";base64" ] "," data
1629 # mediatype := [ type "/" subtype ] *( ";" parameter )
1630 # data := *urlchar
1631 # parameter := attribute "=" value
1632 url = req.full_url
1633
1634 scheme, data = url.split(":",1)
1635 mediatype, data = data.split(",",1)
1636
1637 # Disallow control characters within mediatype.
1638 if re.search(r"[\x00-\x1F\x7F]", mediatype):
1639 raise ValueError(
1640 "Control characters not allowed in data: mediatype")
1641
1642 # even base64 encoded data URLs might be quoted so unquote in any case:
1643 data = unquote_to_bytes(data)
1644 if mediatype.endswith(";base64"):
1645 data = base64.decodebytes(data)
1646 mediatype = mediatype[:-7]
1647
1648 if not mediatype:
1649 mediatype = "text/plain;charset=US-ASCII"
1650
1651 headers = email.message_from_string("Content-type: %s\nContent-length: %d\n" %
1652 (mediatype, len(data)))
1653
1654 return addinfourl(io.BytesIO(data), headers, url)
1655
1656
1657# Code moved from the old urllib module

Callers

nothing calls this directly

Calls 6

unquote_to_bytesFunction · 0.90
addinfourlClass · 0.90
lenFunction · 0.85
splitMethod · 0.45
searchMethod · 0.45
endswithMethod · 0.45

Tested by

no test coverage detected