package de.ph87.tools.user.uuid; import jakarta.servlet.http.HttpServletRequest; import lombok.NonNull; import lombok.SneakyThrows; import org.springframework.core.MethodParameter; import org.springframework.stereotype.Component; import org.springframework.web.bind.support.WebDataBinderFactory; import org.springframework.web.context.request.NativeWebRequest; import org.springframework.web.method.support.HandlerMethodArgumentResolver; import org.springframework.web.method.support.ModelAndViewContainer; import java.io.IOException; @Component public class UserPublicUuidArgumentResolver implements HandlerMethodArgumentResolver { @Override public boolean supportsParameter(@NonNull final MethodParameter parameter) { return parameter.getParameterType() == UserPublicUuid.class; } @Override @SneakyThrows(IOException.class) public UserPublicUuid resolveArgument(@NonNull final MethodParameter parameter, final ModelAndViewContainer mavContainer, @NonNull final NativeWebRequest webRequest, final WebDataBinderFactory binderFactory) { if (!(webRequest.getNativeRequest() instanceof final HttpServletRequest request)) { throw new RuntimeException(); } final String uuid = new String(request.getInputStream().readAllBytes()); return new UserPublicUuid(uuid); } }