package info.guardianproject.browser; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.util.regex.Matcher; import java.util.regex.Pattern; public class OrwebUtil implements OrwebConstants { public static String smartUrlFilter(String url, boolean doJavascript) { String inUrl = url.trim(); boolean hasSpace = inUrl.indexOf(' ') != -1; Matcher matcher = ACCEPTED_URI_SCHEMA.matcher(inUrl); if (matcher.matches()) { if (hasSpace) { inUrl = inUrl.replace(" ", "%20"); } // force scheme to lowercase String scheme = matcher.group(1); String lcScheme = scheme.toLowerCase(); if (!lcScheme.equals(scheme)) { return lcScheme + matcher.group(2); } return inUrl; } else if (url.indexOf(' ') != -1 || url.indexOf('.') == -1) { try { if (doJavascript) url = DEFAULT_SEARCH_ENGINE + URLEncoder.encode(url, DEFAULT_CHARSET); else url = DEFAULT_SEARCH_ENGINE_NOJS + URLEncoder.encode(url, DEFAULT_CHARSET); } catch (UnsupportedEncodingException ue) { if (doJavascript) url = DEFAULT_SEARCH_ENGINE + url.replace(' ','+'); else url = DEFAULT_SEARCH_ENGINE_NOJS + url.replace(' ','+'); } return url; } else return "http://" + url; } }