1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one or more 3 * contributor license agreements. See the NOTICE file distributed with 4 * this work for additional information regarding copyright ownership. 5 * The ASF licenses this file to You under the Apache License, Version 2.0 6 * (the "License"); you may not use this file except in compliance with 7 * the License. You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 18 package org.apache.any23.http; 19 20 import java.io.IOException; 21 import java.io.InputStream; 22 23 /** 24 * Abstraction for opening an {@link InputStream} on an HTTP IRI. 25 * 26 * @author Richard Cyganiak (richard@cyganiak.de) 27 */ 28 public interface HTTPClient { 29 30 /** 31 * Initializes the HTTP client. 32 * 33 * @param configuration 34 * configuration for the HTTP Client. 35 */ 36 void init(HTTPClientConfiguration configuration); 37 38 /** 39 * Opens the input stream for the given target IRI. 40 * 41 * @param uri 42 * target IRI. 43 * 44 * @return input stream to access IRI content. 45 * 46 * @throws IOException 47 * if any error occurs while reading the IRI content. 48 */ 49 InputStream openInputStream(String uri) throws IOException; 50 51 /** 52 * Release all static resources help by the instance. Call this method only if you are sure you will not use it 53 * again in your application, like for example when shutting down a servlet context. 54 */ 55 void close(); 56 57 /** 58 * The value of the Content-Type header reported by the server. Can be <code>null</code>. 59 * 60 * @return the content type as string. 61 */ 62 String getContentType(); 63 64 /** 65 * @return content length in bytes. 66 */ 67 long getContentLength(); 68 69 /** 70 * Returns the actual IRI from which the document was fetched. This might differ from the IRI passed to 71 * openInputStream() if a redirect was performed. A return value of <code>null</code> means that the IRI is 72 * unchanged and the original IRI was used. 73 * 74 * @return actual document IRI. 75 */ 76 String getActualDocumentIRI(); 77 78 }