Skip to content

Commit aff49ee

Browse files
authored
feat: send X-Axme-Client header on every request (#32)
Adds X-Axme-Client: axme-sdk-java/<version> header to all outgoing HTTP requests, enabling AXME platform admin analytics to identify which SDK generated the traffic. - New SDK_VERSION public constant on AxmeClient (kept in sync with releases) - Header added in the main HttpRequest builder - Tests verify the header is set on register-nick and check-nick paths
1 parent 33a6e09 commit aff49ee

File tree

2 files changed

+17
-0
lines changed

2 files changed

+17
-0
lines changed

src/main/java/dev/axme/sdk/AxmeClient.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,13 @@
1717
import java.util.UUID;
1818

1919
public final class AxmeClient {
20+
21+
/**
22+
* Published axme-sdk-java version. Sent in X-Axme-Client header so AXME
23+
* platform analytics can identify SDK usage. Bump on every release.
24+
*/
25+
public static final String SDK_VERSION = "0.2.0";
26+
2027
private final String baseUrl;
2128
private final String apiKey;
2229
private final String actorToken;
@@ -864,6 +871,7 @@ Map<String, Object> requestJson(
864871
.header("Accept", "application/json");
865872

866873
builder.header("x-api-key", apiKey);
874+
builder.header("X-Axme-Client", "axme-sdk-java/" + SDK_VERSION);
867875
String resolvedAuthorization = options.getAuthorization();
868876
if (isBlank(resolvedAuthorization) && !isBlank(actorToken)) {
869877
resolvedAuthorization = "Bearer " + actorToken;

src/test/java/dev/axme/sdk/AxmeClientTest.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ void registerNickSendsPayloadAndHeaders() throws Exception {
4646
assertEquals("POST", request.getMethod());
4747
assertEquals("/v1/users/register-nick", request.getPath());
4848
assertEquals("token", request.getHeader("x-api-key"));
49+
assertEquals("axme-sdk-java/" + AxmeClient.SDK_VERSION, request.getHeader("X-Axme-Client"));
4950
assertEquals("register-1", request.getHeader("Idempotency-Key"));
5051

5152
Map<String, Object> body =
@@ -54,6 +55,14 @@ void registerNickSendsPayloadAndHeaders() throws Exception {
5455
assertTrue((Boolean) response.get("ok"));
5556
}
5657

58+
@Test
59+
void clientSendsXAxmeClientHeader() throws Exception {
60+
server.enqueue(new MockResponse().setResponseCode(200).setBody("{\"ok\":true,\"available\":true}"));
61+
client.checkNick("@partner.user", RequestOptions.none());
62+
RecordedRequest request = server.takeRequest();
63+
assertEquals("axme-sdk-java/" + AxmeClient.SDK_VERSION, request.getHeader("X-Axme-Client"));
64+
}
65+
5766
@Test
5867
void clientSendsConfiguredActorToken() throws Exception {
5968
server.enqueue(new MockResponse().setResponseCode(200).setBody("{\"ok\":true,\"available\":true}"));

0 commit comments

Comments
 (0)