Skip to content

Commit b4b2fc1

Browse files
authored
chore: Add X-Goog-Api-Client metric header to outgoing requests (#1039)
1 parent 0dff988 commit b4b2fc1

12 files changed

+37
-0
lines changed

Diff for: src/main/java/com/google/firebase/internal/ErrorHandlingHttpClient.java

+1
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ public void sendAndParse(HttpRequestInfo requestInfo, Object destination) throws
8989
}
9090

9191
public IncomingHttpResponse send(HttpRequestInfo requestInfo) throws T {
92+
requestInfo.addHeader("X-Goog-Api-Client", SdkUtils.getMetricsHeader());
9293
HttpRequest request = createHttpRequest(requestInfo);
9394

9495
HttpResponse response = null;

Diff for: src/main/java/com/google/firebase/internal/SdkUtils.java

+8
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,14 @@ public static String getVersion() {
3939
return SDK_VERSION;
4040
}
4141

42+
public static String getJavaVersion() {
43+
return System.getProperty("java.version");
44+
}
45+
46+
public static String getMetricsHeader() {
47+
return String.format("gl-java/%s fire-admin/%s", getJavaVersion(), getVersion());
48+
}
49+
4250
private static String loadSdkVersion() {
4351
try (InputStream in = SdkUtils.class.getClassLoader()
4452
.getResourceAsStream(ADMIN_SDK_PROPERTIES)) {

Diff for: src/test/java/com/google/firebase/auth/FirebaseUserManagerTest.java

+2
Original file line numberDiff line numberDiff line change
@@ -3026,6 +3026,8 @@ private static void checkRequestHeaders(TestResponseInterceptor interceptor) {
30263026

30273027
String clientVersion = "Java/Admin/" + SdkUtils.getVersion();
30283028
assertEquals(clientVersion, headers.getFirstHeaderStringValue("X-Client-Version"));
3029+
assertEquals(SdkUtils.getMetricsHeader(), headers.get("X-Goog-Api-Client"));
3030+
30293031
}
30303032

30313033
private static void checkUrl(TestResponseInterceptor interceptor, String method, String url) {

Diff for: src/test/java/com/google/firebase/auth/internal/CryptoSignersTest.java

+5
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
import com.google.firebase.auth.FirebaseAuthException;
4040
import com.google.firebase.auth.MockGoogleCredentials;
4141
import com.google.firebase.internal.ApiClientUtils;
42+
import com.google.firebase.internal.SdkUtils;
4243
import com.google.firebase.testing.MultiRequestMockHttpTransport;
4344
import com.google.firebase.testing.ServiceAccount;
4445
import com.google.firebase.testing.TestResponseInterceptor;
@@ -87,6 +88,8 @@ public void testIAMCryptoSigner() throws Exception {
8788
final String url = "https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/"
8889
+ "[email protected]:signBlob";
8990
assertEquals(url, interceptor.getResponse().getRequest().getUrl().toString());
91+
HttpRequest request = interceptor.getResponse().getRequest();
92+
assertEquals(SdkUtils.getMetricsHeader(), request.getHeaders().get("X-Goog-Api-Client"));
9093
}
9194

9295
@Test
@@ -173,6 +176,7 @@ public void testMetadataService() throws Exception {
173176
HttpRequest request = interceptor.getResponse().getRequest();
174177
assertEquals(url, request.getUrl().toString());
175178
assertEquals("Bearer test-token", request.getHeaders().getAuthorization());
179+
assertEquals(SdkUtils.getMetricsHeader(), request.getHeaders().get("X-Goog-Api-Client"));
176180
}
177181

178182
@Test
@@ -203,6 +207,7 @@ public void testExplicitServiceAccountEmail() throws Exception {
203207
HttpRequest request = interceptor.getResponse().getRequest();
204208
assertEquals(url, request.getUrl().toString());
205209
assertEquals("Bearer test-token", request.getHeaders().getAuthorization());
210+
assertEquals(SdkUtils.getMetricsHeader(), request.getHeaders().get("X-Goog-Api-Client"));
206211
}
207212

208213
@Test

Diff for: src/test/java/com/google/firebase/auth/multitenancy/FirebaseTenantClientTest.java

+1
Original file line numberDiff line numberDiff line change
@@ -353,6 +353,7 @@ private static void checkRequestHeaders(TestResponseInterceptor interceptor) {
353353

354354
String clientVersion = "Java/Admin/" + SdkUtils.getVersion();
355355
assertEquals(clientVersion, headers.getFirstHeaderStringValue("X-Client-Version"));
356+
assertEquals(SdkUtils.getMetricsHeader(), headers.get("X-Goog-Api-Client"));
356357
}
357358

358359
private static void checkUrl(TestResponseInterceptor interceptor, String method, String url) {

Diff for: src/test/java/com/google/firebase/auth/multitenancy/TenantAwareFirebaseAuthTest.java

+9
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
import com.google.firebase.auth.MockTokenVerifier;
3939
import com.google.firebase.auth.SessionCookieOptions;
4040
import com.google.firebase.internal.ApiClientUtils;
41+
import com.google.firebase.internal.SdkUtils;
4142
import com.google.firebase.testing.TestResponseInterceptor;
4243
import com.google.firebase.testing.TestUtils;
4344
import java.io.ByteArrayOutputStream;
@@ -85,6 +86,7 @@ public void testCreateSessionCookieAsync() throws Exception {
8586
assertEquals("testToken", parsed.get("idToken"));
8687
assertEquals(new BigDecimal(3600), parsed.get("validDuration"));
8788
checkUrl(interceptor, AUTH_BASE_URL + ":createSessionCookie");
89+
checkHeaders(interceptor);
8890
}
8991

9092
@Test
@@ -121,6 +123,7 @@ public void testCreateSessionCookie() throws Exception {
121123
assertEquals("testToken", parsed.get("idToken"));
122124
assertEquals(new BigDecimal(3600), parsed.get("validDuration"));
123125
checkUrl(interceptor, AUTH_BASE_URL + ":createSessionCookie");
126+
checkHeaders(interceptor);
124127
}
125128

126129
@Test
@@ -212,6 +215,7 @@ public void testVerifySessionCookieWithCheckRevoked() throws FirebaseAuthExcepti
212215
assertEquals("uid", token.getUid());
213216
assertEquals("cookie", tokenVerifier.getLastTokenString());
214217
checkUrl(interceptor, AUTH_BASE_URL + "/accounts:lookup");
218+
checkHeaders(interceptor);
215219
}
216220

217221
@Test
@@ -290,4 +294,9 @@ private static void checkUrl(TestResponseInterceptor interceptor, String url) {
290294
assertEquals(HttpMethods.POST, request.getRequestMethod());
291295
assertEquals(url, request.getUrl().getRawPath());
292296
}
297+
298+
private static void checkHeaders(TestResponseInterceptor interceptor) {
299+
HttpRequest request = interceptor.getResponse().getRequest();
300+
assertEquals(SdkUtils.getMetricsHeader(), request.getHeaders().get("X-Goog-Api-Client"));
301+
}
293302
}

Diff for: src/test/java/com/google/firebase/iid/FirebaseInstanceIdTest.java

+2
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
import com.google.firebase.OutgoingHttpRequest;
3939
import com.google.firebase.TestOnlyImplFirebaseTrampolines;
4040
import com.google.firebase.auth.MockGoogleCredentials;
41+
import com.google.firebase.internal.SdkUtils;
4142
import com.google.firebase.testing.GenericFunction;
4243
import com.google.firebase.testing.TestResponseInterceptor;
4344
import com.google.firebase.testing.TestUtils;
@@ -174,6 +175,7 @@ public Void call(Object... args) throws Exception {
174175
assertEquals(HttpMethods.DELETE, request.getRequestMethod());
175176
assertEquals(TEST_URL, request.getUrl().toString());
176177
assertEquals("Bearer test-token", request.getHeaders().getAuthorization());
178+
assertEquals(SdkUtils.getMetricsHeader(), request.getHeaders().get("X-Goog-Api-Client"));
177179
}
178180
}
179181

Diff for: src/test/java/com/google/firebase/internal/ErrorHandlingHttpClientTest.java

+1
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,7 @@ public void testSuccessfulRequestWithHeadersAndBody() throws FirebaseException,
127127
assertEquals("v1", last.getHeaders().get("h1"));
128128
assertEquals("v2", last.getHeaders().get("h2"));
129129
assertEquals("v3", last.getHeaders().get("h3"));
130+
assertEquals(SdkUtils.getMetricsHeader(), last.getHeaders().get("x-goog-api-client"));
130131

131132
ByteArrayOutputStream out = new ByteArrayOutputStream();
132133
last.getContent().writeTo(out);

Diff for: src/test/java/com/google/firebase/messaging/FirebaseMessagingClientImplTest.java

+1
Original file line numberDiff line numberDiff line change
@@ -389,6 +389,7 @@ private void checkRequestHeader(HttpRequest request) {
389389
HttpHeaders headers = request.getHeaders();
390390
assertEquals("2", headers.get("X-GOOG-API-FORMAT-VERSION"));
391391
assertEquals("fire-admin-java/" + SdkUtils.getVersion(), headers.get("X-Firebase-Client"));
392+
assertEquals(SdkUtils.getMetricsHeader(), headers.get("X-Goog-Api-Client"));
392393
}
393394

394395
private void checkRequest(

Diff for: src/test/java/com/google/firebase/messaging/InstanceIdClientImplTest.java

+3
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
import com.google.firebase.TestOnlyImplFirebaseTrampolines;
4242
import com.google.firebase.auth.MockGoogleCredentials;
4343
import com.google.firebase.internal.ApiClientUtils;
44+
import com.google.firebase.internal.SdkUtils;
4445
import com.google.firebase.testing.TestResponseInterceptor;
4546
import com.google.firebase.testing.TestUtils;
4647
import java.io.ByteArrayOutputStream;
@@ -447,6 +448,8 @@ private void checkTopicManagementRequestHeader(
447448
HttpRequest request, String expectedUrl) {
448449
assertEquals("POST", request.getRequestMethod());
449450
assertEquals(expectedUrl, request.getUrl().toString());
451+
assertEquals(SdkUtils.getMetricsHeader(), request.getHeaders().get("X-Goog-Api-Client"));
452+
450453
}
451454

452455
private void checkExceptionFromHttpResponse(

Diff for: src/test/java/com/google/firebase/projectmanagement/FirebaseProjectManagementServiceImplTest.java

+1
Original file line numberDiff line numberDiff line change
@@ -1124,6 +1124,7 @@ private void checkRequestHeader(int index, String expectedUrl, HttpMethod httpMe
11241124
assertEquals(expectedUrl, request.getUrl().toString());
11251125
assertEquals("Bearer test-token", request.getHeaders().getAuthorization());
11261126
assertEquals(CLIENT_VERSION, request.getHeaders().get("X-Client-Version"));
1127+
assertEquals(SdkUtils.getMetricsHeader(), request.getHeaders().get("X-Goog-Api-Client"));
11271128
}
11281129

11291130
private void checkRequestPayload(Map<String, String> expected) throws IOException {

Diff for: src/test/java/com/google/firebase/remoteconfig/FirebaseRemoteConfigClientImplTest.java

+3
Original file line numberDiff line numberDiff line change
@@ -1185,6 +1185,7 @@ private void checkGetRequestHeader(HttpRequest request, String urlSuffix) {
11851185
assertEquals(TEST_REMOTE_CONFIG_URL + urlSuffix, request.getUrl().toString());
11861186
HttpHeaders headers = request.getHeaders();
11871187
assertEquals("fire-admin-java/" + SdkUtils.getVersion(), headers.get("X-Firebase-Client"));
1188+
assertEquals(SdkUtils.getMetricsHeader(), request.getHeaders().get("X-Goog-Api-Client"));
11881189
assertEquals("gzip", headers.getAcceptEncoding());
11891190
}
11901191

@@ -1197,6 +1198,7 @@ private void checkPutRequestHeader(HttpRequest request, String urlSuffix, String
11971198
assertEquals(TEST_REMOTE_CONFIG_URL + urlSuffix, request.getUrl().toString());
11981199
HttpHeaders headers = request.getHeaders();
11991200
assertEquals("fire-admin-java/" + SdkUtils.getVersion(), headers.get("X-Firebase-Client"));
1201+
assertEquals(SdkUtils.getMetricsHeader(), request.getHeaders().get("X-Goog-Api-Client"));
12001202
assertEquals("gzip", headers.getAcceptEncoding());
12011203
assertEquals(ifMatch, headers.getIfMatch());
12021204
}
@@ -1206,6 +1208,7 @@ private void checkPostRequestHeader(HttpRequest request, String urlSuffix) {
12061208
assertEquals(TEST_REMOTE_CONFIG_URL + urlSuffix, request.getUrl().toString());
12071209
HttpHeaders headers = request.getHeaders();
12081210
assertEquals("fire-admin-java/" + SdkUtils.getVersion(), headers.get("X-Firebase-Client"));
1211+
assertEquals(SdkUtils.getMetricsHeader(), request.getHeaders().get("X-Goog-Api-Client"));
12091212
assertEquals("gzip", headers.getAcceptEncoding());
12101213
}
12111214

0 commit comments

Comments
 (0)