Skip to content

Commit 6942889

Browse files
hoodmanemaxvp
authored andcommitted
Improvments to Python rewrite-links example (#24480)
Extract the definition of the HtmlRewriter() to top level. This avoids leaking stuff on every request.
1 parent 48ba4b1 commit 6942889

File tree

1 file changed

+21
-14
lines changed

1 file changed

+21
-14
lines changed

src/content/docs/workers/examples/rewrite-links.mdx

Lines changed: 21 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -111,22 +111,29 @@ from workers import WorkerEntrypoint
111111
from pyodide.ffi import create_proxy
112112
from js import HTMLRewriter, fetch
113113

114+
115+
class AttributeRewriter:
116+
old_url = "developer.mozilla.org"
117+
new_url = "mynewdomain.com"
118+
119+
def __init__(self, attr_name):
120+
self.attr_name = attr_name
121+
122+
def element(self, element):
123+
attr = element.getAttribute(self.attr_name)
124+
if attr:
125+
element.setAttribute(
126+
self.attr_name, attr.replace(self.old_url, self.new_url)
127+
)
128+
129+
130+
href = create_proxy(AttributeRewriter("href"))
131+
src = create_proxy(AttributeRewriter("src"))
132+
rewriter = HTMLRewriter.new().on("a", href).on("img", src)
133+
134+
114135
class Default(WorkerEntrypoint):
115136
async def fetch(self, request):
116-
old_url = "developer.mozilla.org"
117-
new_url = "mynewdomain.com"
118-
119-
class AttributeRewriter:
120-
def __init__(self, attr_name):
121-
self.attr_name = attr_name
122-
def element(self, element):
123-
attr = element.getAttribute(self.attr_name)
124-
if attr:
125-
element.setAttribute(self.attr_name, attr.replace(old_url, new_url))
126-
127-
href = create_proxy(AttributeRewriter("href"))
128-
src = create_proxy(AttributeRewriter("src"))
129-
rewriter = HTMLRewriter.new().on("a", href).on("img", src)
130137
res = await fetch(request)
131138
content_type = res.headers["Content-Type"]
132139

0 commit comments

Comments
 (0)