mirror of
https://github.com/signalapp/Signal-Server
synced 2026-04-21 11:38:07 +01:00
Group one-time donation methods together
This commit is contained in:
@@ -7,15 +7,29 @@ package org.whispersystems.textsecuregcm.util;
|
||||
|
||||
import static java.util.Objects.requireNonNull;
|
||||
|
||||
import com.google.common.net.HttpHeaders;
|
||||
import io.dropwizard.auth.basic.BasicCredentials;
|
||||
import io.micrometer.core.instrument.Metrics;
|
||||
import io.micrometer.core.instrument.Tag;
|
||||
import io.micrometer.core.instrument.Tags;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.Base64;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Optional;
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.ws.rs.ProcessingException;
|
||||
import javax.ws.rs.container.ContainerRequestContext;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.whispersystems.textsecuregcm.auth.ExternalServiceCredentials;
|
||||
import org.whispersystems.textsecuregcm.metrics.MetricsUtil;
|
||||
import org.whispersystems.textsecuregcm.metrics.UserAgentTagUtil;
|
||||
|
||||
public final class HeaderUtils {
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(HeaderUtils.class);
|
||||
|
||||
public static final String X_SIGNAL_AGENT = "X-Signal-Agent";
|
||||
|
||||
public static final String X_SIGNAL_KEY = "X-Signal-Key";
|
||||
@@ -26,6 +40,9 @@ public final class HeaderUtils {
|
||||
|
||||
public static final String GROUP_SEND_TOKEN = "Group-Send-Token";
|
||||
|
||||
private static final String INVALID_ACCEPT_LANGUAGE_COUNTER_NAME = MetricsUtil.name(HeaderUtils.class,
|
||||
"invalidAcceptLanguage");
|
||||
|
||||
private HeaderUtils() {
|
||||
// utility class
|
||||
}
|
||||
@@ -46,9 +63,8 @@ public final class HeaderUtils {
|
||||
}
|
||||
|
||||
/**
|
||||
* Parses a Base64-encoded value of the `Authorization` header
|
||||
* in the form of `Basic dXNlcm5hbWU6cGFzc3dvcmQ=`.
|
||||
* Note: parsing logic is copied from {@link io.dropwizard.auth.basic.BasicCredentialAuthFilter#getCredentials(String)}.
|
||||
* Parses a Base64-encoded value of the `Authorization` header in the form of `Basic dXNlcm5hbWU6cGFzc3dvcmQ=`. Note:
|
||||
* parsing logic is copied from {@link io.dropwizard.auth.basic.BasicCredentialAuthFilter#getCredentials(String)}.
|
||||
*/
|
||||
public static Optional<BasicCredentials> basicCredentialsFromAuthHeader(final String authHeader) {
|
||||
final int space = authHeader.indexOf(' ');
|
||||
@@ -78,4 +94,24 @@ public final class HeaderUtils {
|
||||
final String password = decoded.substring(i + 1);
|
||||
return Optional.of(new BasicCredentials(username, password));
|
||||
}
|
||||
|
||||
public static List<Locale> getAcceptableLanguagesForRequest(ContainerRequestContext containerRequestContext) {
|
||||
try {
|
||||
return containerRequestContext.getAcceptableLanguages();
|
||||
} catch (final ProcessingException e) {
|
||||
final String userAgent = containerRequestContext.getHeaderString(HttpHeaders.USER_AGENT);
|
||||
Metrics.counter(INVALID_ACCEPT_LANGUAGE_COUNTER_NAME, Tags.of(
|
||||
UserAgentTagUtil.getPlatformTag(userAgent),
|
||||
Tag.of("path", containerRequestContext.getUriInfo().getPath())))
|
||||
.increment();
|
||||
logger.debug("Could not get acceptable languages; Accept-Language: {}; User-Agent: {}",
|
||||
containerRequestContext.getHeaderString(HttpHeaders.ACCEPT_LANGUAGE),
|
||||
userAgent,
|
||||
e);
|
||||
|
||||
return List.of();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user