Untitled

 avatar
unknown
plain_text
2 years ago
1.2 kB
8
Indexable
addEventListener('fetch', event => {

    event.respondWith(purgeCache(event.request))

})

async function purgeCache(request) {

    const url = new URL(request.url)

    // If the path doesn't begin with our protected prefix, just pass the request through.
    if (!url.pathname.startsWith("/__purge_cache")) {
        return fetch(request)
    }

    // Lets validate the zone id, and return an error if invalid
    let zoneIdValidated = (new RegExp("^([a-z0-9]{32})$")).test(url.searchParams.get('zone'));

    if (!zoneIdValidated) {
        return new Response('Invalid Zone ID', {
          status: 500
        });
    }


    let content = '{"purge_everything":true}'
    let headers = {
        'Content-Type': 'application/json',
        'X-Auth-Email': 'CF_EMAL', // Cloudflare API Auth Email
        'X-Auth-Key': 'HERE_CF_API_KEY' //Cloudflare API Auth Key
    }

    const init = {
        method: 'POST',
        headers: headers,
        body: content
    }
    
    const response = await fetch('https://api.cloudflare.com/client/v4/zones/'+url.searchParams.get('zone')+'/purge_cache', init)

    return response
}
Editor is loading...