MCPcopy Index your code
hub / github.com/python/cpython / data_open

Method data_open

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

Source from the content-addressed store, hash-verified

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

Callers

nothing calls this directly

Calls 5

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

Tested by

no test coverage detected