package keywhiz.api.automation.v2;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.auto.value.AutoValue;
import keywhiz.api.ApiDate;
import keywhiz.api.model.Client;
import java.util.Optional;
@AutoValue public abstract class ClientDetailResponseV2 {
ClientDetailResponseV2() {} // prevent sub-classing
public static ClientDetailResponseV2 fromClient(Client client) {
Optional<ApiDate> lastSeen = Optional.ofNullable(client.getLastSeen());
return new AutoValue_ClientDetailResponseV2(
client.getName(),
client.getDescription(),
client.getCreatedAt().toEpochSecond(),
client.getUpdatedAt().toEpochSecond(),
client.getCreatedBy(),
client.getUpdatedBy(),
lastSeen.map(ApiDate::toEpochSecond)
);
}
/**
* Static factory method used by Jackson for deserialization
*/
@SuppressWarnings("unused")
@JsonCreator public static ClientDetailResponseV2 fromParts(
@JsonProperty("name") String name,
@JsonProperty("description") String description,
@JsonProperty("createdAtSeconds") long createdAtSeconds,
@JsonProperty("updatedAtSeconds") long updatedAtSeconds,
@JsonProperty("createdBy") String createdBy,
@JsonProperty("updatedBy") String updatedBy,
@JsonProperty("lastSeenSeconds") Optional<Long> lastSeenSeconds) {
return new AutoValue_ClientDetailResponseV2(name, description, createdAtSeconds, updatedAtSeconds, createdBy, updatedBy, lastSeenSeconds);
}
@JsonProperty("name") public abstract String name();
@JsonProperty("description") public abstract String description();
@JsonProperty("createdAtSeconds") public abstract long createdAtSeconds();
@JsonProperty("updatedAtSeconds") public abstract long updatedAtSeconds();
@JsonProperty("createdBy") public abstract String createdBy();
@JsonProperty("updatedBy") public abstract String updatedBy();
@JsonProperty("lastSeenSeconds") public abstract Optional<Long> lastSeenSeconds();
}