From 9e0192fe522e28510f89f97d01911340739752ac Mon Sep 17 00:00:00 2001 From: Matthew Welch Date: Sun, 9 Feb 2025 14:56:38 -0800 Subject: [PATCH] add support for base64 encoding with the data scheme --- browser.py | 3 +++ tests/url_test.py | 9 +++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/browser.py b/browser.py index bc30069..9be28cf 100644 --- a/browser.py +++ b/browser.py @@ -1,3 +1,4 @@ +import base64 import os.path import socket import ssl @@ -129,6 +130,8 @@ class Request: return f.read() def data_request(self): + if self.url.media_encoding == "base64": + return base64.b64decode(self.url.data) return self.url.data diff --git a/tests/url_test.py b/tests/url_test.py index 0117454..7897baa 100644 --- a/tests/url_test.py +++ b/tests/url_test.py @@ -1,3 +1,5 @@ +import base64 + import pytest from browser import URL @@ -188,7 +190,7 @@ def test_url_parsing(url_string, scheme, host, port, path, query, fragment, pars True, ), ( - "data:text/plain;base64,This is some text", + "data:text/plain;base64,VGhpcyBpcyBzb21lIHRleHQ=", "text/plain", "base64", "This is some text", @@ -200,7 +202,10 @@ def test_data_url_parsing(url_string, media_type, media_encoding, data, parse_su url, success = parse_url(url_string) assert url.media_type == media_type assert url.media_encoding == media_encoding - assert url.data == data + if media_encoding == "base64": + assert base64.b64decode(url.data).decode("utf8") == data; + else: + assert url.data == data assert success == parse_success