mirror of
https://github.com/FoggedLens/deflock.git
synced 2026-08-24 19:32:40 +02:00
directus extension for purging CF cache
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
export default ({ action }, { env }) => {
|
||||
const { CF_API_KEY, CF_ZONE_ID } = env;
|
||||
const creds = { CF_API_KEY, CF_ZONE_ID };
|
||||
|
||||
action('items.create', async ({ collection, keys }) => {
|
||||
await purgeCloudflareCache(collection, keys, creds);
|
||||
});
|
||||
|
||||
action('items.update', async ({ collection, keys }) => {
|
||||
await purgeCloudflareCache(collection, keys, creds);
|
||||
});
|
||||
|
||||
action('items.delete', async ({ collection, keys }) => {
|
||||
await purgeCloudflareCache(collection, keys, creds);
|
||||
});
|
||||
};
|
||||
|
||||
async function purgeCloudflareCache(collectionName, ids, creds) {
|
||||
const baseUrl = `cms.deflock.me/items/${collectionName}`;
|
||||
const additionalUrls = ids ? ids.map(id => `${baseUrl}/${id}`) : [];
|
||||
|
||||
console.log(baseUrl);
|
||||
console.log(additionalUrls);
|
||||
|
||||
const res = await fetch(
|
||||
`https://api.cloudflare.com/client/v4/zones/${creds.CF_ZONE_ID}/purge_cache`,
|
||||
{
|
||||
method: "POST",
|
||||
headers: {
|
||||
"Authorization": `Bearer ${creds.CF_API_KEY}`,
|
||||
"Content-Type": "application/json"
|
||||
},
|
||||
body: JSON.stringify({
|
||||
prefixes: [
|
||||
baseUrl,
|
||||
...additionalUrls
|
||||
]
|
||||
})
|
||||
}
|
||||
);
|
||||
|
||||
if (res.status >= 200 && res.status < 300) {
|
||||
console.log(`Cloudflare Cache Purged for updated items in collection: ${collectionName}`);
|
||||
} else
|
||||
console.error(res);
|
||||
}
|
||||
Reference in New Issue
Block a user