Compare commits

..

1 Commits

2 changed files with 24 additions and 29 deletions

@ -28,10 +28,6 @@ The primary stack for MHSF is Next.js, a React framework, which you can start by
[You can also opt out of telemetry if you'd like.](https://nextjs.org/telemetry) [You can also opt out of telemetry if you'd like.](https://nextjs.org/telemetry)
## Clerk ## Clerk
> [!CAUTION]
> Clerk is no longer optional. If Clerk is not setup, you *will* get a `Non-authenticated environments are disallowed on this origin.` error on the frontend.
> You may be able to modify/test API endpoints as long as they do not require accounts.
If you want to test out accounts, [you must create an Clerk key from their website.](https://clerk.com) If you want to test out accounts, [you must create an Clerk key from their website.](https://clerk.com)
Set the following variables in the .env.local file: Set the following variables in the .env.local file:
```dotenv ```dotenv

@ -30,33 +30,32 @@
import { NextApiRequest, NextApiResponse } from "next"; import { NextApiRequest, NextApiResponse } from "next";
export default async function handler( export default async function handler(
req: NextApiRequest, req: NextApiRequest,
res: NextApiResponse, res: NextApiResponse
) { ) {
const betterStackResult = await fetch( const betterStackResult = await fetch(
`https://uptime.betterstack.com/api/v2/status-pages/${process.env.BS_STATUS_PAGE}/status-reports`, `https://uptime.betterstack.com/api/v2/status-pages/${process.env.BS_STATUS_PAGE}/status-reports`,
{ headers: { Authorization: `Bearer ${process.env.BS_TOKEN}` } }, { headers: { Authorization: `Bearer ${process.env.BS_TOKEN}` } }
); );
const betterStackURL = await fetch( const betterStackURL = await fetch(
`https://uptime.betterstack.com/api/v2/status-pages/${process.env.BS_STATUS_PAGE}`, `https://uptime.betterstack.com/api/v2/status-pages/${process.env.BS_STATUS_PAGE}`,
{ headers: { Authorization: `Bearer ${process.env.BS_TOKEN}` } }, { headers: { Authorization: `Bearer ${process.env.BS_TOKEN}` } }
); );
const result = await betterStackResult.json(); const result = await betterStackResult.json();
const url = await betterStackURL.json(); const url = await betterStackURL.json();
const filtered = result.data.filter( const filtered = result.data.filter(
(c: any) => (c: any) =>
c.attributes.ends_at === null && c.attributes.ends_at === null &&
c.attributes.affected_resources.filter( c.attributes.affected_resources.filter(
(v: any) => (v: any) =>
v.status_page_resource_id === process.env.BS_STATUS_MAIN_WEBSITE && v.status_page_resource_id === process.env.BS_STATUS_MAIN_WEBSITE
v.status !== "resolved", ).length > 0
).length > 0, );
);
res.status(200).send({ res.status(200).send({
url: url.data.attributes.custom_domain, url: url.data.attributes.custom_domain,
incidents: filtered, incidents: filtered,
}); });
} }