Example usage for org.springframework.web.util UriComponentsBuilder fromUri

List of usage examples for org.springframework.web.util UriComponentsBuilder fromUri

Introduction

In this page you can find the example usage for org.springframework.web.util UriComponentsBuilder fromUri.

Prototype

public static UriComponentsBuilder fromUri(URI uri) 

Source Link

Document

Create a builder that is initialized with the given URI .

Usage

From source file:org.cloudfoundry.identity.uaa.mock.token.TokenMvcMockTests.java

@Test
public void invalidScopeErrorMessageIsNotShowingAllUserScopes() throws Exception {
    String clientId = "testclient" + generator.generate();
    String scopes = "openid,password.write,cloud_controller.read,scim.userids,password.write,something.else";
    setUpClients(clientId, scopes, scopes, "authorization_code", true);

    String username = "testuser" + generator.generate();
    ScimUser developer = setUpUser(username, "openid", OriginKeys.UAA, IdentityZoneHolder.getUaaZone().getId());
    MockHttpSession session = getAuthenticatedSession(developer);

    String basicDigestHeaderValue = "Basic " + new String(
            org.apache.commons.codec.binary.Base64.encodeBase64((clientId + ":" + SECRET).getBytes()));

    String state = generator.generate();
    MockHttpServletRequestBuilder authRequest = get("/oauth/authorize")
            .header("Authorization", basicDigestHeaderValue).session(session)
            .param(OAuth2Utils.RESPONSE_TYPE, "code").param(OAuth2Utils.SCOPE, "something.else")
            .param(OAuth2Utils.STATE, state).param(OAuth2Utils.CLIENT_ID, clientId)
            .param(OAuth2Utils.REDIRECT_URI, TEST_REDIRECT_URI);

    MvcResult mvcResult = getMockMvc().perform(authRequest).andExpect(status().is3xxRedirection()).andReturn();

    UriComponents locationComponents = UriComponentsBuilder
            .fromUri(URI.create(mvcResult.getResponse().getHeader("Location"))).build();
    MultiValueMap<String, String> queryParams = locationComponents.getQueryParams();
    String errorMessage = URIUtil
            .encodeQuery("[something.else] is invalid. This user is not allowed any of the requested scopes");
    assertTrue(!queryParams.containsKey("scope"));
    assertEquals(errorMessage, queryParams.getFirst("error_description"));
}

From source file:org.mule.modules.wechat.WechatConnector.java

/**
 * Verify validity of the URL//from  w ww  .j  a  v a2 s.c o  m
 * <br><a href="http://admin.wechat.com/wiki/index.php?title=Getting_Started#Step_2._Verify_validity_of_the_URL">http://admin.wechat.com/wiki/index.php?title=Getting_Started#Step_2._Verify_validity_of_the_URL</a>
 * 
 * @param uri URI sent by WeChat Official Account Admin System
 * @return The developer's backend system should return the echostr parameter value indicating that the request has been successfully received
 * @throws Exception If anything fails
 */
@Processor
public Object verifyUrl(@Default("#[message.inboundProperties.'http.request.uri']") String uri)
        throws Exception {
    String result = "";
    MultiValueMap<String, String> parameters = UriComponentsBuilder.fromUri(new URI(uri)).build()
            .getQueryParams();

    if (parameters.containsKey("timestamp") && parameters.containsKey("nonce")
            && parameters.containsKey("signature")) {
        String[] arr = { config.getToken(), parameters.get("timestamp").get(0),
                parameters.get("nonce").get(0) };
        Arrays.sort(arr);
        String tmpStr = String.join("", arr);
        tmpStr = DigestUtils.sha1Hex(tmpStr);
        if (tmpStr.equals(parameters.get("signature").get(0))) {
            if (parameters.containsKey("echostr")) {
                result = parameters.get("echostr").get(0);
            }
        }
    }

    return result;
}

From source file:org.springframework.bus.runner.adapter.discovery.DiscoveryClientChannelLocator.java

private URI pickUrl(List<ServiceInstance> instances) {
    return UriComponentsBuilder.fromUri(instances.get(new Random().nextInt(instances.size())).getUri())
            .path("channels").build().toUri();
}

From source file:org.springframework.cloud.dataflow.server.controller.support.MetricStore.java

/**
 * Instantiates a new metric store.//  w w  w .  j  a  v a 2  s . com
 *
 * @param metricsProperties the metrics properties
 */
