thumbnail-api/src/main/java/com/itdominator/api/controller/ThumbnailerApiController.java

71 lines
2.2 KiB
Java

package com.itdominator.api.controller;
import java.util.List;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import com.itdominator.api.dto.ThumbnailDto;
import com.itdominator.api.dto.ThumbnailSearchCriteria;
import com.itdominator.api.services.ThumbnailerService;
import jakarta.validation.Valid;
import jakarta.validation.constraints.Max;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.Pattern;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@RestController
@RequiredArgsConstructor
@Slf4j
@Validated
public class ThumbnailerApiController {
private final ThumbnailerService thumbnailerService;
@PreAuthorize("hashPermission('User')")
@PostMapping("/get-thumbnail/id/{id}")
public ThumbnailDto getThumbnailById(
@PathVariable
@Min(value = 0L, message = "Can't be negative number...")
@Max(value = 99999999L, message = "ID too large...") final int id
) {
return thumbnailerService.getThumbnailById(id);
}
@PreAuthorize("hashPermission('User')")
@PostMapping("/get-thumbnail/hash/{hash}")
public ThumbnailDto getThumbnailByHash(
@Pattern(regexp = "[a-zA-Z0-9]{32}*$") @PathVariable("hash") final String hash
) {
return thumbnailerService.getThumbnailByHash(hash);
}
@PreAuthorize("hashPermission('User')")
@PostMapping("/get-thumbnail")
public ThumbnailDto getThumbnailByIdOrHashQuery(
@Valid @RequestBody ThumbnailSearchCriteria criteria
) {
return thumbnailerService.getThumbnailByIdOrHashQuery(criteria);
}
@PreAuthorize("hashPermission('User') and hashPermission('Admin')")
@GetMapping("/get-all-thumbnails")
public List<ThumbnailDto> getAllThumbnails() {
return thumbnailerService.getAllThumbnails();
}
}