package com.hubspot.blazar.config;
import java.util.Collections;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.common.base.MoreObjects;
import com.google.common.base.Optional;
public class GitHubConfiguration {
private final Optional<String> user;
private final Optional<String> password;
private final Boolean setCommitStatus;
private final Optional<String> oauthToken;
private final List<String> organizations;
/**
* @param user The username to use when interacting with GitHub.
* @param password The password to use.
* @param setCommitStatus We don't want to post build statuses to all GitHub instances we configure.
* @param oauthToken Alternate option to having a user/password you can use a user/token.
* @param organizations A list of all the organizations that Blazar will pay attention to pushes from.
*/
@JsonCreator
public GitHubConfiguration(@JsonProperty("user") Optional<String> user,
@JsonProperty("password") Optional<String> password,
@JsonProperty("setCommitStatus") Optional<Boolean> setCommitStatus,
@JsonProperty("oauthToken") Optional<String> oauthToken,
@JsonProperty("organizations") List<String> organizations) {
this.user = user;
this.password = password;
this.setCommitStatus = setCommitStatus.or(true);
this.oauthToken = oauthToken;
this.organizations = MoreObjects.firstNonNull(organizations, Collections.<String>emptyList());
}
public Optional<String> getUser() {
return user;
}
public Optional<String> getPassword() {
return password;
}
public boolean getSetCommitStatus() {
return setCommitStatus;
}
public Optional<String> getOauthToken() {
return oauthToken;
}
public List<String> getOrganizations() {
return organizations;
}
}