package htsjdk.samtools.util;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
/**
* User: jrobinso
* Date: Sep 23, 2009
*/
public class HttpUtils {
public static String getETag(final URL url) {
return getHeaderField(url, "ETag");
}
private static URLConnection openConnection(final URL url) throws IOException{
URLConnection conn = url.openConnection();
conn.setReadTimeout(3000);
conn.setDefaultUseCaches(false);
conn.setUseCaches(false);
return conn;
}
public static String getHeaderField(final URL url, final String name) {
URLConnection conn = null;
try {
// Create a URLConnection object for a URL
conn = openConnection(url);
return conn.getHeaderField(name);
} catch (IOException e) {
e.printStackTrace();
return null;
}
finally {
if (conn != null && conn instanceof HttpURLConnection) {
((HttpURLConnection) conn).disconnect();
}
}
}
public static void printHeaderFields(final URL url) {
URLConnection conn = null;
try {
// Create a URLConnection object for a URL
conn = openConnection(url);
for (final String name : conn.getHeaderFields().keySet()) {
System.out.println(name + "\t" + conn.getHeaderField(name));
}
} catch (Exception e) {
e.printStackTrace();
}
finally {
if (conn != null && conn instanceof HttpURLConnection) {
((HttpURLConnection) conn).disconnect();
}
}
}
public static boolean resourceAvailable(final URL url) {
return getETag(url) != null;
}
public static void main(final String[] args) throws MalformedURLException {
//printHeaderFields(new URL(
// "http://www.broadinstitute.org/igvdata/1KG/DCC_merged/freeze5/NA12891.pilot2.SLX.bam"));
System.out.println(getETag(new URL(
"http://www.broadinstitute.org/igvdata/test/sam/303KY.8.paired1.bam.tdf")));
System.out.println(resourceAvailable(new URL(
"http://www.broadinstitute.org/igvdata/test/sam/303KY.8.paired1.bam.tdf")));
}
}