From 6ff7106c99b1d8043c25dc310b3aba0ffa1364c1 Mon Sep 17 00:00:00 2001 From: im-adithya Date: Wed, 24 May 2023 17:54:59 +0530 Subject: [PATCH 1/4] feat: add user_agent to options --- src/OAuth2User.ts | 7 +++++-- src/client.ts | 5 +---- src/request.ts | 5 +++++ 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/OAuth2User.ts b/src/OAuth2User.ts index b5853a7..f16a8bf 100644 --- a/src/OAuth2User.ts +++ b/src/OAuth2User.ts @@ -19,6 +19,7 @@ export interface OAuth2UserOptions { callback: string; scopes: OAuth2Scopes[]; request_options?: Partial; + user_agent: string; token?: Token; } @@ -48,7 +49,7 @@ export class OAuth2User implements OAuthClient { */ async refreshAccessToken(): Promise<{ token: Token }> { const refresh_token = this.token?.refresh_token; - const { client_id, client_secret, request_options } = this.options; + const { client_id, client_secret, request_options, user_agent } = this.options; if (!client_id) { throw new Error("client_id is required"); } @@ -63,6 +64,7 @@ export class OAuth2User implements OAuthClient { grant_type: "refresh_token", refresh_token, }, + user_agent, method: "POST", headers: { ...request_options?.headers, @@ -91,7 +93,7 @@ export class OAuth2User implements OAuthClient { * Request an access token */ async requestAccessToken(code?: string): Promise<{ token: Token }> { - const { client_id, client_secret, callback, request_options } = + const { client_id, client_secret, callback, request_options, user_agent } = this.options; const code_verifier = this.code_verifier; if (!client_id) { @@ -111,6 +113,7 @@ export class OAuth2User implements OAuthClient { ...request_options, endpoint: `/oauth/token`, params, + user_agent, method: "POST", headers: { ...request_options?.headers, diff --git a/src/client.ts b/src/client.ts index 03df7ed..1c8599d 100644 --- a/src/client.ts +++ b/src/client.ts @@ -23,10 +23,7 @@ export class Client { this.auth = typeof auth === "string" ? new OAuth2Bearer(auth) : auth; this.defaultRequestOptions = { ...requestOptions, - headers: { - "User-Agent": "alby-js-api", - ...requestOptions?.headers, - }, + user_agent: requestOptions?.user_agent ?? "alby-js-api" }; } diff --git a/src/request.ts b/src/request.ts index 891fe81..47c2141 100644 --- a/src/request.ts +++ b/src/request.ts @@ -10,6 +10,7 @@ export interface RequestOptions extends Omit { auth?: AuthClient; endpoint: string; params?: Record; + user_agent?: string; request_body?: Record; method?: string; max_retries?: number; @@ -62,6 +63,7 @@ export async function request({ method, max_retries, base_url = BASE_URL, + user_agent, headers, ...options }: RequestOptions): Promise { @@ -78,6 +80,9 @@ export async function request({ ...(isPost ? { "Content-Type": "application/json; charset=utf-8" } : undefined), + ...(user_agent + ? { "User-Agent": user_agent } + : undefined), ...authHeader, ...headers, }, From a6c2629f65f713e4a7d41ad5824d55363faa10b0 Mon Sep 17 00:00:00 2001 From: im-adithya Date: Tue, 30 May 2023 15:32:18 +0530 Subject: [PATCH 2/4] fix: set additional x-user-agent header --- src/request.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/request.ts b/src/request.ts index 47c2141..8acf7da 100644 --- a/src/request.ts +++ b/src/request.ts @@ -81,7 +81,7 @@ export async function request({ ? { "Content-Type": "application/json; charset=utf-8" } : undefined), ...(user_agent - ? { "User-Agent": user_agent } + ? { "User-Agent": user_agent, "X-User-Agent": user_agent } : undefined), ...authHeader, ...headers, From 7a4695c235ac45a439113459010903f114e77ba4 Mon Sep 17 00:00:00 2001 From: im-adithya Date: Mon, 5 Jun 2023 22:24:26 +0530 Subject: [PATCH 3/4] chore: set default user agent --- src/client.ts | 2 +- src/request.ts | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/client.ts b/src/client.ts index 1c8599d..1aa9909 100644 --- a/src/client.ts +++ b/src/client.ts @@ -23,7 +23,7 @@ export class Client { this.auth = typeof auth === "string" ? new OAuth2Bearer(auth) : auth; this.defaultRequestOptions = { ...requestOptions, - user_agent: requestOptions?.user_agent ?? "alby-js-api" + user_agent: requestOptions?.user_agent }; } diff --git a/src/request.ts b/src/request.ts index 8acf7da..6bd4faa 100644 --- a/src/request.ts +++ b/src/request.ts @@ -80,9 +80,10 @@ export async function request({ ...(isPost ? { "Content-Type": "application/json; charset=utf-8" } : undefined), - ...(user_agent - ? { "User-Agent": user_agent, "X-User-Agent": user_agent } - : undefined), + ...{ + "User-Agent": user_agent ?? "alby-js-api", + "X-User-Agent": user_agent ?? "alby-js-api" + }, ...authHeader, ...headers, }, From 340e2b51aff50a981c288fc7333b271c7bd4f2ca Mon Sep 17 00:00:00 2001 From: im-adithya Date: Mon, 5 Jun 2023 22:27:10 +0530 Subject: [PATCH 4/4] fix: allow user agent to over-write headers --- src/request.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/request.ts b/src/request.ts index 6bd4faa..63baa41 100644 --- a/src/request.ts +++ b/src/request.ts @@ -80,12 +80,12 @@ export async function request({ ...(isPost ? { "Content-Type": "application/json; charset=utf-8" } : undefined), + ...authHeader, + ...headers, ...{ "User-Agent": user_agent ?? "alby-js-api", "X-User-Agent": user_agent ?? "alby-js-api" }, - ...authHeader, - ...headers, }, method, body: isPost ? JSON.stringify(request_body) : undefined,