From 820b0b930d7d144c90e04721518ece732cb7e978 Mon Sep 17 00:00:00 2001 From: Alexandre Philibeaux Date: Fri, 11 Apr 2025 23:27:23 +0200 Subject: [PATCH] feat(client): add pl-waw-3 zone, add headers, add sessionheader --- packages/client/src/index.ts | 1 + packages/client/src/scw/auth.ts | 22 +++++++++++++++++++--- packages/client/src/scw/constants.ts | 4 +++- packages/client/src/scw/locality.ts | 1 + 4 files changed, 24 insertions(+), 4 deletions(-) diff --git a/packages/client/src/index.ts b/packages/client/src/index.ts index f2642a466..86dd40b91 100644 --- a/packages/client/src/index.ts +++ b/packages/client/src/index.ts @@ -11,6 +11,7 @@ export type { export { enableConsoleLogger, setLogger } from './internal/logger' export type { Logger } from './internal/logger/logger' export { createClient, createAdvancedClient } from './scw/client' +export { AUTH_HEADER_KEY, SESSION_HEADER_KEY } from './scw/constants' export type { Client } from './scw/client' export type { Profile } from './scw/client-ini-profile' export type { Settings } from './scw/client-settings' diff --git a/packages/client/src/scw/auth.ts b/packages/client/src/scw/auth.ts index da3824ee8..75ff6b41f 100644 --- a/packages/client/src/scw/auth.ts +++ b/packages/client/src/scw/auth.ts @@ -5,14 +5,30 @@ import { import type { RequestInterceptor } from '../internal/interceptors/types' import { assertValidAuthenticationSecrets } from './client-ini-profile' import type { AuthenticationSecrets } from './client-ini-profile' - -const SESSION_HEADER_KEY = 'x-session-token' -const AUTH_HEADER_KEY = 'x-auth-token' +import { AUTH_HEADER_KEY, SESSION_HEADER_KEY } from './constants' interface TokenAccessor { (): Promise } +interface AddSessionHeader { + request: Request + getAsyncToken: () => Promise +} +/** + * Add an JWT Session Header to a request through an interceptor. + * + * @param request - The request to modify + * @param getJwt - The session value + * @returns The Request interceptor + * + */ +export const addSessionHeader = async ({ + request, + getAsyncToken, +}: AddSessionHeader) => + addAsyncHeaderInterceptor(SESSION_HEADER_KEY, getAsyncToken)({ request }) + /** * Authenticates with a session token. * diff --git a/packages/client/src/scw/constants.ts b/packages/client/src/scw/constants.ts index 8e1d9f4ab..93e2c276b 100644 --- a/packages/client/src/scw/constants.ts +++ b/packages/client/src/scw/constants.ts @@ -1,5 +1,7 @@ import pkg from '../../package.json' export const { version } = pkg - export const userAgent = `scaleway-sdk-js/${version}` + +export const SESSION_HEADER_KEY = 'x-session-token' +export const AUTH_HEADER_KEY = 'x-auth-token' diff --git a/packages/client/src/scw/locality.ts b/packages/client/src/scw/locality.ts index cc611bc7a..a9920b6be 100644 --- a/packages/client/src/scw/locality.ts +++ b/packages/client/src/scw/locality.ts @@ -10,5 +10,6 @@ export type Zone = | 'nl-ams-3' | 'pl-waw-1' | 'pl-waw-2' + | 'pl-waw-3' | (string & {}) /* eslint-enable @typescript-eslint/ban-types */