feat: initial getApps for Cloudflare Pages

This commit is contained in:
Stijn-Kuijper
2023-06-15 09:46:09 +02:00
parent c64cf39b69
commit 381806d84b
5 changed files with 54 additions and 8 deletions
+43 -1
View File
@@ -17,6 +17,7 @@ import {
INTEGRATION_TRAVISCI,
INTEGRATION_SUPABASE,
INTEGRATION_CHECKLY,
INTEGRATION_CLOUDFLARE_PAGES,
INTEGRATION_HEROKU_API_URL,
INTEGRATION_GITLAB_API_URL,
INTEGRATION_VERCEL_API_URL,
@@ -27,7 +28,8 @@ import {
INTEGRATION_CIRCLECI_API_URL,
INTEGRATION_TRAVISCI_API_URL,
INTEGRATION_SUPABASE_API_URL,
INTEGRATION_CHECKLY_API_URL
INTEGRATION_CHECKLY_API_URL,
INTEGRATION_CLOUDFLARE_PAGES_API_URL
} from "../variables";
interface App {
@@ -127,6 +129,12 @@ const getApps = async ({
accessToken,
});
break;
case INTEGRATION_CLOUDFLARE_PAGES:
apps = await getAppsCloudflarePages({
accessToken,
accountId: ''
})
break;
}
return apps;
@@ -636,4 +644,38 @@ const getAppsCheckly = async ({ accessToken }: { accessToken: string }) => {
return apps;
};
/**
* Return list of projects for the Cloudflare Pages integration
* @param {Object} obj
* @param {String} obj.accessToken - api key for the Cloudflare API
* @returns {Object[]} apps - Cloudflare Pages projects
* @returns {String} apps.name - name of Cloudflare Pages project
*/
const getAppsCloudflarePages = async ({
accessToken,
accountId
}: {
accessToken: string;
accountId?: string;
}) => {
const { data } = await standardRequest.get(
`${INTEGRATION_CLOUDFLARE_PAGES_API_URL}/client/v4/accounts/${accountId}/pages/projects`,
{
headers: {
Authorization: `Bearer ${accessToken}`,
"Accept": "application/json",
},
}
);
const apps = data.map((a: any) => {
return {
name: a["project_name"],
appId: a.id,
};
});
return apps;
}
export { getApps };