Make EdgeOne request parsing compatible
This commit is contained in:
@@ -73,10 +73,22 @@ function getWebhookToken(env = {}) {
|
|||||||
return env.WEBHOOK_TOKEN || globalThis.WEBHOOK_TOKEN || "";
|
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) {
|
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();
|
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 = "") {
|
function queryToObject(search = "") {
|
||||||
@@ -113,10 +125,10 @@ function isAuthorized(request, url, env) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async function readBody(request) {
|
async function readBody(request) {
|
||||||
const raw = (await request.text()).trim();
|
const raw = typeof request.text === "function" ? (await request.text()).trim() : "";
|
||||||
if (!raw) return {};
|
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/json")) return JSON.parse(raw);
|
||||||
if (contentType.includes("application/x-www-form-urlencoded")) {
|
if (contentType.includes("application/x-www-form-urlencoded")) {
|
||||||
return Object.fromEntries(new URLSearchParams(raw));
|
return Object.fromEntries(new URLSearchParams(raw));
|
||||||
|
|||||||
Reference in New Issue
Block a user