public MetricStore(MetricsProperties metricsProperties) {
    this.metricsProperties = metricsProperties;
    ObjectMapper mapper = new ObjectMapper();
    mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
    mapper.registerModule(new Jackson2HalModule());
    MappingJackson2HttpMessageConverter messageConverter = new MappingJackson2HttpMessageConverter();
    messageConverter.setSupportedMediaTypes(MediaType.parseMediaTypes("application/hal+json"));
    messageConverter.setObjectMapper(mapper);
    restTemplate = new RestTemplate(Arrays.asList(messageConverter));
    final MetricsProperties.Collector collector = metricsProperties.getCollector();
    String baseURI = collector.getUri();
    if (StringUtils.hasText(baseURI)) {
        try {
            URI uri = new URI(baseURI);
            this.collectorEndpoint = UriComponentsBuilder.fromUri(uri).path("/collector/metrics/streams")
                    .build().toString();
            logger.info("Metrics Collector URI = [" + collectorEndpoint + "]");
            validateUsernamePassword(collector.getUsername(), collector.getPassword());
            if (StringUtils.hasText(collector.getUsername()) && StringUtils.hasText(collector.getPassword())) {
                this.restTemplate.setRequestFactory(HttpClientConfigurer.create(new URI(collectorEndpoint))
                        .basicAuthCredentials(collector.getUsername(), collector.getPassword())
                        .skipTlsCertificateVerification(collector.isSkipSslValidation())
                        .buildClientHttpRequestFactory());
                logger.debug("Configured basic security for Metrics Collector endpoint");
            } else {
                logger.debug("Not configuring basic security for Metrics Collector endpoint");
            }
        } catch (URISyntaxException e) {
            logger.warn("Could not parse collector URI, stream metrics monitoring will not be available");
        }
    } else {
        logger.info("Metrics Collector URI = []");
    }
}

From source file:org.springframework.cloud.gateway.filter.LoadBalancerClientFilter.java

@Override
public Mono<Void> filter(ServerWebExchange exchange, WebFilterChain chain) {
    URI url = getAttribute(exchange, GATEWAY_REQUEST_URL_ATTR, URI.class);
    if (url == null || !url.getScheme().equals("lb")) {
        return chain.filter(exchange);
    }//from  w w w.j  a v  a2s  . c  om
    log.trace("LoadBalancerClientFilter url before: " + url);

    final ServiceInstance instance = loadBalancer.choose(url.getHost());

    if (instance == null) {
        throw new NotFoundException("");
    }

    URI requestUrl = UriComponentsBuilder.fromUri(url).scheme(instance.isSecure() ? "https" : "http") //TODO: support websockets
            .host(instance.getHost()).port(instance.getPort()).build(true).toUri();
    log.trace("LoadBalancerClientFilter url chosen: " + requestUrl);
    exchange.getAttributes().put(GATEWAY_REQUEST_URL_ATTR, requestUrl);
    return chain.filter(exchange);
}

From source file:org.springframework.cloud.gateway.filter.WebsocketRoutingFilter.java

private void changeSchemeIfIsWebSocketUpgrade(ServerWebExchange exchange) {
    // Check the Upgrade
    URI requestUrl = exchange.getRequiredAttribute(GATEWAY_REQUEST_URL_ATTR);
    String scheme = requestUrl.getScheme().toLowerCase();
    String upgrade = exchange.getRequest().getHeaders().getUpgrade();
    // change the scheme if the socket client send a "http" or "https"
    if ("WebSocket".equalsIgnoreCase(upgrade) && ("http".equals(scheme) || "https".equals(scheme))) {
        String wsScheme = convertHttpToWs(scheme);
        URI wsRequestUrl = UriComponentsBuilder.fromUri(requestUrl).scheme(wsScheme).build().toUri();
        exchange.getAttributes().put(GATEWAY_REQUEST_URL_ATTR, wsRequestUrl);
        if (log.isTraceEnabled()) {
            log.trace("changeSchemeTo:[" + wsRequestUrl + "]");
        }//from w w  w  . j av a2  s .  c o m
    }
}

From source file:org.springframework.cloud.netflix.ribbon.okhttp.RetryableOkHttpLoadBalancingClient.java

@Override
public OkHttpRibbonResponse execute(final OkHttpRibbonRequest ribbonRequest, final IClientConfig configOverride)
        throws Exception {
    final LoadBalancedRetryPolicy retryPolicy = loadBalancedRetryPolicyFactory.create(this.getClientName(),
            this);
    RetryCallback<OkHttpRibbonResponse, Exception> retryCallback = new RetryCallback<OkHttpRibbonResponse, Exception>() {
        @Override//  w  w  w.  j av  a 2 s.  com
        public OkHttpRibbonResponse doWithRetry(RetryContext context) throws Exception {
            //on retries the policy will choose the server and set it in the context
            //extract the server and update the request being made
            OkHttpRibbonRequest newRequest = ribbonRequest;
            if (context instanceof LoadBalancedRetryContext) {
                ServiceInstance service = ((LoadBalancedRetryContext) context).getServiceInstance();
                if (service != null) {
                    //Reconstruct the request URI using the host and port set in the retry context
                    newRequest = newRequest
                            .withNewUri(new URI(service.getUri().getScheme(), newRequest.getURI().getUserInfo(),
                                    service.getHost(), service.getPort(), newRequest.getURI().getPath(),
                                    newRequest.getURI().getQuery(), newRequest.getURI().getFragment()));
                }
            }
            if (isSecure(configOverride)) {
                final URI secureUri = UriComponentsBuilder.fromUri(newRequest.getUri()).scheme("https").build()
                        .toUri();
                newRequest = newRequest.withNewUri(secureUri);
            }
            OkHttpClient httpClient = getOkHttpClient(configOverride, secure);

            final Request request = newRequest.toRequest();
            Response response = httpClient.newCall(request).execute();
            if (retryPolicy.retryableStatusCode(response.code())) {
                throw new RetryableStatusCodeException(RetryableOkHttpLoadBalancingClient.this.clientName,
                        response.code());
            }
            return new OkHttpRibbonResponse(response, newRequest.getUri());
        }
    };
    return this.executeWithRetry(ribbonRequest, retryPolicy, retryCallback);
}

