Example usage for org.springframework.web.client ResponseExtractor ResponseExtractor

List of usage examples for org.springframework.web.client ResponseExtractor ResponseExtractor

Introduction

In this page you can find the example usage for org.springframework.web.client ResponseExtractor ResponseExtractor.

Prototype

ResponseExtractor

Source Link

Usage

From source file:com.apress.prospringintegration.customadapters.inbound.pollerdriven.StockPollingMessageSource.java

protected Stock getStockInformationFor(final String symbol) {
    String url = String.format(this.stockServiceUrl, symbol);
    Stock stock = restTemplate.execute(url, HttpMethod.GET, null, new ResponseExtractor<Stock>() {
        @Override//w ww  .  j a v a2s  .co m
        public Stock extractData(ClientHttpResponse clientHttpResponse) throws IOException {
            String fragPattern = String.format(jsonFragmentTemplate, symbol, symbol);
            String bodyAsText = IOUtils.toString(clientHttpResponse.getBody());

            int indexOfMatch = bodyAsText.indexOf(fragPattern);

            if (indexOfMatch != -1) {
                String sectionContainingPrice = bodyAsText.substring(indexOfMatch);
                Matcher matcher = symbolSize.matcher(sectionContainingPrice);

                StringBuilder stringBuilder = new StringBuilder();

                while (matcher.find()) {
                    stringBuilder.append(matcher.group(1)).append(".").append(matcher.group(2));
                }

                String response = stringBuilder.toString();
                Float fl = Float.parseFloat(response);

                return new Stock(symbol, fl);
            }

            return null;
        }
    });

    return stock;
}

From source file:de.hybris.platform.marketplaceintegrationbackoffice.utils.MarketplaceintegrationbackofficeHttpClientImpl.java

@Override
public boolean redirectRequest(final String requestUrl) throws IOException {

    final boolean result = true;
    final RestTemplate restTemplate = new RestTemplate();

    final java.net.URI uri = java.net.URI.create(requestUrl);
    final java.awt.Desktop dp = java.awt.Desktop.getDesktop();
    if (dp.isSupported(java.awt.Desktop.Action.BROWSE)) {
        dp.browse(uri);// www  .  ja  v  a2 s . co m
    }
    restTemplate.execute(requestUrl, HttpMethod.GET, new RequestCallback() {
        @Override
        public void doWithRequest(final ClientHttpRequest request) throws IOException {
            // empty block should be documented
        }
    }, new ResponseExtractor<Object>() {
        @Override
        public Object extractData(final ClientHttpResponse response) throws IOException {
            final HttpStatus statusCode = response.getStatusCode();
            LOG.debug("Response status: " + statusCode.toString());
            return response.getStatusCode();
        }
    });
    return result;
}

From source file:com.mycompany.trader.TradingConnect.java

private static void loginAndSaveJsessionIdCookie(final String user, final String password,
        final HttpHeaders headersToUpdate) {

    String url = "http://localhost:" + port + "/blueprint-trading-services/login.html";

    new RestTemplate().execute(url, HttpMethod.POST, new RequestCallback() {
        @Override//from w  ww .  java2  s. c o m
        public void doWithRequest(ClientHttpRequest request) throws IOException {
            MultiValueMap<String, String> map = new LinkedMultiValueMap<>();
            map.add("username", user);
            map.add("password", password);
            new FormHttpMessageConverter().write(map, MediaType.APPLICATION_FORM_URLENCODED, request);
        }
    }, new ResponseExtractor<Object>() {
        @Override
        public Object extractData(ClientHttpResponse response) throws IOException {
            headersToUpdate.add("Cookie", response.getHeaders().getFirst("Set-Cookie"));
            return null;
        }
    });
}

From source file:org.cloudfoundry.client.lib.rest.LoggingRestTemplate.java

@Override
protected <T> T doExecute(URI url, HttpMethod method, RequestCallback requestCallback,
        final ResponseExtractor<T> responseExtractor) throws RestClientException {
    final String[] status = new String[1];
    final HttpStatus[] httpStatus = new HttpStatus[1];
    final Object[] headers = new Object[1];
    final String[] message = new String[1];
    T results = null;/* w w  w .  jav  a  2 s  . c  o m*/
    RestClientException exception = null;
    try {
        results = super.doExecute(url, method, requestCallback, new ResponseExtractor<T>() {
            @SuppressWarnings("rawtypes")
            public T extractData(ClientHttpResponse response) throws IOException {
                httpStatus[0] = response.getStatusCode();
                headers[0] = response.getHeaders();
                T data = null;
                if (responseExtractor != null && (data = responseExtractor.extractData(response)) != null) {
                    if (data instanceof String) {
                        message[0] = ((String) data).length() + " bytes";
                    } else if (data instanceof Map) {
                        message[0] = ((Map) data).keySet().toString();
                    } else {
                        message[0] = data.getClass().getName();
                    }
                    return data;
                } else {
                    message[0] = "<no data>";
                    return null;
                }
            }
        });
        status[0] = "OK";
    } catch (RestClientException e) {
        status[0] = "ERROR";
        message[0] = e.getMessage();
        exception = e;
        if (e instanceof HttpStatusCodeException) {
            httpStatus[0] = ((HttpStatusCodeException) e).getStatusCode();
        }
    }
    addLogMessage(method, url, status[0], httpStatus[0], message[0]);
    if (exception != null) {
        throw exception;
    }
    return results;
}

From source file:de.zib.gndms.gndmc.test.gorfx.ESGFGet.java

@Override
protected void run() throws Exception {

    SetupSSL setupSSL = new SetupSSL();
    setupSSL.setKeyStoreLocation(keyStoreLocation);
    setupSSL.prepareKeyStore(passwd, passwd);
    setupSSL.setupDefaultSSLContext(passwd);

    final RestTemplate rt = new RestTemplate();

    rt.execute(url, HttpMethod.GET, null, new ResponseExtractor<Object>() {
        @Override//from   w  w w.  j a  v a 2 s. c o m
        public Object extractData(final ClientHttpResponse response) throws IOException {

            String url = null;
            String cookieTmp = null;
            System.out.println(response.getStatusCode().toString());
            for (String s : response.getHeaders().keySet())
                for (String v : response.getHeaders().get(s)) {
                    System.out.println(s + ":" + v);
                    if ("Location".equals(s))
                        url = v;
                    else if ("Set-Cookie".equals(s))
                        cookieTmp = v;
                }
            final String cookie = cookieTmp.split(";")[0];

            if (url != null)
                rt.execute(decodeUrl(url), HttpMethod.GET, new RequestCallback() {
                    @Override
                    public void doWithRequest(final ClientHttpRequest request) throws IOException {

                        System.out.println("setting cookie: " + cookie);
                        request.getHeaders().set("Cookie", cookie);
                    }
                }, new ResponseExtractor<Object>() {
                    @Override
                    public Object extractData(final ClientHttpResponse response) throws IOException {

                        System.out.println(response.getStatusCode().toString());
                        System.out.println("Received data, copying");
                        InputStream is = response.getBody();
                        OutputStream os = new FileOutputStream(off);
                        StreamCopyNIO.copyStream(is, os);
                        System.out.println("Done");
                        return null;
                    }
                });

            return null;
        }
    });
}

From source file:io.bosh.client.jobs.SpringJobs.java

private final Observable<File> getGzip(Consumer<UriComponentsBuilder> builderCallback) {
    // For responses that have a Content-Type of application/x-gzip, we need to
    // decompress them. The RestTemplate and HttpClient don't handle this for
    // us/*from w  ww  .  ja va  2s .c om*/
    return createObservable(() -> {
        UriComponentsBuilder builder = UriComponentsBuilder.fromUri(this.root);
        builderCallback.accept(builder);
        URI uri = builder.build().toUri();
        return this.restOperations.execute(uri, HttpMethod.GET, null, new ResponseExtractor<File>() {
            @Override
            public File extractData(ClientHttpResponse response) throws IOException {
                return decompress(response.getBody());
            }
        });
    });
}

From source file:sparklr.common.AbstractEmptyAuthorizationCodeProviderTests.java

@BeforeOAuth2Context
public void setupAccessTokenProvider() {
    accessTokenProvider = new AuthorizationCodeAccessTokenProvider() {

        private ResponseExtractor<OAuth2AccessToken> extractor = super.getResponseExtractor();

        private ResponseExtractor<ResponseEntity<Void>> authExtractor = super.getAuthorizationResponseExtractor();

        private ResponseErrorHandler errorHandler = super.getResponseErrorHandler();

        @Override//from  w w  w.  ja  v a  2 s .  com
        protected ResponseErrorHandler getResponseErrorHandler() {
            return new DefaultResponseErrorHandler() {
                public void handleError(ClientHttpResponse response) throws IOException {
                    response.getHeaders();
                    response.getStatusCode();
                    tokenEndpointResponse = response;
                    errorHandler.handleError(response);
                }
            };
        }

        @Override
        protected ResponseExtractor<OAuth2AccessToken> getResponseExtractor() {
            return new ResponseExtractor<OAuth2AccessToken>() {

                public OAuth2AccessToken extractData(ClientHttpResponse response) throws IOException {
                    try {
                        response.getHeaders();
                        response.getStatusCode();
                        tokenEndpointResponse = response;
                        return extractor.extractData(response);
                    } catch (ResourceAccessException e) {
                        return null;
                    }
                }

            };
        }

        @Override
        protected ResponseExtractor<ResponseEntity<Void>> getAuthorizationResponseExtractor() {
            return new ResponseExtractor<ResponseEntity<Void>>() {

                public ResponseEntity<Void> extractData(ClientHttpResponse response) throws IOException {
                    response.getHeaders();
                    response.getStatusCode();
                    tokenEndpointResponse = response;
                    return authExtractor.extractData(response);
                }
            };
        }
    };
    context.setAccessTokenProvider(getAccessTokenProvider());
}

From source file:com.netflix.genie.web.services.impl.HttpFileTransferImpl.java

/**
 * {@inheritDoc}//from  w ww. j av a 2 s .c  o  m
 */
@Override
public void getFile(@NotBlank(message = "Source file path cannot be empty.") final String srcRemotePath,
        @NotBlank(message = "Destination local path cannot be empty") final String dstLocalPath)
        throws GenieException {
    final long start = System.nanoTime();
    log.debug("Called with src path {} and destination path {}", srcRemotePath, dstLocalPath);

    try {
        final File outputFile = new File(dstLocalPath);
        if (!this.isValid(srcRemotePath)) {
            throw new GenieServerException("Unable to download " + srcRemotePath + " not a valid URL");
        }
        this.restTemplate.execute(srcRemotePath, HttpMethod.GET,
                requestEntity -> requestEntity.getHeaders().setAccept(Lists.newArrayList(MediaType.ALL)),
                new ResponseExtractor<Void>() {
                    @Override
                    public Void extractData(final ClientHttpResponse response) throws IOException {
                        // Documentation I could find pointed to the HttpEntity reading the bytes off
                        // the stream so this should resolve memory problems if the file returned is large
                        FileUtils.copyInputStreamToFile(response.getBody(), outputFile);
                        return null;
                    }
                });
    } finally {
        this.downloadTimer.record(System.nanoTime() - start, TimeUnit.NANOSECONDS);
    }
}

From source file:com.appglu.impl.StorageTemplate.java

protected boolean streamStorageFile(StorageFile file, final InputStreamCallback inputStreamCallback,
        RequestCallback requestCallback) throws AppGluRestClientException {
    URI uri = this.getStorageFileURI(file);

    try {//from w w w . j  a va  2s . c  o m
        ResponseExtractor<Boolean> responseExtractor = new ResponseExtractor<Boolean>() {
            public Boolean extractData(ClientHttpResponse response) throws IOException {
                if (response.getStatusCode() == HttpStatus.NOT_MODIFIED) {
                    return false;
                }

                Md5DigestCalculatingInputStream inputStream = new Md5DigestCalculatingInputStream(
                        response.getBody());
                inputStreamCallback.doWithInputStream(inputStream);

                String eTagHeader = response.getHeaders().getETag();

                if (StringUtils.isNotEmpty(eTagHeader)) {
                    String eTag = StringUtils.removeDoubleQuotes(eTagHeader);

                    byte[] contentMd5 = inputStream.getMd5Digest();
                    if (!HashUtils.md5MatchesWithETag(contentMd5, eTag)) {
                        throw new AppGluRestClientException("Unable to verify integrity of downloaded file. "
                                + "Client calculated content hash didn't match hash calculated by server");
                    }
                }

                return true;
            }
        };

        return this.downloadRestOperations.execute(uri, HttpMethod.GET, requestCallback, responseExtractor);
    } catch (RestClientException e) {
        throw new AppGluRestClientException(e.getMessage(), e);
    }
}

From source file:sparklr.common.AbstractAuthorizationCodeProviderTests.java

@BeforeOAuth2Context
public void setupAccessTokenProvider() {
    accessTokenProvider = new AuthorizationCodeAccessTokenProvider() {

        private ResponseExtractor<OAuth2AccessToken> extractor = super.getResponseExtractor();

        private ResponseExtractor<ResponseEntity<Void>> authExtractor = super.getAuthorizationResponseExtractor();

        private ResponseErrorHandler errorHandler = super.getResponseErrorHandler();

        @Override/*from w w  w .  j  ava 2  s. c  o  m*/
        protected ResponseErrorHandler getResponseErrorHandler() {
            return new DefaultResponseErrorHandler() {
                public void handleError(ClientHttpResponse response) throws IOException {
                    response.getHeaders();
                    response.getStatusCode();
                    tokenEndpointResponse = response;
                    errorHandler.handleError(response);
                }
            };
        }

        @Override
        protected ResponseExtractor<OAuth2AccessToken> getResponseExtractor() {
            return new ResponseExtractor<OAuth2AccessToken>() {

                public OAuth2AccessToken extractData(ClientHttpResponse response) throws IOException {
                    try {
                        response.getHeaders();
                        response.getStatusCode();
                        tokenEndpointResponse = response;
                        return extractor.extractData(response);
                    } catch (ResourceAccessException e) {
                        return null;
                    }
                }

            };
        }

        @Override
        protected ResponseExtractor<ResponseEntity<Void>> getAuthorizationResponseExtractor() {
            return new ResponseExtractor<ResponseEntity<Void>>() {

                public ResponseEntity<Void> extractData(ClientHttpResponse response) throws IOException {
                    response.getHeaders();
                    response.getStatusCode();
                    tokenEndpointResponse = response;
                    return authExtractor.extractData(response);
                }
            };
        }
    };
    context.setAccessTokenProvider(accessTokenProvider);
}