From 4d78437fe4d6f078061c396359001fb12b2000db Mon Sep 17 00:00:00 2001 From: Jon Chambers Date: Wed, 10 Aug 2022 14:49:08 -0400 Subject: [PATCH] Add a country code dimension to the non-normalized number counter --- ...nNormalizedPhoneNumberExceptionMapper.java | 24 +++++++++++++------ 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/mappers/NonNormalizedPhoneNumberExceptionMapper.java b/service/src/main/java/org/whispersystems/textsecuregcm/mappers/NonNormalizedPhoneNumberExceptionMapper.java index 71c58eb23..9a4b26b9f 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/mappers/NonNormalizedPhoneNumberExceptionMapper.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/mappers/NonNormalizedPhoneNumberExceptionMapper.java @@ -5,23 +5,33 @@ package org.whispersystems.textsecuregcm.mappers; -import io.micrometer.core.instrument.Counter; +import static org.whispersystems.textsecuregcm.metrics.MetricsUtil.name; + +import com.google.i18n.phonenumbers.NumberParseException; +import com.google.i18n.phonenumbers.PhoneNumberUtil; import io.micrometer.core.instrument.Metrics; -import org.whispersystems.textsecuregcm.util.NonNormalizedPhoneNumberException; import javax.ws.rs.core.Response; import javax.ws.rs.core.Response.Status; import javax.ws.rs.ext.ExceptionMapper; - -import static org.whispersystems.textsecuregcm.metrics.MetricsUtil.name; +import org.whispersystems.textsecuregcm.util.NonNormalizedPhoneNumberException; public class NonNormalizedPhoneNumberExceptionMapper implements ExceptionMapper { - private static final Counter NON_NORMALIZED_NUMBER_COUNTER = - Metrics.counter(name(NonNormalizedPhoneNumberExceptionMapper.class, "nonNormalizedNumbers")); + private static final String NON_NORMALIZED_NUMBER_COUNTER_NAME = + name(NonNormalizedPhoneNumberExceptionMapper.class, "nonNormalizedNumbers"); @Override public Response toResponse(final NonNormalizedPhoneNumberException exception) { - NON_NORMALIZED_NUMBER_COUNTER.increment(); + String countryCode; + + try { + countryCode = + String.valueOf(PhoneNumberUtil.getInstance().parse(exception.getOriginalNumber(), null).getCountryCode()); + } catch (final NumberParseException ignored) { + countryCode = "unknown"; + } + + Metrics.counter(NON_NORMALIZED_NUMBER_COUNTER_NAME, "countryCode", countryCode).increment(); return Response.status(Status.BAD_REQUEST) .entity(new NonNormalizedPhoneNumberResponse(exception.getOriginalNumber(), exception.getNormalizedNumber()))