From source file:org.springframework.security.oauth2.provider.endpoint.AuthorizationEndpoint.java

private String append(String base, Map<String, ?> query, Map<String, String> keys, boolean fragment) {

    UriComponentsBuilder template = UriComponentsBuilder.newInstance();
    UriComponentsBuilder builder = UriComponentsBuilder.fromUriString(base);
    URI redirectUri;//from  w  ww  .ja  va  2 s .c  o  m
    try {
        // assume it's encoded to start with (if it came in over the wire)
        redirectUri = builder.build(true).toUri();
    } catch (Exception e) {
        // ... but allow client registrations to contain hard-coded non-encoded values
        redirectUri = builder.build().toUri();
        builder = UriComponentsBuilder.fromUri(redirectUri);
    }
    template.scheme(redirectUri.getScheme()).port(redirectUri.getPort()).host(redirectUri.getHost())
            .userInfo(redirectUri.getUserInfo()).path(redirectUri.getPath());

    if (fragment) {
        StringBuilder values = new StringBuilder();
        if (redirectUri.getFragment() != null) {
            String append = redirectUri.getFragment();
            values.append(append);
        }
        for (String key : query.keySet()) {
            if (values.length() > 0) {
                values.append("&");
            }
            String name = key;
            if (keys != null && keys.containsKey(key)) {
                name = keys.get(key);
            }
            values.append(name + "={" + key + "}");
        }
        if (values.length() > 0) {
            template.fragment(values.toString());
        }
        UriComponents encoded = template.build().expand(query).encode();
        builder.fragment(encoded.getFragment());
    } else {
        for (String key : query.keySet()) {
            String name = key;
            if (keys != null && keys.containsKey(key)) {
                name = keys.get(key);
            }
            template.queryParam(name, "{" + key + "}");
        }
        template.fragment(redirectUri.getFragment());
        UriComponents encoded = template.build().expand(query).encode();
        builder.query(encoded.getQuery());
    }

    return builder.build().toUriString();

}

From source file:ru.org.linux.topic.TagTopicListController.java

private static String buildTagUri(String tag, int section, int offset) {
    UriComponentsBuilder builder = UriComponentsBuilder.fromUri(TAG_URI_TEMPLATE.expand(tag));

    if (section != 0) {
        builder.queryParam("section", section);
    }/*from   w w w. j a v  a  2s. c om*/

    if (offset != 0) {
        builder.queryParam("offset", offset);
    }

    return builder.build().toUriString();
}

From source file:ru.org.linux.user.AddPhotoController.java

@RequestMapping(value = "/addphoto.jsp", method = RequestMethod.POST)
@PreAuthorize("hasRole('ROLE_ANONYMOUS')")
public ModelAndView addPhoto(@RequestParam("file") MultipartFile file, HttpServletRequest request,
        HttpServletResponse response) throws Exception {

    if (file == null || file.isEmpty()) {
        return new ModelAndView("addphoto", "error", "  ");
    }/*from w ww . ja v  a  2  s.  com*/

    try {
        File uploadedFile = File.createTempFile("userpic", "",
                new File(configuration.getPathPrefix() + "/linux-storage/tmp/"));

        file.transferTo(uploadedFile);

        UserService.checkUserpic(uploadedFile);
        String extension = ImageInfo.detectImageType(uploadedFile);

        Random random = new Random();

        String photoname;
        File photofile;

        do {
            photoname = Integer.toString(AuthUtil.getCurrentUser().getId()) + ':' + random.nextInt() + '.'
                    + extension;
            photofile = new File(configuration.getHTMLPathPrefix() + "/photos", photoname);
        } while (photofile.exists());

        if (!uploadedFile.renameTo(photofile)) {
            logger.warn("Can't move photo to " + photofile);
            throw new ScriptErrorException("Can't move photo: internal error");
        }

        userDao.setPhoto(AuthUtil.getCurrentUser(), photoname);

        logger.info("? ?  "
                + AuthUtil.getCurrentUser().getNick());

        return new ModelAndView(new RedirectView(UriComponentsBuilder
                .fromUri(PROFILE_NOCACHE_URI_TEMPLATE.expand(AuthUtil.getCurrentUser().getNick()))
                .queryParam("nocache", Integer.toString(random.nextInt()) + "=").build().encode().toString()));
    } catch (IOException ex) {
        response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
        return new ModelAndView("addphoto", "error", ex.getMessage());
    } catch (BadImageException ex) {
        response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
        return new ModelAndView("addphoto", "error", ex.getMessage());
    } catch (UserErrorException ex) {
        response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
        return new ModelAndView("addphoto", "error", ex.getMessage());
    }
}