package com.uploadcare.api; import com.uploadcare.data.FileData; import com.uploadcare.urls.CdnPathBuilder; import java.net.URI; import java.util.Date; /** * The main Uploadcare resource, represents a user-uploaded file. */ public class File { private final Client client; private final FileData fileData; File(Client client, FileData fileData) { this.client = client; this.fileData = fileData; } public String getFileId() { return fileData.uuid; } public boolean isStored() { return fileData.datetimeStored != null; } public String getMimeType() { return fileData.mimeType; } public boolean hasOriginalFileUrl() { return fileData.originalFileUrl != null; } public URI getOriginalFileUrl() { return fileData.originalFileUrl; } public String getOriginalFilename() { return fileData.originalFilename; } public boolean isRemoved() { return fileData.datetimeRemoved != null; } public Date getRemoved() { return fileData.datetimeRemoved; } public int getSize() { return fileData.size; } public Date getUploadDate() { return fileData.datetimeUploaded; } /** * Returns the unique REST URL for this resource. * * @return REST URL */ public URI getUrl() { return fileData.url; } /** * Refreshes file data from Uploadcare. * * This does not mutate the current {@code File} instance, * but creates a new one. * * @return New file resource instance */ public File update() { return client.getFile(fileData.uuid); } /** * Deletes this file from Uploadcare. * * This does not mutate the current {@code File} instance, * but creates a new one. * * @return New file resource instance */ public File delete() { client.deleteFile(fileData.uuid); return update(); } /** * Saves this file on Uploadcare (marks it to be kept). * * This does not mutate the current {@code File} instance, * but creates a new one. * * @return New file resource instance */ public File save() { client.saveFile(fileData.uuid); return update(); } /** * Creates a CDN path builder for this file. * * @return CDN path builder * * @see com.uploadcare.urls.Urls#cdn(CdnPathBuilder) */ public CdnPathBuilder cdnPath() { return new CdnPathBuilder(this); } }