|
|
|
@ -19,6 +19,7 @@ import com.fasterxml.jackson.core.JsonProcessingException; |
|
|
|
import io.swagger.annotations.ApiParam; |
|
|
|
import lombok.RequiredArgsConstructor; |
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
import org.apache.commons.lang3.StringUtils; |
|
|
|
import org.springframework.beans.factory.annotation.Value; |
|
|
|
import org.springframework.core.io.ByteArrayResource; |
|
|
|
import org.springframework.http.CacheControl; |
|
|
|
@ -41,7 +42,7 @@ import org.springframework.web.multipart.MultipartFile; |
|
|
|
import org.thingsboard.server.common.data.ImageDescriptor; |
|
|
|
import org.thingsboard.server.common.data.ImageExportData; |
|
|
|
import org.thingsboard.server.common.data.ResourceType; |
|
|
|
import org.thingsboard.server.common.data.StringUtils; |
|
|
|
import org.thingsboard.server.common.data.TbImageDeleteResult; |
|
|
|
import org.thingsboard.server.common.data.TbResource; |
|
|
|
import org.thingsboard.server.common.data.TbResourceInfo; |
|
|
|
import org.thingsboard.server.common.data.exception.ThingsboardException; |
|
|
|
@ -52,12 +53,12 @@ import org.thingsboard.server.common.data.security.Authority; |
|
|
|
import org.thingsboard.server.dao.resource.ImageService; |
|
|
|
import org.thingsboard.server.queue.util.TbCoreComponent; |
|
|
|
import org.thingsboard.server.service.resource.ImageCacheKey; |
|
|
|
import org.thingsboard.server.common.data.TbImageDeleteResult; |
|
|
|
import org.thingsboard.server.service.resource.TbImageService; |
|
|
|
import org.thingsboard.server.service.security.model.SecurityUser; |
|
|
|
import org.thingsboard.server.service.security.permission.Operation; |
|
|
|
import org.thingsboard.server.service.security.permission.Resource; |
|
|
|
|
|
|
|
import javax.servlet.http.HttpServletRequest; |
|
|
|
import java.util.concurrent.TimeUnit; |
|
|
|
|
|
|
|
import static org.thingsboard.server.controller.ControllerConstants.PAGE_NUMBER_DESCRIPTION; |
|
|
|
@ -228,7 +229,7 @@ public class ImageController extends BaseController { |
|
|
|
private ResponseEntity<ByteArrayResource> downloadIfChanged(String type, String key, String etag, boolean preview) throws ThingsboardException, JsonProcessingException { |
|
|
|
ImageCacheKey cacheKey = new ImageCacheKey(getTenantId(type), key, preview); |
|
|
|
if (StringUtils.isNotEmpty(etag)) { |
|
|
|
etag = etag.replaceAll("\"", ""); // TODO: investigate why Spring provides extra quotes.
|
|
|
|
etag = StringUtils.remove(etag, '\"'); // etag is wrapped in double quotes due to HTTP specification
|
|
|
|
if (etag.equals(tbImageService.getETag(cacheKey))) { |
|
|
|
return ResponseEntity.status(HttpStatus.NOT_MODIFIED).build(); |
|
|
|
} |
|
|
|
|