Added url to ImageView and related.
This commit is contained in:
parent
67b5452d82
commit
3d7d5d00f1
@ -111,7 +111,7 @@ public class ImageController {
|
||||
image.getSize(),
|
||||
createSpec
|
||||
);
|
||||
return ResponseEntity.status(201).body(ImageUtil.toImageView(saved));
|
||||
return ResponseEntity.status(201).body(this.imageService.toImageView(saved));
|
||||
}
|
||||
|
||||
@PostMapping("/{username}/{filename}")
|
||||
@ -127,7 +127,7 @@ public class ImageController {
|
||||
final User owner = this.userService.getUser(username);
|
||||
final Image image = this.imageService.getByOwnerAndFilename(owner, filename, principal);
|
||||
final Image updated = this.imageService.update(image, principal, this.getImageUpdateSpec(body));
|
||||
return ResponseEntity.ok(ImageUtil.toImageView(updated));
|
||||
return ResponseEntity.ok(this.imageService.toImageView(updated));
|
||||
}
|
||||
|
||||
@DeleteMapping("/{username}/{filename}")
|
||||
|
@ -2,6 +2,7 @@ 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;
|
||||
|
||||
@ -24,4 +25,6 @@ public interface ImageService {
|
||||
|
||||
void deleteImage(Image image, User modifier) throws IOException;
|
||||
|
||||
ImageView toImageView(Image image);
|
||||
|
||||
}
|
||||
|
@ -1,42 +0,0 @@
|
||||
package app.mealsmadeeasy.api.image;
|
||||
|
||||
import app.mealsmadeeasy.api.image.view.ImageView;
|
||||
import app.mealsmadeeasy.api.user.User;
|
||||
import app.mealsmadeeasy.api.user.view.UserInfoView;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
public final class ImageUtil {
|
||||
|
||||
public static ImageView toImageView(Image image) {
|
||||
final ImageView imageView = new ImageView();
|
||||
imageView.setCreated(image.getCreated());
|
||||
imageView.setModified(image.getModified());
|
||||
imageView.setFilename(image.getUserFilename());
|
||||
imageView.setMimeType(image.getMimeType());
|
||||
imageView.setAlt(image.getAlt());
|
||||
imageView.setCaption(image.getCaption());
|
||||
imageView.setIsPublic(image.isPublic());
|
||||
|
||||
final User owner = image.getOwner();
|
||||
final UserInfoView userInfoView = new UserInfoView();
|
||||
userInfoView.setId(owner.getId());
|
||||
userInfoView.setUsername(owner.getUsername());
|
||||
imageView.setOwner(userInfoView);
|
||||
|
||||
final Set<UserInfoView> viewers = new HashSet<>();
|
||||
for (final User viewer : image.getViewers()) {
|
||||
final UserInfoView viewerView = new UserInfoView();
|
||||
viewerView.setId(viewer.getId());
|
||||
viewerView.setUsername(viewer.getUsername());
|
||||
viewers.add(viewerView);
|
||||
}
|
||||
imageView.setViewers(viewers);
|
||||
|
||||
return imageView;
|
||||
}
|
||||
|
||||
private ImageUtil() {}
|
||||
|
||||
}
|
@ -2,9 +2,11 @@ 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.s3.S3Manager;
|
||||
import app.mealsmadeeasy.api.user.User;
|
||||
import app.mealsmadeeasy.api.user.UserEntity;
|
||||
import app.mealsmadeeasy.api.user.view.UserInfoView;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.security.access.prepost.PostAuthorize;
|
||||
@ -27,15 +29,18 @@ public class S3ImageService implements ImageService {
|
||||
private final S3Manager s3Manager;
|
||||
private final S3ImageRepository imageRepository;
|
||||
private final String imageBucketName;
|
||||
private final String baseUrl;
|
||||
|
||||
public S3ImageService(
|
||||
S3Manager s3Manager,
|
||||
S3ImageRepository imageRepository,
|
||||
@Value("${app.mealsmadeeasy.api.images.bucketName}") String imageBucketName
|
||||
@Value("${app.mealsmadeeasy.api.images.bucketName}") String imageBucketName,
|
||||
@Value("${app.mealsmadeeasy.api.baseUrl}") String baseUrl
|
||||
) {
|
||||
this.s3Manager = s3Manager;
|
||||
this.imageRepository = imageRepository;
|
||||
this.imageBucketName = imageBucketName;
|
||||
this.baseUrl = baseUrl;
|
||||
}
|
||||
|
||||
private String getMimeType(String userFilename) {
|
||||
@ -179,4 +184,34 @@ public class S3ImageService implements ImageService {
|
||||
this.s3Manager.delete("images", imageEntity.getObjectName());
|
||||
}
|
||||
|
||||
@Override
|
||||
public ImageView toImageView(Image image) {
|
||||
final ImageView imageView = new ImageView();
|
||||
imageView.setUrl(this.baseUrl + "/images/" + image.getOwner().getUsername() + "/" + image.getUserFilename());
|
||||
imageView.setCreated(image.getCreated());
|
||||
imageView.setModified(image.getModified());
|
||||
imageView.setFilename(image.getUserFilename());
|
||||
imageView.setMimeType(image.getMimeType());
|
||||
imageView.setAlt(image.getAlt());
|
||||
imageView.setCaption(image.getCaption());
|
||||
imageView.setIsPublic(image.isPublic());
|
||||
|
||||
final User owner = image.getOwner();
|
||||
final UserInfoView userInfoView = new UserInfoView();
|
||||
userInfoView.setId(owner.getId());
|
||||
userInfoView.setUsername(owner.getUsername());
|
||||
imageView.setOwner(userInfoView);
|
||||
|
||||
final Set<UserInfoView> viewers = new HashSet<>();
|
||||
for (final User viewer : image.getViewers()) {
|
||||
final UserInfoView viewerView = new UserInfoView();
|
||||
viewerView.setId(viewer.getId());
|
||||
viewerView.setUsername(viewer.getUsername());
|
||||
viewers.add(viewerView);
|
||||
}
|
||||
imageView.setViewers(viewers);
|
||||
|
||||
return imageView;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -8,6 +8,7 @@ import java.util.Set;
|
||||
|
||||
public class ImageView {
|
||||
|
||||
private String url;
|
||||
private LocalDateTime created;
|
||||
private @Nullable LocalDateTime modified;
|
||||
private String filename;
|
||||
@ -18,6 +19,14 @@ public class ImageView {
|
||||
private boolean isPublic;
|
||||
private Set<UserInfoView> viewers;
|
||||
|
||||
public String getUrl() {
|
||||
return this.url;
|
||||
}
|
||||
|
||||
public void setUrl(String url) {
|
||||
this.url = url;
|
||||
}
|
||||
|
||||
public LocalDateTime getCreated() {
|
||||
return this.created;
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
package app.mealsmadeeasy.api.recipe;
|
||||
|
||||
import app.mealsmadeeasy.api.image.ImageUtil;
|
||||
import app.mealsmadeeasy.api.image.ImageService;
|
||||
import app.mealsmadeeasy.api.image.S3ImageEntity;
|
||||
import app.mealsmadeeasy.api.recipe.spec.RecipeCreateSpec;
|
||||
import app.mealsmadeeasy.api.recipe.spec.RecipeUpdateSpec;
|
||||
@ -37,9 +37,12 @@ public class RecipeServiceImpl implements RecipeService {
|
||||
}
|
||||
|
||||
private final RecipeRepository recipeRepository;
|
||||
private final ImageService imageService;
|
||||
|
||||
public RecipeServiceImpl(RecipeRepository recipeRepository) {
|
||||
|
||||
public RecipeServiceImpl(RecipeRepository recipeRepository, ImageService imageService) {
|
||||
this.recipeRepository = recipeRepository;
|
||||
this.imageService = imageService;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -110,7 +113,7 @@ public class RecipeServiceImpl implements RecipeService {
|
||||
view.setOwnerUsername(recipe.getOwner().getUsername());
|
||||
view.setStarCount(this.getStarCount(recipe));
|
||||
view.setViewerCount(this.getViewerCount(recipe.getId()));
|
||||
view.setMainImage(ImageUtil.toImageView(recipe.getMainImage()));
|
||||
view.setMainImage(this.imageService.toImageView(recipe.getMainImage()));
|
||||
return view;
|
||||
}
|
||||
|
||||
@ -129,7 +132,7 @@ public class RecipeServiceImpl implements RecipeService {
|
||||
view.setOwnerUsername(entity.getOwner().getUsername());
|
||||
view.setPublic(entity.isPublic());
|
||||
view.setStarCount(this.getStarCount(entity));
|
||||
view.setMainImage(ImageUtil.toImageView(entity.getMainImage()));
|
||||
view.setMainImage(this.imageService.toImageView(entity.getMainImage()));
|
||||
return view;
|
||||
});
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ spring.datasource.url=jdbc:mysql://localhost:55001/meals_made_easy_api
|
||||
spring.datasource.username=meals-made-easy-api-user
|
||||
spring.datasource.password=devpass
|
||||
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
|
||||
app.mealsmadeeasy.api.baseUrl=http://localhost:8080
|
||||
app.mealsmadeeasy.api.security.access-token-lifetime=60
|
||||
app.mealsmadeeasy.api.security.refresh-token-lifetime=120
|
||||
app.mealsmadeeasy.api.minio.endpoint=http://localhost:9000
|
||||
|
Loading…
Reference in New Issue
Block a user