Skip to content

Commit 90a16da

Browse files
committed
[Service Utils] Feature: Accept Request in authorizeNode (#5724)
## Problem solved Short description of the bug fixed or feature added <!-- start pr-codex --> --- ## PR-Codex overview This PR focuses on enhancing the `authorizeNode` function by improving type handling for request headers and refactoring how headers are accessed. It introduces a type guard for distinguishing between header types and updates the way headers are retrieved in various functions. ### Detailed summary - Updated `req` type in `AuthInput` to allow `Request`. - Added `isNodeHeaders` function to differentiate between `IncomingHttpHeaders` and `Headers`. - Refactored `getHeader` function to use `isNodeHeaders` for retrieving headers. - Modified `extractAuthorizationData` to use `getHeader` for constructing the URL. - Updated `logHttpRequest` to use `getHeader` for SDK-related headers. > ✨ Ask PR-Codex anything about this PR by commenting with `/codex {your question}` <!-- end pr-codex -->
1 parent e8b1f49 commit 90a16da

File tree

2 files changed

+23
-12
lines changed

2 files changed

+23
-12
lines changed

.changeset/tidy-squids-end.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@thirdweb-dev/service-utils": patch
3+
---
4+
5+
Accept Request in authorizeNode

packages/service-utils/src/node/index.ts

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ export * from "../core/services.js";
1818
type NodeServiceConfig = CoreServiceConfig;
1919

2020
export type AuthInput = CoreAuthInput & {
21-
req: IncomingMessage;
21+
req: IncomingMessage | Request;
2222
};
2323

2424
/**
@@ -66,15 +66,21 @@ export async function authorizeNode(
6666
return await authorize(authData, serviceConfig, cacheOptions);
6767
}
6868

69+
function isNodeHeaders(
70+
headers: IncomingHttpHeaders | Headers,
71+
): headers is IncomingHttpHeaders {
72+
return typeof headers === "object" && !("get" in headers);
73+
}
74+
6975
function getHeader(
70-
headers: IncomingHttpHeaders,
76+
headers: IncomingHttpHeaders | Headers,
7177
headerName: string,
7278
): string | null {
73-
const header = headers[headerName];
74-
if (Array.isArray(header)) {
75-
return header?.[0] ?? null;
76-
}
77-
return header ?? null;
79+
return isNodeHeaders(headers)
80+
? Array.isArray(headers[headerName])
81+
? (headers[headerName]?.[0] ?? null)
82+
: (headers[headerName] ?? null)
83+
: (headers.get(headerName) ?? null);
7884
}
7985

8086
export function extractAuthorizationData(
@@ -85,7 +91,7 @@ export function extractAuthorizationData(
8591
try {
8692
requestUrl = new URL(
8793
authInput.req.url || "",
88-
`http://${authInput.req.headers.host}`,
94+
`http://${getHeader(authInput.req.headers, "host")}`,
8995
);
9096
} catch (error) {
9197
console.log("** Node URL Error **", error);
@@ -223,10 +229,10 @@ export function logHttpRequest({
223229
isAuthed,
224230
status: res.statusCode,
225231
statusMessage,
226-
sdkName: headers["x-sdk-name"] ?? undefined,
227-
sdkVersion: headers["x-sdk-version"] ?? undefined,
228-
platform: headers["x-sdk-platform"] ?? undefined,
229-
os: headers["x-sdk-os"] ?? undefined,
232+
sdkName: getHeader(headers, "x-sdk-name"),
233+
sdkVersion: getHeader(headers, "x-sdk-version"),
234+
platform: getHeader(headers, "x-sdk-platform"),
235+
os: getHeader(headers, "x-sdk-os"),
230236
latencyMs,
231237
}),
232238
);

0 commit comments

Comments
 (0)