···
63
63
? `/${url.pathname.split("/").filter(Boolean)[0]}`
64
64
: "/";
65
65
66
66
+
// CORS headers to allow all origins
67
67
+
const corsHeaders = {
68
68
+
"Access-Control-Allow-Origin": "*",
69
69
+
"Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, OPTIONS",
70
70
+
"Access-Control-Allow-Headers": "Content-Type, Authorization",
71
71
+
};
72
72
+
73
73
+
// Handle preflight OPTIONS request
74
74
+
if (request.method === "OPTIONS") {
75
75
+
return new Response(null, {
76
76
+
status: 204,
77
77
+
headers: corsHeaders,
78
78
+
});
79
79
+
}
80
80
+
81
81
+
let response: Response;
66
82
switch (path) {
67
83
case "/":
68
68
-
return new Response(`Hello World from ${name}@${version}`);
84
84
+
response = new Response(`Hello World from ${name}@${version}`);
85
85
+
break;
69
86
case "/health":
70
70
-
return new Response("OK");
87
87
+
response = new Response("OK");
88
88
+
break;
71
89
case "/slack":
72
72
-
return slackApp.run(request);
90
90
+
response = await slackApp.run(request);
91
91
+
break;
73
92
case "/api":
74
74
-
return apiRouter(url);
93
93
+
response = await apiRouter(url);
94
94
+
break;
75
95
default:
76
76
-
return new Response("404 Not Found", { status: 404 });
96
96
+
response = new Response("404 Not Found", { status: 404 });
97
97
+
}
98
98
+
99
99
+
// Add CORS headers to all responses
100
100
+
const newHeaders = new Headers(response.headers);
101
101
+
for (const [key, value] of Object.entries(corsHeaders)) {
102
102
+
newHeaders.set(key, value);
77
103
}
104
104
+
105
105
+
return new Response(response.body, {
106
106
+
status: response.status,
107
107
+
statusText: response.statusText,
108
108
+
headers: newHeaders,
109
109
+
});
78
110
},
79
111
};
80
112