/* * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) * Copyright (C) $$Year-Rel$$ The Jalview Authors * * This file is part of Jalview. * * Jalview is free software: you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation, either version 3 * of the License, or (at your option) any later version. * * Jalview is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty * of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Jalview. If not, see . * The Jalview Authors are detailed in the 'AUTHORS' file. */ package jalview.util; import java.io.BufferedInputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.ProtocolException; import java.net.URL; import java.util.List; import javax.ws.rs.HttpMethod; public class HttpUtils { /** * Returns true if it is possible to open an input stream at the given URL, * else false. The input stream is closed. * * @param url * @return */ public static boolean isValidUrl(String url) { InputStream is = null; try { is = new URL(url).openStream(); if (is != null) { return true; } } catch (IOException x) { // MalformedURLException, FileNotFoundException return false; } finally { if (is != null) { try { is.close(); } catch (IOException e) { // ignore } } } return false; } public static boolean startsWithHttpOrHttps(String file) { return file.startsWith("http://") || file.startsWith("https://"); } /** * wrapper to get/post to a URL or check headers * @param url * @param ids * @param readTimeout * @return * @throws IOException * @throws ProtocolException */ public static boolean checkUrlAvailable(URL url, int readTimeout) throws IOException, ProtocolException { // System.out.println(System.currentTimeMillis() + " " + url); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod(HttpMethod.HEAD); connection.setDoInput(true); connection.setUseCaches(false); connection.setConnectTimeout(300); connection.setReadTimeout(readTimeout); return connection.getResponseCode() == 200; } /** * download from given URL and return a pointer to temporary file */ public static File fetchURLToTemp(String url) throws OutOfMemoryError, IOException { long time = System.currentTimeMillis(); URL rcall = new URL(url); InputStream is = new BufferedInputStream(rcall.openStream()); File outFile = null; try { outFile = File.createTempFile("jalview", ".xml"); outFile.deleteOnExit(); if (outFile.length() == 0) { outFile.delete(); return null; } } catch (Exception ex) { } if (outFile != null) { FileOutputStream fio = new FileOutputStream(outFile); byte[] bb = new byte[32 * 1024]; int l; while ((l = is.read(bb)) > 0) { fio.write(bb, 0, l); } fio.close(); is.close(); return outFile; } else { return null; } } }