Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
parkpow
GitHub Repository: parkpow/deep-license-plate-recognition
Path: blob/master/webhooks/stream-parkpow-webhook-worker/src/index.ts
1091 views
1
import type { Context } from "hono";
2
import { Hono } from "hono";
3
import type { StatusCode } from "hono/utils/http-status";
4
5
const app = new Hono();
6
7
// Worker auth. middleware (Stream token)
8
app.use(async (c: Context, next: () => Promise<void>) => {
9
const auth = c.req.header("Authorization");
10
if (auth !== `Token ${c.env.STREAM_TOKEN}` || c.req.method !== "POST")
11
return c.text("Unauthorized", 401);
12
await next();
13
});
14
15
app.post("/", async (c: Context) => {
16
if (!c.env.PARKPOW_TOKEN) return c.text("Proxy missing parkpow credentials", 400);
17
18
// Update authorization header for ParkPow
19
const incomingHeaders = new Headers(c.req.raw.headers);
20
incomingHeaders.set("Authorization", `Token ${c.env.PARKPOW_TOKEN}`);
21
22
try {
23
// Forward request to ParkPow
24
const resp = await fetch(c.env.PARKPOW_ENDPOINT, {
25
method: c.req.method,
26
headers: incomingHeaders,
27
body: c.req.raw.body,
28
});
29
30
// Stream response from ParkPow
31
return new Response(resp.body, resp);
32
} catch (err) {
33
return c.text(err instanceof Error ? err.message : "Unknown error", 502);
34
}
35
});
36
37
export default app;
38
39