Skip to content

Commit e0fc1d2

Browse files
author
Rujun Chen
authored
Enable BI usage tracking for JCA. (Azure#21013)
1 parent 2899394 commit e0fc1d2

File tree

4 files changed

+52
-15
lines changed

4 files changed

+52
-15
lines changed

sdk/keyvault/azure-security-keyvault-jca/src/main/java/com/azure/security/keyvault/jca/LegacyRestClient.java

Lines changed: 27 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,25 @@
1313
import org.apache.http.impl.client.HttpClients;
1414
import org.apache.http.util.EntityUtils;
1515

16+
import java.io.BufferedReader;
1617
import java.io.IOException;
18+
import java.io.InputStreamReader;
1719
import java.util.Map;
20+
import java.util.Optional;
21+
import java.util.stream.Stream;
1822

1923
/**
2024
* The RestClient that uses the Apache HttpClient class.
2125
*/
2226
class LegacyRestClient implements RestClient {
27+
static final String USER_AGENT_KEY = "User-Agent";
28+
static final String DEFAULT_USER_AGENT_VALUE_PREFIX = "az-se-kv-jca/";
29+
static final String DEFAULT_VERSION = "unknown";
30+
static final String VERSION = Optional.of(LegacyRestClient.class)
31+
.map(Class::getPackage)
32+
.map(Package::getImplementationVersion)
33+
.orElse(DEFAULT_VERSION);
34+
static final String USER_AGENT_VALUE = getUserAgentPrefix() + VERSION;
2335

2436
/**
2537
* Constructor.
@@ -33,12 +45,9 @@ public String get(String url, Map<String, String> headers) {
3345
try (CloseableHttpClient client = HttpClients.createDefault()) {
3446
HttpGet httpGet = new HttpGet(url);
3547
if (headers != null) {
36-
headers.entrySet().forEach(entry -> {
37-
String key = entry.getKey();
38-
String value = entry.getValue();
39-
httpGet.addHeader(key, value);
40-
});
48+
headers.forEach(httpGet::addHeader);
4149
}
50+
httpGet.addHeader(USER_AGENT_KEY, USER_AGENT_VALUE);
4251
result = client.execute(httpGet, createResponseHandler());
4352
} catch (IOException ioe) {
4453
ioe.printStackTrace();
@@ -51,6 +60,7 @@ public String post(String url, String body, String contentType) {
5160
String result = null;
5261
try (CloseableHttpClient client = HttpClients.createDefault()) {
5362
HttpPost httpPost = new HttpPost(url);
63+
httpPost.addHeader(USER_AGENT_KEY, USER_AGENT_VALUE);
5464
httpPost.setEntity(
5565
new StringEntity(body, ContentType.create(contentType)));
5666
result = client.execute(httpPost, createResponseHandler());
@@ -60,6 +70,18 @@ public String post(String url, String body, String contentType) {
6070
return result;
6171
}
6272

73+
static String getUserAgentPrefix() {
74+
return Optional.of(LegacyRestClient.class)
75+
.map(Class::getClassLoader)
76+
.map(c -> c.getResourceAsStream("azure-security-keyvault-jca-user-agent-value-prefix.txt"))
77+
.map(InputStreamReader::new)
78+
.map(BufferedReader::new)
79+
.map(BufferedReader::lines)
80+
.orElseGet(Stream::empty)
81+
.findFirst()
82+
.orElse(DEFAULT_USER_AGENT_VALUE_PREFIX);
83+
}
84+
6385
private ResponseHandler<String> createResponseHandler() {
6486
return (HttpResponse response) -> {
6587
int status = response.getStatusLine().getStatusCode();

sdk/keyvault/azure-security-keyvault-jca/src/test/java/com/azure/security/keyvault/jca/LegacyRestClientTest.java

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,15 @@
55

66
import org.junit.jupiter.api.Test;
77

8-
import static org.junit.jupiter.api.Assertions.assertNotNull;
8+
import static com.azure.security.keyvault.jca.LegacyRestClient.DEFAULT_USER_AGENT_VALUE_PREFIX;
9+
import static com.azure.security.keyvault.jca.LegacyRestClient.DEFAULT_VERSION;
10+
import static org.junit.jupiter.api.Assertions.assertEquals;
911

10-
/**
11-
* The JUnit tests for the LegacyRestClient class.
12-
*/
1312
public class LegacyRestClientTest {
1413

15-
/**
16-
* Test constructor.
17-
*/
1814
@Test
19-
public void testConstructor() {
20-
LegacyRestClient client = new LegacyRestClient();
21-
assertNotNull(client);
15+
public void getUserAgentPrefixTest() {
16+
assertEquals(DEFAULT_USER_AGENT_VALUE_PREFIX, LegacyRestClient.getUserAgentPrefix());
17+
assertEquals(DEFAULT_USER_AGENT_VALUE_PREFIX + DEFAULT_VERSION, LegacyRestClient.USER_AGENT_VALUE);
2218
}
2319
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
az-sp-kv-ct/
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
// Copyright (c) Microsoft Corporation. All rights reserved.
2+
// Licensed under the MIT License.
3+
4+
package com.azure.security.keyvault.jca;
5+
6+
import org.junit.jupiter.api.Test;
7+
8+
import static com.azure.security.keyvault.jca.LegacyRestClient.DEFAULT_VERSION;
9+
import static org.junit.jupiter.api.Assertions.assertEquals;
10+
11+
public class LegacyRestClientTest {
12+
13+
@Test
14+
public void getUserAgentPrefixTest() {
15+
assertEquals("az-sp-kv-ct/", LegacyRestClient.getUserAgentPrefix());
16+
assertEquals("az-sp-kv-ct/" + DEFAULT_VERSION, LegacyRestClient.USER_AGENT_VALUE);
17+
}
18+
}

0 commit comments

Comments
 (0)