package htsjdk.tribble.util;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
/**
* Implementation of URLHelper designed for remote resources.
* Determines appropriate helper based on protocol (ftp/http),
* and then delegates.
*
* @author jacob
* @date 2013-Apr-11
*/
public class RemoteURLHelper implements URLHelper {
private URLHelper wrappedHelper;
public RemoteURLHelper(URL url){
String protocol = url.getProtocol().toLowerCase();
if(protocol.startsWith("http")){
this.wrappedHelper = new HTTPHelper(url);
}else if(protocol.startsWith("ftp")){
this.wrappedHelper = new FTPHelper(url);
}else{
throw new IllegalArgumentException("Unable to create helper for url with protocol " + protocol);
}
}
@Override
public URL getUrl() {
return this.wrappedHelper.getUrl();
}
@Override
public long getContentLength() throws IOException {
return this.wrappedHelper.getContentLength();
}
@Override
public InputStream openInputStream() throws IOException {
return this.wrappedHelper.openInputStream();
}
@Override
public InputStream openInputStreamForRange(long start, long end) throws IOException {
return this.wrappedHelper.openInputStreamForRange(start, end);
}
@Override
public boolean exists() throws IOException {
return this.wrappedHelper.exists();
}
}