From: Jim Procter Date: Tue, 28 Jul 2020 10:32:46 +0000 (+0100) Subject: JAL-2656 recognise non-HTTP URI input streams as gzipped by detecting the gzip magic... X-Git-Tag: Develop-2_11_2_0-d20201215~24^2~22^2~1 X-Git-Url: http://source.jalview.org/gitweb/?a=commitdiff_plain;ds=sidebyside;h=9c127c47a7bf73c3e538815635f525fe59f7faba;p=jalview.git JAL-2656 recognise non-HTTP URI input streams as gzipped by detecting the gzip magic header --- diff --git a/src/jalview/io/FileParse.java b/src/jalview/io/FileParse.java index 36f9290..d0b61e4 100755 --- a/src/jalview/io/FileParse.java +++ b/src/jalview/io/FileParse.java @@ -293,19 +293,35 @@ public class FileParse { errormessage = "URL NOT FOUND"; URL url = new URL(urlStr); - HttpURLConnection conn = (HttpURLConnection) url.openConnection(); - int rc = conn.getResponseCode(); - if (rc != HttpURLConnection.HTTP_OK) + URLConnection _conn = url.openConnection(); + if (_conn instanceof HttpURLConnection) { - throw new IOException( - "Response status from " + urlStr + " was " + rc); + HttpURLConnection conn = (HttpURLConnection) _conn; + int rc = conn.getResponseCode(); + if (rc != HttpURLConnection.HTTP_OK) + { + throw new IOException( + "Response status from " + urlStr + " was " + rc); + } + } else { + try { + dataIn = checkForGzipStream(_conn.getInputStream()); + dataName=urlStr; + } catch (IOException ex) + { + throw new IOException("Failed to handle non-HTTP URI stream",ex); + } catch (Exception ex) + { + throw new IOException("Failed to determine type of input stream for given URI",ex); + } + return; } - String encoding = conn.getContentEncoding(); - String contentType = conn.getContentType(); + String encoding = _conn.getContentEncoding(); + String contentType = _conn.getContentType(); boolean isgzipped = "application/x-gzip".equalsIgnoreCase(contentType) || "gzip".equals(encoding); Exception e = null; - InputStream inputStream = conn.getInputStream(); + InputStream inputStream = _conn.getInputStream(); if (isgzipped) { try