|
1 | 1 | import { auth, extractResourceMetadataUrl, OAuthClientProvider, UnauthorizedError } from './auth.js'; |
2 | 2 | import { FetchLike } from '../shared/transport.js'; |
3 | | -import { createUserAgentProvider } from '../shared/userAgent.js'; |
| 3 | +import { createUserAgentProvider, UserAgentProvider } from '../shared/userAgent.js'; |
4 | 4 |
|
5 | 5 | /** |
6 | 6 | * Middleware function that wraps and enhances fetch functionality. |
@@ -32,12 +32,13 @@ export type Middleware = (next: FetchLike) => FetchLike; |
32 | 32 | * |
33 | 33 | * @param provider - OAuth client provider for authentication |
34 | 34 | * @param baseUrl - Base URL for OAuth server discovery (defaults to request URL domain) |
| 35 | + * @param userAgentProvider - User agent provider for the connection. |
35 | 36 | * @returns A fetch middleware function |
36 | 37 | */ |
37 | 38 | export const withOAuth = |
38 | | - (provider: OAuthClientProvider, baseUrl?: string | URL): Middleware => |
| 39 | + (provider: OAuthClientProvider, baseUrl?: string | URL, userAgentProvider?: UserAgentProvider): Middleware => |
39 | 40 | next => { |
40 | | - const userAgentProvider = createUserAgentProvider(); |
| 41 | + const uaProvider = userAgentProvider ?? createUserAgentProvider(); |
41 | 42 | return async (input, init) => { |
42 | 43 | const makeRequest = async (): Promise<Response> => { |
43 | 44 | const headers = new Headers(init?.headers); |
@@ -65,7 +66,7 @@ export const withOAuth = |
65 | 66 | serverUrl, |
66 | 67 | resourceMetadataUrl, |
67 | 68 | fetchFn: next, |
68 | | - userAgentProvider |
| 69 | + userAgentProvider: uaProvider |
69 | 70 | }); |
70 | 71 |
|
71 | 72 | if (result === 'REDIRECT') { |
|
0 commit comments