package com.airbnb.chancery; import com.fasterxml.jackson.annotation.JsonProperty; import com.yammer.dropwizard.client.JerseyClientConfiguration; import com.yammer.dropwizard.config.Configuration; import com.yammer.dropwizard.validation.ValidationMethod; import lombok.Data; import lombok.EqualsAndHashCode; import org.hibernate.validator.constraints.NotEmpty; import javax.annotation.Nullable; import javax.validation.Valid; import java.util.List; @Data @EqualsAndHashCode(callSuper=true) public class ChanceryConfig extends Configuration { /* Needed */ @JsonProperty private int handlerThreads = 16; @NotEmpty @JsonProperty private String githubOauth2Token; /* Optional */ @Nullable @JsonProperty private String githubSecret; /* S3-related */ @Nullable @JsonProperty private String awsAccessKeyID; @Nullable @JsonProperty private String awsSecretKey; /* Handlers */ @Nullable @JsonProperty private List<S3ArchiverConfig> s3Archives; @Nullable @JsonProperty private List<RefLoggerConfig> refLogs; @Valid @JsonProperty private JerseyClientConfiguration githubHttpConfig = new JerseyClientConfiguration(); @ValidationMethod(message = "missing S3 credentials") public boolean isProvidingS3Credentials() { return (s3Archives == null || (awsAccessKeyID != null && awsSecretKey != null)); } }