From 8d468d17e33e812c8765cca28b11c4aa14f1d8cc Mon Sep 17 00:00:00 2001 From: Jon Chambers Date: Tue, 2 May 2023 10:23:02 -0400 Subject: [PATCH] Add a temporary counter for profile key credential types --- .../controllers/ProfileController.java | 64 +++++++++++-------- 1 file changed, 39 insertions(+), 25 deletions(-) diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/controllers/ProfileController.java b/service/src/main/java/org/whispersystems/textsecuregcm/controllers/ProfileController.java index a94ef6092..99ea4ff62 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/controllers/ProfileController.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/controllers/ProfileController.java @@ -143,6 +143,8 @@ public class ProfileController { private static final Counter VERSION_NOT_FOUND_COUNTER = Metrics.counter(name(ProfileController.class, "versionNotFound")); private static final String INVALID_ACCEPT_LANGUAGE_COUNTER_NAME = name(ProfileController.class, "invalidAcceptLanguage"); + private static final String GET_PROFILE_CREDENTIAL_COUNTER_NAME = name(ProfileController.class, "getProfileCredential"); + private static final String CREDENTIAL_TYPE_TAG_NAME = "credentialType"; public ProfileController( Clock clock, @@ -277,36 +279,48 @@ public class ProfileController { final Account targetAccount = verifyPermissionToReceiveAccountIdentityProfile(maybeRequester, accessKey, uuid); final boolean isSelf = isSelfProfileRequest(maybeRequester, uuid); - switch (credentialType) { - case PROFILE_KEY_CREDENTIAL_TYPE -> { - return buildProfileKeyCredentialProfileResponse(targetAccount, - version, - credentialRequest, - isSelf, - containerRequestContext); - } + String credentialTypeTagValue = "unrecognized"; - case PNI_CREDENTIAL_TYPE -> { - if (!isSelf) { - throw new ForbiddenException(); + try { + switch (credentialType) { + case PROFILE_KEY_CREDENTIAL_TYPE -> { + credentialTypeTagValue = PROFILE_KEY_CREDENTIAL_TYPE; + + return buildProfileKeyCredentialProfileResponse(targetAccount, + version, + credentialRequest, + isSelf, + containerRequestContext); } - return buildPniCredentialProfileResponse(targetAccount, - version, - credentialRequest, - containerRequestContext); - } + case PNI_CREDENTIAL_TYPE -> { + credentialTypeTagValue = PNI_CREDENTIAL_TYPE; - case EXPIRING_PROFILE_KEY_CREDENTIAL_TYPE -> { - return buildExpiringProfileKeyCredentialProfileResponse(targetAccount, - version, - credentialRequest, - isSelf, - Instant.now().plus(EXPIRING_PROFILE_KEY_CREDENTIAL_EXPIRATION).truncatedTo(ChronoUnit.DAYS), - containerRequestContext); - } + if (!isSelf) { + throw new ForbiddenException(); + } - default -> throw new BadRequestException(); + return buildPniCredentialProfileResponse(targetAccount, + version, + credentialRequest, + containerRequestContext); + } + + case EXPIRING_PROFILE_KEY_CREDENTIAL_TYPE -> { + credentialTypeTagValue = EXPIRING_PROFILE_KEY_CREDENTIAL_TYPE; + + return buildExpiringProfileKeyCredentialProfileResponse(targetAccount, + version, + credentialRequest, + isSelf, + Instant.now().plus(EXPIRING_PROFILE_KEY_CREDENTIAL_EXPIRATION).truncatedTo(ChronoUnit.DAYS), + containerRequestContext); + } + + default -> throw new BadRequestException(); + } + } finally { + Metrics.counter(GET_PROFILE_CREDENTIAL_COUNTER_NAME, CREDENTIAL_TYPE_TAG_NAME, credentialTypeTagValue).increment(); } }