diff --git a/src/main/java/dev/axme/sdk/AxmeClient.java b/src/main/java/dev/axme/sdk/AxmeClient.java index 38c9a44..bdd514e 100644 --- a/src/main/java/dev/axme/sdk/AxmeClient.java +++ b/src/main/java/dev/axme/sdk/AxmeClient.java @@ -17,6 +17,13 @@ import java.util.UUID; public final class AxmeClient { + + /** + * Published axme-sdk-java version. Sent in X-Axme-Client header so AXME + * platform analytics can identify SDK usage. Bump on every release. + */ + public static final String SDK_VERSION = "0.2.0"; + private final String baseUrl; private final String apiKey; private final String actorToken; @@ -864,6 +871,7 @@ Map requestJson( .header("Accept", "application/json"); builder.header("x-api-key", apiKey); + builder.header("X-Axme-Client", "axme-sdk-java/" + SDK_VERSION); String resolvedAuthorization = options.getAuthorization(); if (isBlank(resolvedAuthorization) && !isBlank(actorToken)) { resolvedAuthorization = "Bearer " + actorToken; diff --git a/src/test/java/dev/axme/sdk/AxmeClientTest.java b/src/test/java/dev/axme/sdk/AxmeClientTest.java index ee92524..a2fe81a 100644 --- a/src/test/java/dev/axme/sdk/AxmeClientTest.java +++ b/src/test/java/dev/axme/sdk/AxmeClientTest.java @@ -46,6 +46,7 @@ void registerNickSendsPayloadAndHeaders() throws Exception { assertEquals("POST", request.getMethod()); assertEquals("/v1/users/register-nick", request.getPath()); assertEquals("token", request.getHeader("x-api-key")); + assertEquals("axme-sdk-java/" + AxmeClient.SDK_VERSION, request.getHeader("X-Axme-Client")); assertEquals("register-1", request.getHeader("Idempotency-Key")); Map body = @@ -54,6 +55,14 @@ void registerNickSendsPayloadAndHeaders() throws Exception { assertTrue((Boolean) response.get("ok")); } + @Test + void clientSendsXAxmeClientHeader() throws Exception { + server.enqueue(new MockResponse().setResponseCode(200).setBody("{\"ok\":true,\"available\":true}")); + client.checkNick("@partner.user", RequestOptions.none()); + RecordedRequest request = server.takeRequest(); + assertEquals("axme-sdk-java/" + AxmeClient.SDK_VERSION, request.getHeader("X-Axme-Client")); + } + @Test void clientSendsConfiguredActorToken() throws Exception { server.enqueue(new MockResponse().setResponseCode(200).setBody("{\"ok\":true,\"available\":true}"));