Skip to content

Commit 0c63366

Browse files
authored
feat(User-Agent): Provide default user-agent (#187)
Let the default user-agent be "Dintero.Node.SDK/{version}"
1 parent 9672b9d commit 0c63366

File tree

4 files changed

+17
-3
lines changed

4 files changed

+17
-3
lines changed

src/client.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import createOpenApiFetchClient from "openapi-fetch";
22
import {
33
createAuthMiddleware,
4+
createDefaultHeadersMiddleware,
45
createVersionPrefixMiddleware,
56
extractAccountId,
67
} from "./middleware";
@@ -18,10 +19,11 @@ export const createClient = (options: ClientOptions) => {
1819
const accountId = extractAccountId(config.audience);
1920

2021
const authMiddleware = createAuthMiddleware(config, core);
22+
const headersMiddleware = createDefaultHeadersMiddleware();
2123
const versionPrefixMiddleware = createVersionPrefixMiddleware();
2224

23-
core.use(versionPrefixMiddleware, authMiddleware);
24-
checkout.use(versionPrefixMiddleware, authMiddleware);
25+
core.use(versionPrefixMiddleware, authMiddleware, headersMiddleware);
26+
checkout.use(versionPrefixMiddleware, authMiddleware, headersMiddleware);
2527

2628
return { checkout, core, accountId };
2729
};

src/middleware.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import type { Client, Middleware } from "openapi-fetch";
2+
import { version } from "../package.json";
23
import type { CorePaths } from "./types";
34
import type { ClientOptions } from "./types";
45

@@ -75,6 +76,17 @@ export const createAuthMiddleware = (
7576
};
7677
};
7778

79+
export const createDefaultHeadersMiddleware = (): Middleware => ({
80+
onRequest({ request }) {
81+
if (!request.headers.get("User-Agent")) {
82+
request.headers.set(
83+
"User-Agent",
84+
`Dintero.Node.SDK/${version} (+https://github.com/Dintero/Dintero.Node.SDK)`,
85+
);
86+
}
87+
},
88+
});
89+
7890
export const createVersionPrefixMiddleware = (): Middleware => ({
7991
async onRequest({ request, schemaPath }) {
8092
if (schemaPath.startsWith("/v")) {

test/client.test.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import { afterEach, beforeAll, describe, expect, test } from "@jest/globals";
21
import { http, HttpResponse } from "msw";
32
import { setupServer } from "msw/node";
43
import { createClient } from "../src/client";

tsconfig.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
"strict": true,
1010
"baseUrl": "./",
1111
"types": ["jest", "node"],
12+
"resolveJsonModule": true,
1213
"noUnusedLocals": true,
1314
"skipLibCheck": true,
1415
"noUncheckedIndexedAccess": true,

0 commit comments

Comments
 (0)