@Override public MultiValueMap<String, String> queryParams() { return request().getQueryParams(); }
@Override public MultiValueMap<String, String> getQueryParams() { return getDelegate().getQueryParams(); }
@Override protected Object resolveNamedValue(String name, MethodParameter parameter, ServerWebExchange exchange) { List<String> paramValues = exchange.getRequest().getQueryParams().get(name); Object result = null; if (paramValues != null) { result = (paramValues.size() == 1 ? paramValues.get(0) : paramValues); } return result; }
@Override public Object resolveArgumentValue( MethodParameter methodParameter, BindingContext context, ServerWebExchange exchange) { boolean isMultiValueMap = MultiValueMap.class.isAssignableFrom(methodParameter.getParameterType()); MultiValueMap<String, String> queryParams = exchange.getRequest().getQueryParams(); return (isMultiValueMap ? queryParams : queryParams.toSingleValueMap()); }
@Override protected boolean matchValue(ServerWebExchange exchange) { return (this.value != null && this.value.equals(exchange.getRequest().getQueryParams().getFirst(this.name))); } }
@Override protected boolean matchName(ServerWebExchange exchange) { return exchange.getRequest().getQueryParams().containsKey(this.name); }
@Override public MultiValueMap<String, String> getQueryParams() { return getDelegate().getQueryParams(); }
@Override public List<MediaType> resolveMediaTypes(ServerWebExchange exchange) throws NotAcceptableStatusException { String key = exchange.getRequest().getQueryParams().getFirst(getParameterName()); if (!StringUtils.hasText(key)) { return MEDIA_TYPE_ALL_LIST; } key = formatKey(key); MediaType match = this.mediaTypes.get(key); if (match == null) { match = MediaTypeFactory.getMediaType("filename." + key) .orElseThrow(() -> { List<MediaType> supported = new ArrayList<>(this.mediaTypes.values()); return new NotAcceptableStatusException(supported); }); } this.mediaTypes.putIfAbsent(key, match); return Collections.singletonList(match); }
/** * Gets the state parameter from the {@link ServerHttpRequest} * @param exchange the exchange to use * @return the state parameter or null if not found */ private String getStateParameter(ServerWebExchange exchange) { Assert.notNull(exchange, "exchange cannot be null"); return exchange.getRequest().getQueryParams().getFirst(OAuth2ParameterNames.STATE); }
@Override public GatewayFilter apply(Config config) { return (exchange, chain) -> { exchange.getAttributes().put(REQUEST_TIME_BEGIN, System.currentTimeMillis()); return chain.filter(exchange).then( Mono.fromRunnable(() -> { Long startTime = exchange.getAttribute(REQUEST_TIME_BEGIN); if (startTime != null) { StringBuilder sb = new StringBuilder(exchange.getRequest().getURI().getRawPath()) .append(": ") .append(System.currentTimeMillis() - startTime) .append("ms"); if (config.isWithParams()) { sb.append(" params:").append(exchange.getRequest().getQueryParams()); } log.info(sb.toString()); } }) ); }; }
@Override public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) { String token = exchange.getRequest().getQueryParams().getFirst("token"); if (token == null || token.isEmpty()) { logger.info( "token is empty..." ); exchange.getResponse().setStatusCode(HttpStatus.UNAUTHORIZED); return exchange.getResponse().setComplete(); } return chain.filter(exchange); }
/** * Combine query params and form data for multipart form data from the body * of the request into a {@code Map<String, Object>} of values to use for * data binding purposes. * @param exchange the current exchange * @return a {@code Mono} with the values to bind * @see org.springframework.http.server.reactive.ServerHttpRequest#getQueryParams() * @see ServerWebExchange#getFormData() * @see ServerWebExchange#getMultipartData() */ public static Mono<Map<String, Object>> extractValuesToBind(ServerWebExchange exchange) { MultiValueMap<String, String> queryParams = exchange.getRequest().getQueryParams(); Mono<MultiValueMap<String, String>> formData = exchange.getFormData(); Mono<MultiValueMap<String, Part>> multipartData = exchange.getMultipartData(); return Mono.zip(Mono.just(queryParams), formData, multipartData) .map(tuple -> { Map<String, Object> result = new TreeMap<>(); tuple.getT1().forEach((key, values) -> addBindValue(result, key, values)); tuple.getT2().forEach((key, values) -> addBindValue(result, key, values)); tuple.getT3().forEach((key, values) -> addBindValue(result, key, values)); return result; }); }
private static OAuth2AuthorizationResponse convertResponse(ServerWebExchange exchange) { MultiValueMap<String, String> queryParams = exchange.getRequest() .getQueryParams(); String redirectUri = UriComponentsBuilder.fromUri(exchange.getRequest().getURI()) .query(null) .build() .toUriString(); return OAuth2AuthorizationResponseUtils .convert(queryParams, redirectUri); } }
@Test public void queryParamsNone() throws Exception { MultiValueMap<String, String> params = createHttpRequest("/path").getQueryParams(); assertEquals(0, params.size()); }
@Test // SPR-15140 public void queryParamsWithEncodedValue() throws Exception { MultiValueMap<String, String> params = createHttpRequest("/path?a=%20%2B+%C3%A0").getQueryParams(); assertEquals(1, params.size()); assertEquals(Collections.singletonList(" + \u00e0"), params.get("a")); }
@Test public void queryParamsWithEmptyValue() throws Exception { MultiValueMap<String, String> params = createHttpRequest("/path?a=").getQueryParams(); assertEquals(1, params.size()); assertEquals(Collections.singletonList(""), params.get("a")); }
@Test public void queryParamsWithMultipleValues() throws Exception { MultiValueMap<String, String> params = createHttpRequest("/path?a=1&a=2").getQueryParams(); assertEquals(1, params.size()); assertEquals(Arrays.asList("1", "2"), params.get("a")); }
@Test public void queryParams() throws Exception { MultiValueMap<String, String> params = createHttpRequest("/path?a=A&b=B").getQueryParams(); assertEquals(2, params.size()); assertEquals(Collections.singletonList("A"), params.get("a")); assertEquals(Collections.singletonList("B"), params.get("b")); }
@Test public void queryParamsWithNoValue() throws Exception { MultiValueMap<String, String> params = createHttpRequest("/path?a").getQueryParams(); assertEquals(1, params.size()); assertEquals(Collections.singletonList(null), params.get("a")); }
@Override public Mono<Void> handle(ServerWebExchange exchange) { if (exchange.getRequest().getQueryParams().containsKey("expire")) { return exchange.getSession().doOnNext(session -> { // Don't do anything, leave it expired... }).then(); } else if (exchange.getRequest().getQueryParams().containsKey("changeId")) { return exchange.getSession().flatMap(session -> session.changeSessionId().doOnSuccess(aVoid -> updateSessionAttribute(session))); } else if (exchange.getRequest().getQueryParams().containsKey("invalidate")) { return exchange.getSession().doOnNext(WebSession::invalidate).then(); } else { return exchange.getSession().doOnSuccess(this::updateSessionAttribute).then(); } }