Mercurial > repos > shellac > guppy_basecaller
diff env/lib/python3.7/site-packages/schema_salad/java/main_utils/Uris.java @ 0:26e78fe6e8c4 draft
"planemo upload commit c699937486c35866861690329de38ec1a5d9f783"
author | shellac |
---|---|
date | Sat, 02 May 2020 07:14:21 -0400 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/env/lib/python3.7/site-packages/schema_salad/java/main_utils/Uris.java Sat May 02 07:14:21 2020 -0400 @@ -0,0 +1,118 @@ +package ${package}.utils; + +import java.io.UnsupportedEncodingException; +import java.net.URI; +import java.net.URISyntaxException; +import java.nio.charset.StandardCharsets; + +public class Uris { + + // Emulate Python's urlsplit. + public static class UriSplit { + String scheme; + String netloc; + String path; + String query; + String fragment; + + public UriSplit(String scheme, String netloc, String path, String query, String fragment) { + this.scheme = scheme; + this.netloc = netloc; + this.path = path; + this.query = query; + this.fragment = fragment; + } + + public String toString() { + return String.format( + "UriSplit[%s,%s,%s,%s,%s]", + this.scheme, this.netloc, this.path, this.query, this.fragment); + } + + } + + public static String fileUri(final String path) { + return fileUri(path, false); + } + + public static String fileUri(final String path, final boolean splitFrag) { + if (path.equals("file://")) { + return path; + } + String frag; + String urlPath; + if (splitFrag) { + final String[] pathsp = path.split("#", 2); + // is quoting this? + urlPath = Uris.quote(pathsp[0]); + if (pathsp.length == 2) { + frag = "#" + Uris.quote(pathsp[1]); + } else { + frag = ""; + urlPath = Uris.quote(path); + } + } else { + urlPath = Uris.quote(path); + frag = ""; + } + if (urlPath.startsWith("//")) { + return "file:" + urlPath + frag; + } else { + return "file://" + urlPath + frag; + } + } + + public static UriSplit split(final String uriString) { + try { + final URI uri = new URI(uriString); + return new Uris.UriSplit(uri.getScheme(), uri.getAuthority(), uri.getPath(), uri.getQuery(), uri.getFragment()); + } catch (URISyntaxException e) { + return new Uris.UriSplit(null, null, uriString, null, null); + } + } + + public static String unsplit( + final String scheme, + final String netloc, + final String path, + final String query, + final String fragment + ) { + try { + return new URI(scheme, netloc, path, query, fragment).toString(); + } catch (URISyntaxException e) { + if (scheme == null && path.startsWith("_:")) { + String uri = path; + if(fragment != null && fragment.length() > 0) { + uri += "#" + fragment; + } + return fragment; + } + throw new RuntimeException(e); + } + } + + public static URI toUri(final String url) { + try { + return new URI(url); + } catch (URISyntaxException e) { + throw new RuntimeException(e); + } + } + + public static String quote(final String uri) { + try { + return java.net.URLDecoder.decode(uri, StandardCharsets.UTF_8.name()); + } catch (UnsupportedEncodingException e) { + throw new RuntimeException(e); + } + } + + public static String unquote(final String uri) { + try { + return java.net.URLEncoder.encode(uri, StandardCharsets.UTF_8.name()); + } catch (UnsupportedEncodingException e) { + throw new RuntimeException(e); + } + } +}