// Copyright (c) 2015, Christopher "BlayTheNinth" Baker
package net.blay09.mods.eirairc.client.screenshot;
import com.google.gson.JsonObject;
import net.blay09.mods.eirairc.api.upload.UploadedFile;
import java.io.File;
public class Screenshot {
private static final String METADATA_ORIGINALNAME = "originalName";
private static final String METADATA_NAME = "name";
private static final String METADATA_UPLOADURL = "uploadURL";
private static final String METADATA_DIRECTURL = "directURL";
private static final String METADATA_DELETEURL = "deleteURL";
private static final String METADATA_FAVORITE = "favorite";
private static final String METADATA_TIMESTAP = "timestamp";
private final File file;
private final JsonObject metadata;
public Screenshot(File file, JsonObject metadata) {
this.file = file;
this.metadata = metadata != null ? metadata : new JsonObject();
if(metadata == null) {
this.metadata.addProperty(METADATA_ORIGINALNAME, file.getName().substring(0, file.getName().length() - 4));
this.metadata.addProperty(METADATA_TIMESTAP, file.lastModified());
}
}
public String getName() {
return metadata.has(METADATA_NAME) ? metadata.get(METADATA_NAME).getAsString() : "";
}
public void setName(String name) {
metadata.addProperty(METADATA_NAME, name);
}
public boolean isUploaded() {
return metadata.has(METADATA_UPLOADURL);
}
public File getFile() {
return file;
}
public JsonObject getMetadata() {
return metadata;
}
public String getDirectURL() {
return metadata.has(METADATA_DIRECTURL) ? metadata.get(METADATA_DIRECTURL).getAsString() : null;
}
public String getUploadURL() {
return metadata.get(METADATA_UPLOADURL).getAsString();
}
public String getOriginalName() {
return metadata.get(METADATA_ORIGINALNAME).getAsString();
}
public void setUploadedFile(UploadedFile uploadedFile) {
metadata.addProperty(METADATA_UPLOADURL, uploadedFile.url);
if(uploadedFile.directURL != null) {
metadata.addProperty(METADATA_DIRECTURL, uploadedFile.directURL);
}
if(uploadedFile.deleteURL != null) {
metadata.addProperty(METADATA_DELETEURL, uploadedFile.deleteURL);
}
}
public boolean isFavorited() {
return (metadata.has(METADATA_FAVORITE) && metadata.get(METADATA_FAVORITE).getAsBoolean());
}
public void setFavorited(boolean favorited) {
metadata.addProperty(METADATA_FAVORITE, favorited);
}
public boolean hasDeleteURL() {
return metadata.has(METADATA_DELETEURL);
}
public String getDeleteURL() {
return metadata.get(METADATA_DELETEURL).getAsString();
}
public long getTimeStamp() {
if(!metadata.has(METADATA_TIMESTAP)) {
return System.currentTimeMillis();
}
return metadata.get(METADATA_TIMESTAP).getAsLong();
}
}