diff --git a/api/_types/exclusivity.types.ts b/api/_types/exclusivity.types.ts index 010532ccd..960ed190b 100644 --- a/api/_types/exclusivity.types.ts +++ b/api/_types/exclusivity.types.ts @@ -1,5 +1,6 @@ import { boolean, Infer, object, optional } from "superstruct"; import { positiveFloatStr, positiveIntStr, validAddress } from "../_utils"; +import { TypedVercelRequest } from "./generic.types"; export const RelayerFillLimitSchema = object({ originChainId: positiveIntStr(), @@ -21,6 +22,11 @@ export type RelayerConfigUpdate = { relayerFillLimits: RelayerFillLimit[]; }; +export type TypedRelayerConfigUpdateRequest = TypedVercelRequest< + any, + RelayerConfigUpdate +>; + // // Example config. // export const RelayerConfigUpdate: RelayerFillLimit[] = [ // { diff --git a/api/_types/generic.types.ts b/api/_types/generic.types.ts index 9f61f8d70..a6b7773ee 100644 --- a/api/_types/generic.types.ts +++ b/api/_types/generic.types.ts @@ -1,8 +1,6 @@ import { VercelRequest } from "@vercel/node"; -export type TypedVercelRequest = VercelRequest & { - body: T; - headers: { - signature: string; - }; +export type TypedVercelRequest = VercelRequest & { + query: Partial; + body: Partial; }; diff --git a/api/relayer-config.ts b/api/relayer-config.ts index 191022c0b..3b3d5e4cc 100644 --- a/api/relayer-config.ts +++ b/api/relayer-config.ts @@ -5,20 +5,28 @@ import { getWhiteListedRelayers, MAX_MESSAGE_AGE_SECONDS, } from "./_exclusivity/utils"; -import { RelayerConfigUpdate, TypedVercelRequest } from "./_types"; +import { + RelayerConfigUpdate, + TypedRelayerConfigUpdateRequest, + TypedVercelRequest, +} from "./_types"; const handlePostRequest = async ( - request: TypedVercelRequest, + request: TypedRelayerConfigUpdateRequest, response: VercelResponse ) => { const body = request.body as RelayerConfigUpdate; - const { signature } = request.headers; + const { authorization } = request.headers; const { timestamp, relayerFillLimits } = body; if (!isTimestampValid(timestamp, MAX_MESSAGE_AGE_SECONDS)) { return response.status(400).json({ message: "Message too old" }); } - const relayer = getRelayerFromSignature(signature, JSON.stringify(body)); + if (!authorization) { + return response.status(401).json({ message: "Unauthorized" }); + } + + const relayer = getRelayerFromSignature(authorization, JSON.stringify(body)); if (!getWhiteListedRelayers().includes(relayer)) { return response.status(401).json({ message: "Unauthorized" }); diff --git a/test/api/relayer-config.test.ts b/test/api/relayer-config.test.ts index 76720065c..a8d6200da 100644 --- a/test/api/relayer-config.test.ts +++ b/test/api/relayer-config.test.ts @@ -1,12 +1,8 @@ -import handler from "../../api/relayer-config"; -import { - RelayerConfigUpdate, - RelayerFillLimit, - TypedVercelRequest, -} from "../../api/_types"; import { VercelResponse } from "@vercel/node"; import { ethers } from "ethers"; import * as utils from "../../api/_exclusivity/utils"; +import { TypedRelayerConfigUpdateRequest } from "../../api/_types"; +import handler from "../../api/relayer-config"; const { MAX_MESSAGE_AGE_SECONDS } = utils; const getMockedResponse = () => { @@ -39,10 +35,10 @@ describe("Relayer Config API", () => { const request = { method: "POST", headers: { - signature: signature, + authorization: signature, }, body: message, - } as TypedVercelRequest; + } as TypedRelayerConfigUpdateRequest; await handler(request, response); @@ -60,10 +56,10 @@ describe("Relayer Config API", () => { const request = { method: "POST", headers: { - signature: signature, + authorization: signature, }, body: message, - } as TypedVercelRequest; + } as TypedRelayerConfigUpdateRequest; await handler(request, response); @@ -82,10 +78,10 @@ describe("Relayer Config API", () => { const request = { method: "POST", headers: { - signature: signature, + authorization: signature, }, body: message, - } as TypedVercelRequest; + } as TypedRelayerConfigUpdateRequest; await handler(request, response);