public String encodePath(String path) { return Utf8UrlEncoder.encodePath(path); }
protected String withQueryWithoutParams(final String query) { // encode query StringBuilder sb = StringBuilderPool.DEFAULT.stringBuilder(); encodeAndAppendQuery(sb, query); return sb.toString(); }
public static StringBuilder encodeAndAppendQuery(StringBuilder sb, String query) { return appendEncoded(sb, query, BUILT_QUERY_UNTOUCHED_CHARS, false); }
private static StringBuilder appendEncoded(StringBuilder sb, CharSequence input, BitSet dontNeedEncoding, boolean encodeSpaceAsPlus) { int c; for (int i = 0; i < input.length(); i += Character.charCount(c)) { c = Character.codePointAt(input, i); if (c <= 127) { if (dontNeedEncoding.get(c)) { sb.append((char) c); } else { appendSingleByteEncoded(sb, c, encodeSpaceAsPlus); } } else { appendMultiByteEncoded(sb, c); } } return sb; }
private static StringBuilder lazyAppendEncoded(StringBuilder sb, CharSequence input, BitSet dontNeedEncoding, boolean encodeSpaceAsPlus) { int c; for (int i = 0; i < input.length(); i += Character.charCount(c)) { c = Character.codePointAt(input, i); if (c <= 127) { if (dontNeedEncoding.get(c)) { if (sb != null) { sb.append((char) c); } } else { if (sb == null) { sb = lazyInitStringBuilder(input, i); } appendSingleByteEncoded(sb, c, encodeSpaceAsPlus); } } else { if (sb == null) { sb = lazyInitStringBuilder(input, i); } appendMultiByteEncoded(sb, c); } } return sb; }
static String createUrl(final String rewriteScheme, final String rewriteHost, final int rewritePort, final String rewriteRequestURI, final String rewriteQueryString) { final StringBuilder append = new StringBuilder(rewriteScheme + "://" + rewriteHost + (rewritePort > 0 ? ":" + rewritePort : "")) .append(rewriteRequestURI == null ? "" : encodePath(rewriteRequestURI)); if (rewriteQueryString != null) { return encodeAndAppendQuery(append.append('?'), rewriteQueryString).toString(); } return append.toString(); } }
private void encodeAndAppendQueryParam(final StringBuilder sb, final CharSequence name, final CharSequence value) { Utf8UrlEncoder.encodeAndAppendQueryElement(sb, name); if (value != null) { sb.append('='); Utf8UrlEncoder.encodeAndAppendQueryElement(sb, value); } sb.append('&'); }
public RequestToken(String key, String token) { this.key = key; this.secret = token; this.percentEncodedKey = Utf8UrlEncoder.percentEncodeQueryElement(key); }
@Test public void testBasics() { assertEquals(Utf8UrlEncoder.encodeQueryElement("foobar"), "foobar"); assertEquals(Utf8UrlEncoder.encodeQueryElement("a&b"), "a%26b"); assertEquals(Utf8UrlEncoder.encodeQueryElement("a+b"), "a%2Bb"); }
private static void encodeAndAppendFormField(StringBuilder sb, String field, Charset charset) { if (charset.equals(UTF_8)) { Utf8UrlEncoder.encodeAndAppendFormElement(sb, field); } else { try { // TODO there's probably room for perf improvements sb.append(URLEncoder.encode(field, charset.name())); } catch (UnsupportedEncodingException e) { // can't happen, as Charset was already resolved } } }
private static void appendMultiByteEncoded(StringBuilder sb, int value) { if (value < 0x800) { appendSingleByteEncoded(sb, (0xc0 | (value >> 6)), false); appendSingleByteEncoded(sb, (0x80 | (value & 0x3f)), false); } else if (value < 0x10000) { appendSingleByteEncoded(sb, (0xe0 | (value >> 12)), false); appendSingleByteEncoded(sb, (0x80 | ((value >> 6) & 0x3f)), false); appendSingleByteEncoded(sb, (0x80 | (value & 0x3f)), false); } else { appendSingleByteEncoded(sb, (0xf0 | (value >> 18)), false); appendSingleByteEncoded(sb, (0x80 | (value >> 12) & 0x3f), false); appendSingleByteEncoded(sb, (0x80 | (value >> 6) & 0x3f), false); appendSingleByteEncoded(sb, (0x80 | (value & 0x3f)), false); } } }
public static String encodeQueryElement(String input) { StringBuilder sb = new StringBuilder(input.length() + 6); encodeAndAppendQueryElement(sb, input); return sb.toString(); }
private static StringBuilder appendEncoded(StringBuilder sb, CharSequence input, BitSet dontNeedEncoding, boolean encodeSpaceAsPlus) { int c; for (int i = 0; i < input.length(); i+= Character.charCount(c)) { c = Character.codePointAt(input, i); if (c <= 127) if (dontNeedEncoding.get(c)) sb.append((char) c); else appendSingleByteEncoded(sb, c, encodeSpaceAsPlus); else appendMultiByteEncoded(sb, c); } return sb; }
public ConsumerKey(String key, String secret) { this.key = key; this.secret = secret; this.percentEncodedKey = Utf8UrlEncoder.percentEncodeQueryElement(key); }
allParameters.add(KEY_OAUTH_CONSUMER_KEY, Utf8UrlEncoder.encodeQueryElement(consumerAuth.getKey())); allParameters.add(KEY_OAUTH_NONCE, Utf8UrlEncoder.encodeQueryElement(nonce)); allParameters.add(KEY_OAUTH_SIGNATURE_METHOD, OAUTH_SIGNATURE_METHOD); allParameters.add(KEY_OAUTH_TIMESTAMP, String.valueOf(oauthTimestamp)); if (userAuth.getKey() != null) { allParameters.add(KEY_OAUTH_TOKEN, Utf8UrlEncoder.encodeQueryElement(userAuth.getKey())); for (Param param : formParams) { allParameters.add(Utf8UrlEncoder.encodeQueryElement(param.getName()), Utf8UrlEncoder.encodeQueryElement(param.getValue()));
private static void encodeAndAppendFormParam(final StringBuilder sb, final CharSequence name, final CharSequence value) { Utf8UrlEncoder.encodeAndAppendFormElement(sb, name); if (value != null) { sb.append('='); Utf8UrlEncoder.encodeAndAppendFormElement(sb, value); } sb.append('&'); }
private final static void appendMultiByteEncoded(StringBuilder sb, int value) { if (value < 0x800) { appendSingleByteEncoded(sb, (0xc0 | (value >> 6)), false); appendSingleByteEncoded(sb, (0x80 | (value & 0x3f)), false); } else if (value < 0x10000) { appendSingleByteEncoded(sb, (0xe0 | (value >> 12)), false); appendSingleByteEncoded(sb, (0x80 | ((value >> 6) & 0x3f)), false); appendSingleByteEncoded(sb, (0x80 | (value & 0x3f)), false); } else { appendSingleByteEncoded(sb, (0xf0 | (value >> 18)), false); appendSingleByteEncoded(sb, (0x80 | (value >> 12) & 0x3f), false); appendSingleByteEncoded(sb, (0x80 | (value >> 6) & 0x3f), false); appendSingleByteEncoded(sb, (0x80 | (value & 0x3f)), false); } } }
public String encodePath(String path) { return Utf8UrlEncoder.encodePath(path); }
protected String withQueryWithParams(final String query, final List<Param> queryParams) { // concatenate encoded query + encoded query params StringBuilder sb = StringBuilderPool.DEFAULT.stringBuilder(); encodeAndAppendQuery(sb, query); sb.append('&'); encodeAndAppendQueryParams(sb, queryParams); sb.setLength(sb.length() - 1); return sb.toString(); }
private byte[] digest(ConsumerKey consumerAuth, RequestToken userAuth, ByteBuffer message) throws InvalidKeyException { StringBuilder sb = StringBuilderPool.DEFAULT.stringBuilder(); Utf8UrlEncoder.encodeAndAppendQueryElement(sb, consumerAuth.getSecret()); sb.append('&'); if (userAuth != null && userAuth.getSecret() != null) { Utf8UrlEncoder.encodeAndAppendQueryElement(sb, userAuth.getSecret()); } byte[] keyBytes = StringUtils.charSequence2Bytes(sb, UTF_8); SecretKeySpec signingKey = new SecretKeySpec(keyBytes, HMAC_SHA1_ALGORITHM); mac.init(signingKey); mac.reset(); mac.update(message); return mac.doFinal(); }