Site.java
/*-
* #%L
* io.earcam.utilitarian.site.deploy.netlify
* %%
* Copyright (C) 2017 earcam
* %%
* SPDX-License-Identifier: (BSD-3-Clause OR EPL-1.0 OR Apache-2.0 OR MIT)
*
* You <b>must</b> choose to accept, in full - any individual or combination of
* the following licenses:
* <ul>
* <li><a href="https://opensource.org/licenses/BSD-3-Clause">BSD-3-Clause</a></li>
* <li><a href="https://www.eclipse.org/legal/epl-v10.html">EPL-1.0</a></li>
* <li><a href="https://www.apache.org/licenses/LICENSE-2.0">Apache-2.0</a></li>
* <li><a href="https://opensource.org/licenses/MIT">MIT</a></li>
* </ul>
* #L%
*/
package io.earcam.utilitarian.site.deploy.netlify;
import static io.earcam.unexceptional.Closing.closeAfterAccepting;
import java.io.OutputStream;
import javax.annotation.WillClose;
import javax.json.Json;
import javax.json.JsonObject;
import javax.json.JsonObjectBuilder;
import javax.json.JsonWriter;
public class Site {
private static final String FIELD_NAME = "name";
private static final String FIELD_CUSTOM_DOMAIN = "custom_domain";
private static final String FIELD_FORCE_SSL = "force_ssl";
private static final String FIELD_SSL = "ssl";
private static final String FIELD_MANAGED_DNS = "managed_dns";
private static final String FIELD_ID = "id";
// all params are optional
private String name;
private String customDomain;
private boolean forceSsl;
private boolean ssl;
private boolean managedDns;
private String id;
public void writeJson(@WillClose OutputStream output)
{
closeAfterAccepting(Json::createWriter, output, toJsonObject(), JsonWriter::write);
}
public JsonObject toJsonObject()
{
JsonObjectBuilder builder = Json.createObjectBuilder();
addNotNullable(builder, FIELD_NAME, name());
addNotNullable(builder, FIELD_ID, id());
addNotNullable(builder, FIELD_CUSTOM_DOMAIN, customDomain());
builder.add(FIELD_FORCE_SSL, forceSsl());
builder.add(FIELD_SSL, ssl());
builder.add(FIELD_MANAGED_DNS, managedDns());
return builder.build();
}
private static void addNotNullable(JsonObjectBuilder builder, String field, String value)
{
if(value != null) {
builder.add(field, value);
}
}
public static Site fromJsonObject(JsonObject json)
{
Site site = new Site();
site.setName(json.getString(FIELD_NAME, null));
site.setId(json.getString(FIELD_ID, null));
site.setCustomDomain(json.getString(FIELD_CUSTOM_DOMAIN, null));
site.setForceSsl(json.getBoolean(FIELD_FORCE_SSL, false));
site.setSsl(json.getBoolean(FIELD_SSL, false));
site.setManagedDns(json.getBoolean(FIELD_MANAGED_DNS, false));
return site;
}
public void setName(String name)
{
this.name = name;
}
public void setCustomDomain(String customDomain)
{
this.customDomain = customDomain;
}
public void setForceSsl(boolean forceSsl)
{
this.forceSsl = forceSsl;
}
public void setSsl(boolean ssl)
{
this.ssl = ssl;
}
public void setManagedDns(boolean managedDns)
{
this.managedDns = managedDns;
}
public void setId(String id)
{
this.id = id;
}
public String name()
{
return name;
}
public String customDomain()
{
return customDomain;
}
public boolean forceSsl()
{
return forceSsl;
}
public boolean ssl()
{
return ssl;
}
public boolean managedDns()
{
return managedDns;
}
public String id()
{
return id;
}
}