diff options
Diffstat (limited to 'src/main/java/com')
-rw-r--r-- | src/main/java/com/juick/config/WebConfig.java | 5 | ||||
-rw-r--r-- | src/main/java/com/juick/www/api/Index.java | 5 | ||||
-rw-r--r-- | src/main/java/com/juick/www/controllers/Compat.java | 12 |
3 files changed, 16 insertions, 6 deletions
diff --git a/src/main/java/com/juick/config/WebConfig.java b/src/main/java/com/juick/config/WebConfig.java index 136faea9..2040afd6 100644 --- a/src/main/java/com/juick/config/WebConfig.java +++ b/src/main/java/com/juick/config/WebConfig.java @@ -35,6 +35,7 @@ import org.springframework.format.FormatterRegistry; import org.springframework.http.CacheControl; import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.validation.beanvalidation.MethodValidationPostProcessor; import org.springframework.web.method.support.HandlerMethodArgumentResolver; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @@ -66,6 +67,10 @@ public class WebConfig implements WebMvcConfigurer { public void addArgumentResolvers(List<HandlerMethodArgumentResolver> resolvers) { resolvers.add(visitorArgumentResolver()); } + @Bean + public MethodValidationPostProcessor methodValidationPostProcessor() { + return new MethodValidationPostProcessor(); + } @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { try { diff --git a/src/main/java/com/juick/www/api/Index.java b/src/main/java/com/juick/www/api/Index.java index 921ebca4..7430c22d 100644 --- a/src/main/java/com/juick/www/api/Index.java +++ b/src/main/java/com/juick/www/api/Index.java @@ -19,6 +19,7 @@ package com.juick.www.api; import io.swagger.v3.oas.annotations.Hidden; +import jakarta.validation.ConstraintViolationException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.http.HttpStatus; @@ -56,4 +57,8 @@ public class Index { ServletUriComponentsBuilder.fromCurrentRequestUri().build().toUriString()); return ResponseEntity.badRequest().body("Invalid media type"); } + @ExceptionHandler(ConstraintViolationException.class) + public ResponseEntity<String> badRequest(final ConstraintViolationException exception) { + return ResponseEntity.badRequest().body(exception.getMessage()); + } } diff --git a/src/main/java/com/juick/www/controllers/Compat.java b/src/main/java/com/juick/www/controllers/Compat.java index 4a7390f5..edd7bc29 100644 --- a/src/main/java/com/juick/www/controllers/Compat.java +++ b/src/main/java/com/juick/www/controllers/Compat.java @@ -21,8 +21,10 @@ import com.juick.service.ActivityPubService; import com.juick.service.WebfingerService; import com.juick.util.HttpNotFoundException; import com.juick.www.api.activity.model.Context; +import jakarta.validation.constraints.NotEmpty; import org.springframework.http.MediaType; import org.springframework.stereotype.Controller; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.servlet.mvc.support.RedirectAttributes; @@ -31,6 +33,7 @@ import org.springframework.web.servlet.view.RedirectView; import javax.inject.Inject; @Controller +@Validated public class Compat { @Inject private WebfingerService webfingerService; @@ -42,12 +45,9 @@ public class Compat { return new RedirectView("/post"); } @GetMapping("/mention") - public RedirectView mention(@RequestParam String username) { + public RedirectView mention(@RequestParam @NotEmpty(message = "Username may not be empty") String username) { var uri = webfingerService.discoverAccountURI(username, MediaType.valueOf(Context.ACTIVITY_MEDIA_TYPE)); - if (!uri.toASCIIString().isEmpty()) { - var context = activityPubService.get(uri).orElseThrow(HttpNotFoundException::new); - return new RedirectView(context.getUrl()); - } - throw new HttpNotFoundException(); + var context = activityPubService.get(uri).orElseThrow(HttpNotFoundException::new); + return new RedirectView(context.getUrl()); } } |