Make EdgeOne request parsing compatible
This commit is contained in:
@@ -73,10 +73,22 @@ function getWebhookToken(env = {}) {
|
||||
return env.WEBHOOK_TOKEN || globalThis.WEBHOOK_TOKEN || "";
|
||||
}
|
||||
|
||||
function getHeader(request, name) {
|
||||
const headers = request.headers || {};
|
||||
if (typeof headers.get === "function") return headers.get(name) || "";
|
||||
|
||||
const lowerName = name.toLowerCase();
|
||||
for (const key of Object.keys(headers)) {
|
||||
if (key.toLowerCase() === lowerName) return headers[key] || "";
|
||||
}
|
||||
|
||||
return "";
|
||||
}
|
||||
|
||||
function getRequestToken(request, url) {
|
||||
const auth = request.headers.get("authorization") || "";
|
||||
const auth = getHeader(request, "authorization");
|
||||
if (auth.toLowerCase().startsWith("bearer ")) return auth.slice(7).trim();
|
||||
return request.headers.get("x-webhook-token") || url.searchParams.get("token") || "";
|
||||
return getHeader(request, "x-webhook-token") || queryToObject(url.search).token || "";
|
||||
}
|
||||
|
||||
function queryToObject(search = "") {
|
||||
@@ -113,10 +125,10 @@ function isAuthorized(request, url, env) {
|
||||
}
|
||||
|
||||
async function readBody(request) {
|
||||
const raw = (await request.text()).trim();
|
||||
const raw = typeof request.text === "function" ? (await request.text()).trim() : "";
|
||||
if (!raw) return {};
|
||||
|
||||
const contentType = request.headers.get("content-type") || "";
|
||||
const contentType = getHeader(request, "content-type");
|
||||
if (contentType.includes("application/json")) return JSON.parse(raw);
|
||||
if (contentType.includes("application/x-www-form-urlencoded")) {
|
||||
return Object.fromEntries(new URLSearchParams(raw));
|
||||
|
||||
Reference in New Issue
Block a user