Path: blob/master/webhooks/stream-parkpow-webhook-worker/src/index.ts
1091 views
import type { Context } from "hono";1import { Hono } from "hono";2import type { StatusCode } from "hono/utils/http-status";34const app = new Hono();56// Worker auth. middleware (Stream token)7app.use(async (c: Context, next: () => Promise<void>) => {8const auth = c.req.header("Authorization");9if (auth !== `Token ${c.env.STREAM_TOKEN}` || c.req.method !== "POST")10return c.text("Unauthorized", 401);11await next();12});1314app.post("/", async (c: Context) => {15if (!c.env.PARKPOW_TOKEN) return c.text("Proxy missing parkpow credentials", 400);1617// Update authorization header for ParkPow18const incomingHeaders = new Headers(c.req.raw.headers);19incomingHeaders.set("Authorization", `Token ${c.env.PARKPOW_TOKEN}`);2021try {22// Forward request to ParkPow23const resp = await fetch(c.env.PARKPOW_ENDPOINT, {24method: c.req.method,25headers: incomingHeaders,26body: c.req.raw.body,27});2829// Stream response from ParkPow30return new Response(resp.body, resp);31} catch (err) {32return c.text(err instanceof Error ? err.message : "Unknown error", 502);33}34});3536export default app;373839