All Downloads are FREE. Search and download functionalities are using the official Maven repository.

pl.allegro.tech.hermes.api.OAuthProvider Maven / Gradle / Ivy

There is a newer version: 2.6.22
Show newest version
package pl.allegro.tech.hermes.api;

import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import jakarta.validation.constraints.Max;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Pattern;

import java.util.Objects;

import static pl.allegro.tech.hermes.api.constraints.Names.ALLOWED_NAME_REGEX;

public class OAuthProvider implements Anonymizable {

    private static final String ANONYMIZED_CLIENT_SECRET = "******";
    private static final int DEFAULT_SOCKET_TIMEOUT = 0;

    @NotEmpty
    @Pattern(regexp = ALLOWED_NAME_REGEX)
    private final String name;

    @NotEmpty
    private final String tokenEndpoint;

    @NotEmpty
    private final String clientId;

    @NotEmpty
    private final String clientSecret;

    @Min(0)
    @Max(3600_000)
    @NotNull
    private final Integer tokenRequestInitialDelay;

    @Min(0)
    @Max(3600_000)
    @NotNull
    private final Integer tokenRequestMaxDelay;

    @Min(100)
    @Max(60_000)
    @NotNull
    private Integer requestTimeout;

    @Min(0)
    @Max(60_000)
    @NotNull
    private Integer socketTimeout;

    @JsonCreator
    public OAuthProvider(@JsonProperty("name") String name,
                         @JsonProperty("tokenEndpoint") String tokenEndpoint,
                         @JsonProperty("clientId") String clientId,
                         @JsonProperty("clientSecret") String clientSecret,
                         @JsonProperty("tokenRequestInitialDelay") Integer tokenRequestInitialDelay,
                         @JsonProperty("tokenRequestMaxDelay") Integer tokenRequestMaxDelay,
                         @JsonProperty("requestTimeout") Integer requestTimeout,
                         @JsonProperty("socketTimeout") Integer socketTimeout) {
        this.name = name;
        this.tokenEndpoint = tokenEndpoint;
        this.clientId = clientId;
        this.clientSecret = clientSecret;
        this.tokenRequestInitialDelay = tokenRequestInitialDelay;
        this.tokenRequestMaxDelay = tokenRequestMaxDelay;
        this.requestTimeout = requestTimeout;
        this.socketTimeout = socketTimeout != null ? socketTimeout : DEFAULT_SOCKET_TIMEOUT;
    }

    public String getName() {
        return name;
    }

    public String getTokenEndpoint() {
        return tokenEndpoint;
    }

    public String getClientId() {
        return clientId;
    }

    public String getClientSecret() {
        return clientSecret;
    }

    public Integer getTokenRequestInitialDelay() {
        return tokenRequestInitialDelay;
    }

    public Integer getTokenRequestMaxDelay() {
        return tokenRequestMaxDelay;
    }

    public Integer getRequestTimeout() {
        return requestTimeout;
    }

    public Integer getSocketTimeout() {
        return socketTimeout;
    }

    public OAuthProvider anonymize() {
        return new OAuthProvider(name, tokenEndpoint, clientId, ANONYMIZED_CLIENT_SECRET,
                tokenRequestInitialDelay, tokenRequestMaxDelay, requestTimeout, socketTimeout);
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) {
            return true;
        }
        if (o == null || getClass() != o.getClass()) {
            return false;
        }
        OAuthProvider that = (OAuthProvider) o;
        return Objects.equals(name, that.name);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name);
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy