From: <bra...@us...> - 2008-11-07 22:34:04
|
Revision: 2637 http://archive-access.svn.sourceforge.net/archive-access/?rev=2637&view=rev Author: bradtofel Date: 2008-11-07 22:34:00 +0000 (Fri, 07 Nov 2008) Log Message: ----------- FEATURE: added static methods urlToScheme() and getSchemeDefaultPort() Modified Paths: -------------- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/util/url/UrlOperations.java trunk/archive-access/projects/wayback/wayback-core/src/test/java/org/archive/wayback/util/url/UrlOperationsTest.java Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/util/url/UrlOperations.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/util/url/UrlOperations.java 2008-11-07 22:31:42 UTC (rev 2636) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/util/url/UrlOperations.java 2008-11-07 22:34:00 UTC (rev 2637) @@ -81,15 +81,16 @@ * @return url resolved against baseUrl, unless it is absolute already */ public static String resolveUrl(String baseUrl, String url) { - // TODO: this only works for http:// - if(url.startsWith("http://")) { - try { - return UURIFactory.getInstance(url).getEscapedURI(); - } catch (URIException e) { - e.printStackTrace(); - // can't let a space exist... send back close to whatever came - // in... - return url.replace(" ", "%20"); + for(final String scheme : ALL_SCHEMES) { + if(url.startsWith(scheme)) { + try { + return UURIFactory.getInstance(url).getEscapedURI(); + } catch (URIException e) { + e.printStackTrace(); + // can't let a space exist... send back close to whatever came + // in... + return url.replace(" ", "%20"); + } } } UURI absBaseURI; @@ -99,11 +100,39 @@ resolvedURI = UURIFactory.getInstance(absBaseURI, url); } catch (URIException e) { e.printStackTrace(); - return url; + return url.replace(" ", "%20"); } return resolvedURI.getEscapedURI(); } + public static String urlToScheme(final String url) { + for(final String scheme : ALL_SCHEMES) { + if(url.startsWith(scheme)) { + return scheme; + } + } + return null; + } + + public static int schemeToDefaultPort(final String scheme) { + if(scheme.equals(HTTP_SCHEME)) { + return 80; + } + if(scheme.equals(HTTPS_SCHEME)) { + return 443; + } + if(scheme.equals(FTP_SCHEME)) { + return 21; + } + if(scheme.equals(RTSP_SCHEME)) { + return 554; + } + if(scheme.equals(MMS_SCHEME)) { + return 1755; + } + return -1; + } + public static String urlToHost(String url) { if(url.startsWith("dns:")) { return url.substring(4); Modified: trunk/archive-access/projects/wayback/wayback-core/src/test/java/org/archive/wayback/util/url/UrlOperationsTest.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/test/java/org/archive/wayback/util/url/UrlOperationsTest.java 2008-11-07 22:31:42 UTC (rev 2636) +++ trunk/archive-access/projects/wayback/wayback-core/src/test/java/org/archive/wayback/util/url/UrlOperationsTest.java 2008-11-07 22:34:00 UTC (rev 2637) @@ -62,7 +62,33 @@ assertEquals("foo.com",UrlOperations.urlToHost("http://foo.com/path:/")); assertEquals("foo.com",UrlOperations.urlToHost("https://foo.com/path:/")); assertEquals("foo.com",UrlOperations.urlToHost("ftp://foo.com/path:/")); + } + + public void testResolveUrl() { + for(String scheme : UrlOperations.ALL_SCHEMES) { + + assertEquals(scheme + "a.org/1/2", + UrlOperations.resolveUrl(scheme + "a.org/3/","/1/2")); + + assertEquals(scheme + "b.org/1/2", + UrlOperations.resolveUrl(scheme + "a.org/3/", + scheme + "b.org/1/2")); + + assertEquals(scheme + "a.org/3/1/2", + UrlOperations.resolveUrl(scheme + "a.org/3/","1/2")); + + assertEquals(scheme + "a.org/1/2", + UrlOperations.resolveUrl(scheme + "a.org/3","1/2")); + } } + public void testUrlToScheme() { + assertEquals("http://",UrlOperations.urlToScheme("http://a.com/")); + assertEquals("https://",UrlOperations.urlToScheme("https://a.com/")); + assertEquals("ftp://",UrlOperations.urlToScheme("ftp://a.com/")); + assertEquals("rtsp://",UrlOperations.urlToScheme("rtsp://a.com/")); + assertEquals("mms://",UrlOperations.urlToScheme("mms://a.com/")); + assertNull(UrlOperations.urlToScheme("blah://a.com/")); + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |