/** * Copyright 2008-2012 Zuse Institute Berlin (ZIB) * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package de.zib.gndms.gndmc.utils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.http.HttpHeaders; import org.springframework.http.client.ClientHttpResponse; import java.io.IOException; import java.io.InputStream; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.util.LinkedList; import java.util.List; /** * @date: 14.03.12 * @time: 13:42 * @author: Jörg Bachmann * @email: bachmann@zib.de */ public class DefaultResponseExtractor implements EnhancedResponseExtractor { protected final Logger logger = LoggerFactory.getLogger( this.getClass() ); private int statusCode; private HttpHeaders headers; private InputStream body; private String url; @Override public void extractData( final String url, final ClientHttpResponse response ) throws IOException { statusCode = response.getStatusCode().value(); headers = response.getHeaders(); body = response.getBody(); this.url = url; } public int getStatusCode() { return statusCode; } public HttpHeaders getHeaders() { return headers; } public InputStream getBody() { return body; } public static List< String > getCookies( final HttpHeaders headers ) { final List< String > cookies = new LinkedList<String>(); for( String header: headers.keySet() ) { if( "Set-Cookie".equals( header ) ) { for( String value: headers.get( header ) ) { cookies.add( value ); } } } return cookies; } public static String getLocation( final HttpHeaders headers ) { for( String header: headers.keySet() ) { if( "Location".equals( header) ) { try { return URLDecoder.decode(headers.get(header).get(0), "utf8"); } catch (UnsupportedEncodingException e) { throw new IllegalStateException( "The system does not support utf8 decoding!" ); } } } return null; } public String getURL() { return url; } }