Объединить три кода в один - PullRequest
0 голосов
/ 23 апреля 2020

Как я могу объединить следующий код в один код? 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. Если кто-нибудь знает, как интегрировать эти три кода и превратить их в код, обязательно помогите

...