package com.hubspot.singularity;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.common.base.Optional;
import com.hubspot.mesos.JavaUtils;
import com.wordnik.swagger.annotations.ApiModelProperty;
public class SingularityWebhook {
private final String uri;
private final WebhookType type;
private final Optional<String> user;
private final long timestamp;
private final String id;
@JsonCreator
public SingularityWebhook(@JsonProperty("uri") String uri, @JsonProperty("timestamp") Optional<Long> timestamp, @JsonProperty("user") Optional<String> user, @JsonProperty("type") WebhookType type) {
this.uri = uri;
this.timestamp = timestamp.or(System.currentTimeMillis());
this.user = user;
this.id = type.name() + "-" + JavaUtils.urlEncode(uri);
this.type = type;
}
@ApiModelProperty(required=false, value="Unique ID for webhook.")
public String getId() {
return id;
}
@ApiModelProperty("URI to POST to.")
public String getUri() {
return uri;
}
@ApiModelProperty(required=false, value="")
public long getTimestamp() {
return timestamp;
}
@ApiModelProperty(required=false, value="User that created webhook.")
public Optional<String> getUser() {
return user;
}
@ApiModelProperty("Webhook type.")
public WebhookType getType() {
return type;
}
@Override
public String toString() {
return "SingularityWebhook{" +
"uri='" + uri + '\'' +
", type=" + type +
", user=" + user +
", timestamp=" + timestamp +
", id='" + id + '\'' +
'}';
}
}