Как я могу объединить следующий код в один код? 1 - добавить хост
addEventListener('fetch', event => {
let url = new URL(event.request.url);
url.hostname = 'old-help-center.mysite.com'
let request = new Request(url, event.request)
event.respondWith(fetch(request, {
cf: { cacheKey: event.request.url }
}))
})
2 - заменить слово
addEventListener("fetch", event => {
event.respondWith(fetchAndReplace(event.request))
})
async function fetchAndReplace(request) {
// Fetch from origin server.
let response = await fetch(request)
// Make sure we only modify text, not images.
let type = response.headers.get("Content-Type") || ""
if (!type.startsWith("text/")) {
// Not text. Don't modify.
return response
}
// Read response body.
let text = await response.text()
// Modify it.
let modified = text
.replace(/old-help-center/g, "new-help-center")
.replace(/old-word/g, "new-word")
// Return modified response.
return new Response(modified, {
status: response.status,
statusText: response.statusText,
headers: response.headers
})
}
3 - заменить старый URL
async function handleRequest(req) {
const res = await fetch(req)
return rewriter.transform(res)
}
class AttributeRewriter {
constructor(attributeName) {
this.attributeName = attributeName
}
element(element) {
const attribute = element.getAttribute(this.attributeName)
if (attribute) {
element.setAttribute(
this.attributeName,
attribute
.replace('/uid.cf/?g=', '/u-')
.replace('//old.com/', '//new.com/')
.replace('//static.old.com/', '//cdn.new.com/')
)
}
}
}
const rewriter = new HTMLRewriter()
.on('a', new AttributeRewriter('href'))
.on('link', new AttributeRewriter('href'))
addEventListener('fetch', event => {
event.respondWith(handleRequest(event.request))
})
Эти три кода являются отдельными от каждого другое Я не знаком с этими кодами, но знаю, что каждый из этих кодов работает отдельно. Я использую платформу cloudflareworkers. Если кто-нибудь знает, как интегрировать эти три кода и превратить их в код, обязательно помогите