5473f5adf624ed2287bb2f9c67bd766327e4ecc3
[jalview.git] / src / jalview / util / HttpUtils.java
1 /*
2  * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
3  * Copyright (C) $$Year-Rel$$ The Jalview Authors
4  * 
5  * This file is part of Jalview.
6  * 
7  * Jalview is free software: you can redistribute it and/or
8  * modify it under the terms of the GNU General Public License 
9  * as published by the Free Software Foundation, either version 3
10  * of the License, or (at your option) any later version.
11  *  
12  * Jalview is distributed in the hope that it will be useful, but 
13  * WITHOUT ANY WARRANTY; without even the implied warranty 
14  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
15  * PURPOSE.  See the GNU General Public License for more details.
16  * 
17  * You should have received a copy of the GNU General Public License
18  * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
19  * The Jalview Authors are detailed in the 'AUTHORS' file.
20  */
21 package jalview.util;
22
23 import java.io.IOException;
24 import java.io.InputStream;
25 import java.net.HttpURLConnection;
26 import java.net.ProtocolException;
27 import java.net.URL;
28 import java.util.List;
29
30 import javax.ws.rs.HttpMethod;
31
32 public class HttpUtils
33 {
34
35   /**
36    * Returns true if it is possible to open an input stream at the given URL,
37    * else false. The input stream is closed.
38    * 
39    * @param url
40    * @return
41    */
42   public static boolean isValidUrl(String url)
43   {
44     InputStream is = null;
45     try
46     {
47       is = new URL(url).openStream();
48       if (is != null)
49       {
50         return true;
51       }
52     } catch (IOException x)
53     {
54       // MalformedURLException, FileNotFoundException
55       return false;
56     } finally
57     {
58       if (is != null)
59       {
60         try
61         {
62           is.close();
63         } catch (IOException e)
64         {
65           // ignore
66         }
67       }
68     }
69     return false;
70   }
71
72   public static boolean startsWithHttpOrHttps(String file)
73   {
74     return file.startsWith("http://") || file.startsWith("https://");
75   }
76   
77
78   /**
79    * wrapper to get/post to a URL or check headers
80    * @param url
81    * @param ids
82    * @param readTimeout
83    * @return
84    * @throws IOException
85    * @throws ProtocolException
86    */
87   public static boolean checkUrlAvailable(URL url,
88           int readTimeout) throws IOException, ProtocolException
89   {
90     // System.out.println(System.currentTimeMillis() + " " + url);
91
92     HttpURLConnection connection = (HttpURLConnection) url.openConnection();
93
94     connection.setRequestMethod(HttpMethod.HEAD);
95
96     connection.setDoInput(true);
97
98     connection.setUseCaches(false);
99     connection.setConnectTimeout(300);
100     connection.setReadTimeout(readTimeout);
101     return connection.getResponseCode() == 200;
102   }
103
104 }