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