Refine search
private String path(final String resource, final Object... params) { final String path; final Escaper escaper = UrlEscapers.urlPathSegmentEscaper(); if (params.length == 0) { path = resource; } else { final List<String> encodedParams = Lists.newArrayList(); for (final Object param : params) { encodedParams.add(escaper.escape(param.toString())); } path = format(resource, encodedParams.toArray()); } return path; }
public static String self(String searchTerm) { return StrSubstitutor.replace(BASE + "?q=${searchTerm}", of("searchTerm", UrlEscapers.urlFormParameterEscaper().escape(searchTerm))); }
/** Convenience method: replaces spaces with "%20", builds a URI, and calls getPath(uri). */ public CloudStoragePath getPath(String uriInStringForm) { String escaped = UrlEscapers.urlFragmentEscaper().escape(uriInStringForm); return getPath(URI.create(escaped)); }
private void xss(final Env env) { Escaper ufe = UrlEscapers.urlFragmentEscaper(); Escaper fpe = UrlEscapers.urlFormParameterEscaper(); Escaper pse = UrlEscapers.urlPathSegmentEscaper(); Escaper html = HtmlEscapers.htmlEscaper(); env.xss("urlFragment", ufe::escape) .xss("formParam", fpe::escape) .xss("pathSegment", pse::escape) .xss("html", html::escape); }
@Override public String[] transform(final InputRow inputRow) { final String value = inputRow.getValue(column); if (value == null) { return new String[1]; } final Escaper escaper; switch (targetFormat) { case FORM_PARAMETER: escaper = UrlEscapers.urlFormParameterEscaper(); break; case FRAGMENT: escaper = UrlEscapers.urlFragmentEscaper(); break; case PATH_SEGMENT: escaper = UrlEscapers.urlPathSegmentEscaper(); break; default: throw new UnsupportedOperationException(); } final String escaped = escaper.escape(value); return new String[] { escaped }; }
public static String computePath(Archive container, String fileName) { if (container != null) { int endIndex = fileName.endsWith("/") ? fileName.length() - 1 : fileName.length(); String path = fileName.substring(container.fileName.length(), endIndex); return container.nestedPath + UrlEscapers.urlFragmentEscaper().escape(path); } else { checkArgument(fileName.startsWith("./"), "invalid BDIO 1.x fileName (must start with './'): %s", fileName); return "file:///" + Joiner.on('/').join(Iterables.transform( Splitter.on('/').omitEmptyStrings().split(fileName.substring(2)), UrlEscapers.urlPathSegmentEscaper().asFunction())); } } }
/** * Returns this HID as a URI string useful for serialization. */ public String toUriString() { StringBuilder buffer = new StringBuilder(128).append(schemes[0]).append("://").append(authorities[0]).append('/'); String result = PATH_JOINER.appendTo(buffer, Stream.of(segments[0]).map(UrlEscapers.urlPathSegmentEscaper()::escape).iterator()).toString(); for (int i = 1; i < segments.length; ++i) { buffer.setLength(0); result = buffer.append(schemes[i]).append(':') .append(UrlEscapers.urlPathSegmentEscaper().escape(result)) .append("#/") .append(UrlEscapers.urlFragmentEscaper().escape(PATH_JOINER.join(segments[i]))) .toString(); } return result; }
public void testUrlFormParameterEscaper() { UnicodeEscaper e = (UnicodeEscaper) urlFormParameterEscaper(); // Verify that these are the same escaper (as documented) assertSame(e, urlFormParameterEscaper()); assertBasicUrlEscaper(e); /* * Specified as safe by RFC 2396 but not by java.net.URLEncoder. These tests will start failing * when the escaper is made compliant with RFC 2396, but that's a good thing (just change them * to assertUnescaped). */ assertEscaping(e, "%21", '!'); assertEscaping(e, "%28", '('); assertEscaping(e, "%29", ')'); assertEscaping(e, "%7E", '~'); assertEscaping(e, "%27", '\''); // Plus for spaces assertEscaping(e, "+", ' '); assertEscaping(e, "%2B", '+'); assertEquals("safe+with+spaces", e.escape("safe with spaces")); assertEquals("foo%40bar.com", e.escape("foo@bar.com")); }
public void testUrlPathSegmentEscaper() { UnicodeEscaper e = (UnicodeEscaper) urlPathSegmentEscaper(); assertPathEscaper(e); assertUnescaped(e, '+'); }
@SuppressWarnings("unchecked") @Override public <R extends HttpRequest> R bindToRequest(R request, Object input) { String encodedAndNewlineDelimited = Joiner.on('\n').join( transform(Iterable.class.cast(input), urlFragmentEscaper().asFunction())); Payload payload = Payloads.newStringPayload(encodedAndNewlineDelimited); payload.getContentMetadata().setContentType(TEXT_PLAIN); return (R) request.toBuilder().payload(payload).build(); } }
public void testUrlFragmentEscaper() { UnicodeEscaper e = (UnicodeEscaper) urlFragmentEscaper(); assertUnescaped(e, '+'); assertUnescaped(e, '/'); assertUnescaped(e, '?'); assertPathEscaper(e); } }
@Override public String[] transform(final InputRow inputRow) { final String value = inputRow.getValue(column); if (value == null) { return new String[1]; } final Escaper escaper; switch (targetFormat) { case FORM_PARAMETER: escaper = UrlEscapers.urlFormParameterEscaper(); break; case FRAGMENT: escaper = UrlEscapers.urlFragmentEscaper(); break; case PATH_SEGMENT: escaper = UrlEscapers.urlPathSegmentEscaper(); break; default: throw new UnsupportedOperationException(); } final String escaped = escaper.escape(value); return new String[] { escaped }; }
/** Constructor. */ public TemplatedURLBuilder() { paramEscaper = UrlEscapers.urlFormParameterEscaper(); fragmentEscaper = UrlEscapers.urlFragmentEscaper(); pathEscaper = UrlEscapers.urlPathSegmentEscaper(); }
/** Constructor. */ public ServletRequestScopedStorageService() { cookieName = DEFAULT_COOKIE_NAME; capabilitySize = 4096; escaper = UrlEscapers.urlFormParameterEscaper(); }
public void testUrlPathSegmentEscaper() { UnicodeEscaper e = (UnicodeEscaper) urlPathSegmentEscaper(); assertPathEscaper(e); assertUnescaped(e, '+'); }
@SuppressWarnings("unchecked") @Override public <R extends HttpRequest> R bindToRequest(R request, Object input) { String encodedAndNewlineDelimited = Joiner.on('\n').join( transform(Iterable.class.cast(input), urlFragmentEscaper().asFunction())); Payload payload = Payloads.newStringPayload(encodedAndNewlineDelimited); payload.getContentMetadata().setContentType(TEXT_PLAIN); return (R) request.toBuilder().payload(payload).build(); } }
public void testUrlFragmentEscaper() { UnicodeEscaper e = (UnicodeEscaper) urlFragmentEscaper(); assertUnescaped(e, '+'); assertUnescaped(e, '/'); assertUnescaped(e, '?'); assertPathEscaper(e); } }
private String generateParamsUrl(Map<String, String> paramsMap) { StringBuilder paramsUrl = new StringBuilder(); for (Map.Entry<String, String> entry : paramsMap.entrySet()) { String val = entry.getValue(); if (paramsUrl.length() > 0) { paramsUrl.append("&"); } paramsUrl.append(entry.getKey()) .append("=") .append(UrlEscapers.urlPathSegmentEscaper().escape(val)); } return paramsUrl.toString(); }
@Description("escape a string for use in URL query parameter names and values") @ScalarFunction @LiteralParameters({"x", "y"}) @Constraint(variable = "y", expression = "min(2147483647, x * 12)") @SqlType("varchar(y)") public static Slice urlEncode(@SqlType("varchar(x)") Slice value) { Escaper escaper = UrlEscapers.urlFormParameterEscaper(); return slice(escaper.escape(value.toStringUtf8())); }
/** * Escape the path using {@link UrlEscapers#urlFragmentEscaper()}. * * Given: * * <pre>{@code * http://domain.com/404<h1>X</h1> {@literal ->} /404%3Ch1%3EX%3C/h1%3E * }</pre> * * @param escape True if we want to escape this path. * @return The request URL pathname. */ @Nonnull default String path(final boolean escape) { String path = route().path(); return escape ? UrlEscapers.urlFragmentEscaper().escape(path) : path; }