| margaretha | 398f472 | 2019-01-09 19:07:20 +0100 | [diff] [blame] | 1 | package de.ids_mannheim.korap.web.filter; |
| margaretha | ee0cbfe | 2018-08-28 17:47:14 +0200 | [diff] [blame] | 2 | |
| 3 | import java.util.List; |
| 4 | |
| abcpro1 | 2cb86c6 | 2022-11-07 18:46:36 +0000 | [diff] [blame] | 5 | import javax.annotation.Priority; |
| margaretha | ee0cbfe | 2018-08-28 17:47:14 +0200 | [diff] [blame] | 6 | |
| 7 | import org.springframework.beans.factory.annotation.Autowired; |
| 8 | import org.springframework.stereotype.Component; |
| 9 | |
| margaretha | ee0cbfe | 2018-08-28 17:47:14 +0200 | [diff] [blame] | 10 | import de.ids_mannheim.korap.config.KustvaktConfiguration; |
| margaretha | 96c309d | 2023-08-16 12:24:12 +0200 | [diff] [blame^] | 11 | import jakarta.ws.rs.NotFoundException; |
| 12 | import jakarta.ws.rs.container.ContainerRequestContext; |
| 13 | import jakarta.ws.rs.container.ContainerRequestFilter; |
| 14 | import jakarta.ws.rs.core.PathSegment; |
| margaretha | ee0cbfe | 2018-08-28 17:47:14 +0200 | [diff] [blame] | 15 | |
| margaretha | 7926adc | 2018-08-30 13:45:33 +0200 | [diff] [blame] | 16 | /** |
| 17 | * Checks API version in URL path. |
| margaretha | ee0cbfe | 2018-08-28 17:47:14 +0200 | [diff] [blame] | 18 | * |
| 19 | * @author margaretha |
| 20 | * |
| 21 | */ |
| 22 | @Component |
| abcpro1 | 2cb86c6 | 2022-11-07 18:46:36 +0000 | [diff] [blame] | 23 | @Priority(Integer.MIN_VALUE) |
| margaretha | 7926adc | 2018-08-30 13:45:33 +0200 | [diff] [blame] | 24 | public class APIVersionFilter |
| abcpro1 | 136ff59 | 2022-11-07 18:25:03 +0000 | [diff] [blame] | 25 | implements ContainerRequestFilter { |
| margaretha | ee0cbfe | 2018-08-28 17:47:14 +0200 | [diff] [blame] | 26 | |
| 27 | @Autowired |
| 28 | private KustvaktConfiguration config; |
| margaretha | ee0cbfe | 2018-08-28 17:47:14 +0200 | [diff] [blame] | 29 | |
| abcpro1 | 136ff59 | 2022-11-07 18:25:03 +0000 | [diff] [blame] | 30 | public void filter (ContainerRequestContext request) { |
| abcpro1 | 9668724 | 2022-11-07 20:00:19 +0000 | [diff] [blame] | 31 | List<PathSegment> pathSegments = request.getUriInfo().getPathSegments(); |
| margaretha | ee0cbfe | 2018-08-28 17:47:14 +0200 | [diff] [blame] | 32 | String version = pathSegments.get(0).getPath(); |
| 33 | |
| margaretha | 7926adc | 2018-08-30 13:45:33 +0200 | [diff] [blame] | 34 | if (!config.getSupportedVersions().contains(version)) { |
| abcpro1 | edfa670 | 2022-11-07 18:52:14 +0000 | [diff] [blame] | 35 | throw new NotFoundException(); |
| margaretha | 7926adc | 2018-08-30 13:45:33 +0200 | [diff] [blame] | 36 | // throw kustvaktResponseHandler.throwit( |
| 37 | // new |
| 38 | // KustvaktException(StatusCodes.UNSUPPORTED_API_VERSION, |
| 39 | // "API " + version + " is unsupported.", version)); |
| margaretha | ee0cbfe | 2018-08-28 17:47:14 +0200 | [diff] [blame] | 40 | } |
| margaretha | ee0cbfe | 2018-08-28 17:47:14 +0200 | [diff] [blame] | 41 | } |
| 42 | |
| 43 | } |