package com.juick.service; import com.juick.Attachment; import com.juick.Message; import com.juick.Photo; import com.juick.server.util.ImageUtils; import org.springframework.util.StringUtils; import java.io.File; import java.io.IOException; import java.nio.file.Paths; public class ImagesServiceImpl implements ImagesService { private ImageUtils imageUtils; private String imgDir; public ImagesServiceImpl(String imgDir, String tmpDir) { this.imgDir = imgDir; imageUtils = new ImageUtils(imgDir, tmpDir); } @Override public void setAttachmentMetadata(String baseUrl, Message msg) throws Exception { if (!StringUtils.isEmpty(msg.getAttachmentType())) { Photo photo = new Photo(); if (msg.getRid()> 0) { photo.setSmall(String.format("%sphotos-512/%d-%d.%s", baseUrl, msg.getMid(), msg.getRid(), msg.getAttachmentType())); photo.setMedium(String.format("%sphotos-1024/%d-%d.%s", baseUrl, msg.getMid(), msg.getRid(), msg.getAttachmentType())); photo.setThumbnail(String.format("%sps/%d-%d.%s", baseUrl, msg.getMid(), msg.getRid(), msg.getAttachmentType())); } else { photo.setSmall(String.format("%sphotos-512/%d.%s", baseUrl, msg.getMid(), msg.getAttachmentType())); photo.setMedium(String.format("%sphotos-1024/%d.%s", baseUrl, msg.getMid(), msg.getAttachmentType())); photo.setThumbnail(String.format("%sps/%d.%s", baseUrl, msg.getMid(), msg.getAttachmentType())); } msg.setPhoto(photo); String imageName = String.format("%s.%s", msg.getMid(), msg.getAttachmentType()); if (msg.getRid() > 0) { imageName = String.format("%s-%s.%s", msg.getMid(), msg.getRid(), msg.getAttachmentType()); } File fullImage = Paths.get(imgDir, "p", imageName).toFile(); File mediumImage = Paths.get(imgDir, "photos-1024", imageName).toFile(); File smallImage = Paths.get(imgDir, "photos-512", imageName).toFile(); File thumbnailImage = Paths.get(imgDir, "ps", imageName).toFile(); StringBuilder builder = new StringBuilder(); builder.append(baseUrl); builder.append(msg.getAttachmentType().equals("mp4") ? "video" : "p"); builder.append("/").append(msg.getMid()); if (msg.getRid() > 0) { builder.append("-").append(msg.getRid()); } builder.append(".").append(msg.getAttachmentType()); String originalUrl = builder.toString(); Attachment original = imageUtils.getAttachment(fullImage); original.setUrl(originalUrl); Attachment medium = imageUtils.getAttachment(mediumImage); medium.setUrl(photo.getMedium()); original.setMedium(medium); Attachment small = imageUtils.getAttachment(smallImage); small.setUrl(photo.getSmall()); original.setSmall(small); Attachment thumb = imageUtils.getAttachment(thumbnailImage); thumb.setUrl(photo.getMedium()); original.setThumbnail(thumb); msg.setAttachment(original); } } @Override public void saveImageWithPreviews(String tempFilename, String outputFilename) throws IOException { imageUtils.saveImageWithPreviews(tempFilename, outputFilename); } @Override public void saveAvatar(String tempFilename, int uid) throws IOException { imageUtils.saveAvatar(tempFilename, uid); } }