package app.mealsmadeeasy.api.image; import app.mealsmadeeasy.api.image.spec.ImageCreateInfoSpec; import app.mealsmadeeasy.api.image.spec.ImageUpdateInfoSpec; import app.mealsmadeeasy.api.image.view.ImageView; import app.mealsmadeeasy.api.user.User; import org.jetbrains.annotations.Nullable; import java.io.IOException; import java.io.InputStream; import java.util.List; public interface ImageService { Image create(User owner, String userFilename, InputStream inputStream, long objectSize, ImageCreateInfoSpec infoSpec) throws IOException, ImageException; Image getById(long id, @Nullable User viewer) throws ImageException; Image getByOwnerAndFilename(User owner, String filename, User viewer) throws ImageException; Image getByUsernameAndFilename(String username, String filename, User viewer) throws ImageException; InputStream getImageContent(Image image, @Nullable User viewer) throws IOException; List getImagesOwnedBy(User user); Image update(Image image, User modifier, ImageUpdateInfoSpec spec); void deleteImage(Image image, User modifier) throws IOException; ImageView toImageView(Image image, @Nullable User viewer); }