diff --git a/src/client.ts b/src/client.ts index 41eba54..4c8bebb 100644 --- a/src/client.ts +++ b/src/client.ts @@ -1,7 +1,12 @@ +import { createRequire } from "node:module" import type { OpenSeaClientConfig } from "./types/index.js" +const require = createRequire(import.meta.url) +const { version } = require("../package.json") as { version: string } + const DEFAULT_BASE_URL = "https://api.opensea.io" const DEFAULT_TIMEOUT_MS = 30_000 +const USER_AGENT = `opensea-cli/${version}` export class OpenSeaClient { private apiKey: string @@ -37,6 +42,7 @@ export class OpenSeaClient { method: "GET", headers: { Accept: "application/json", + "User-Agent": USER_AGENT, "x-api-key": this.apiKey, }, signal: AbortSignal.timeout(this.timeoutMs), @@ -71,6 +77,7 @@ export class OpenSeaClient { const headers: Record = { Accept: "application/json", + "User-Agent": USER_AGENT, "x-api-key": this.apiKey, } diff --git a/test/client.test.ts b/test/client.test.ts index d068dde..5fb3912 100644 --- a/test/client.test.ts +++ b/test/client.test.ts @@ -39,10 +39,11 @@ describe("OpenSeaClient", () => { "https://api.opensea.io/api/v2/test", expect.objectContaining({ method: "GET", - headers: { + headers: expect.objectContaining({ Accept: "application/json", + "User-Agent": expect.stringMatching(/^opensea-cli\/\d+\.\d+\.\d+/), "x-api-key": "test-key", - }, + }), }), ) expect(result).toEqual(mockResponse) @@ -93,10 +94,11 @@ describe("OpenSeaClient", () => { "https://api.opensea.io/api/v2/refresh", expect.objectContaining({ method: "POST", - headers: { + headers: expect.objectContaining({ Accept: "application/json", + "User-Agent": expect.stringMatching(/^opensea-cli\/\d+\.\d+\.\d+/), "x-api-key": "test-key", - }, + }), }), ) expect(result).toEqual(mockResponse) @@ -111,11 +113,12 @@ describe("OpenSeaClient", () => { "https://api.opensea.io/api/v2/create", expect.objectContaining({ method: "POST", - headers: { + headers: expect.objectContaining({ Accept: "application/json", "Content-Type": "application/json", + "User-Agent": expect.stringMatching(/^opensea-cli\/\d+\.\d+\.\d+/), "x-api-key": "test-key", - }, + }), body: JSON.stringify({ name: "test" }), }), )