@Override public String toString() { if (!encoded) { return Strings2.urlEncode(value.toString(), skipChars); } return value.toString(); }
@Override void append(Object in) { super.append(urlEncode(in.toString(), skips)); } }
@Override void append(Object in) { super.append(urlEncode(in.toString(), skips)); } }
/** * Web browsers do not always handle '+' characters well, use the well-supported '%20' instead. */ public static String urlEncode(String in, char... skipEncode) { return urlEncode(in, Chars.asList(skipEncode)); }
/** * Web browsers do not always handle '+' characters well, use the well-supported '%20' instead. */ public static String urlEncode(String in, char... skipEncode) { return urlEncode(in, Chars.asList(skipEncode)); }
/** * Web browsers do not always handle '+' characters well, use the well-supported '%20' instead. */ public static String urlEncode(String in, char... skipEncode) { return urlEncode(in, Chars.asList(skipEncode)); }
/** * Checks whether an accessible object is available. Google cloud storage does not support directly support * BucketExist or ObjectExist operations */ @Override public boolean blobExists(String container, String name) { return api.getObjectApi().objectExists(container, Strings2.urlEncode(name)); }
/** * Checks whether an accessible object is available. Google cloud storage does not support directly support * BucketExist or ObjectExist operations */ @Override public boolean blobExists(String container, String name) { return api.getObjectApi().objectExists(container, Strings2.urlEncode(name)); }
@VisibleForTesting public String createStringToSign(HttpRequest request, Multimap<String, String> decodedParams) { utils.logRequest(signatureLog, request, ">>"); // encode each parameter value first, ImmutableSortedSet.Builder<String> builder = ImmutableSortedSet.naturalOrder(); for (Map.Entry<String, String> entry : decodedParams.entries()) builder.add(entry.getKey() + "=" + Strings2.urlEncode(entry.getValue())); // then, lower case the entire query string String stringToSign = Joiner.on('&').join(builder.build()).toLowerCase(); if (signatureWire.enabled()) signatureWire.output(stringToSign); return stringToSign; }
private void addQuery(Multimap<String, Object> queryParams, QueryParams query, Multimap<String, ?> tokenValues) { for (int i = 0; i < query.keys().length; i++) { String key = urlEncode(query.keys()[i], '/', ','); if (query.values()[i].equals(QueryParams.NULL)) { queryParams.removeAll(key); queryParams.put(key, null); } else { queryParams.put(key, new QueryValue(replaceTokens(query.values()[i], tokenValues), false)); } } }
private void addQuery(Multimap<String, Object> queryParams, QueryParams query, Multimap<String, ?> tokenValues) { for (int i = 0; i < query.keys().length; i++) { String key = urlEncode(query.keys()[i], '/', ','); if (query.values()[i].equals(QueryParams.NULL)) { queryParams.removeAll(key); queryParams.put(key, null); } else { queryParams.put(key, new QueryValue(replaceTokens(query.values()[i], tokenValues), false)); } } }
@Test public void testParseQueryEncodedWithDefaultJavaEncoder() { String key = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCc903twxU2zcQnIJdXv61RwZNZW94uId9qz08fgsBJsCOnHNIC4+L9k" + "DOA2IHV9cUfEDBm1Be5TbpadWwSbS/05E+FARH2/MCO932UgcKUq5PGymS0249fLCBPci5zoLiG5vIym+1ij1hL/nHvkK99NIwe7io+Lmp" + "9OcF3PTsm3Rgh5T09cRHGX9horp0VoAVa9vKJx6C1/IEHVnG8p0YPPa1lmemvx5kNBEiyoNQNYa34EiFkcJfP6rqNgvY8h/j4nE9SXoUCC" + "/g6frhMFMOL0tzYqvz0Lczqm1Oh4RnSn3O9X4R934p28qqAobe337hmlLUdb6H5zuf+NwCh0HdZ"; Set<String> expected = ImmutableSet.of(key); Multimap<String, String> parsedMap = queryParser().apply("a=1&b=1+2&publickey=" + Strings2.urlEncode(key)); assertEquals(parsedMap.get("publickey"), expected); parsedMap = queryParser().apply("publickey=" + Strings2.urlEncode(key)); assertEquals(parsedMap.get("publickey"), expected); }
@Override public BlobAccess getBlobAccess(String container, String name) { ObjectAccessControls controls = api.getObjectAccessControlsApi().getObjectAccessControls(container, Strings2.urlEncode(name), "allUsers"); if (controls != null && controls.role() == DomainResourceReferences.ObjectRole.READER) { return BlobAccess.PUBLIC_READ; } else { return BlobAccess.PRIVATE; } }
@Override public BlobAccess getBlobAccess(String container, String name) { ObjectAccessControls controls = api.getObjectAccessControlsApi().getObjectAccessControls(container, Strings2.urlEncode(name), "allUsers"); if (controls != null && controls.role() == DomainResourceReferences.ObjectRole.READER) { return BlobAccess.PUBLIC_READ; } else { return BlobAccess.PRIVATE; } }
public void testUrlEncodeDecodeShouldGiveTheSameString() { String actual = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCc903twxU2zcQnIJdXv61RwZNZW94uId9qz08fgsBJsCOnHNIC4+L9k" + "DOA2IHV9cUfEDBm1Be5TbpadWwSbS/05E+FARH2/MCO932UgcKUq5PGymS0249fLCBPci5zoLiG5vIym+1ij1hL/nHvkK99NIwe7io+Lmp" + "9OcF3PTsm3Rgh5T09cRHGX9horp0VoAVa9vKJx6C1/IEHVnG8p0YPPa1lmemvx5kNBEiyoNQNYa34EiFkcJfP6rqNgvY8h/j4nE9SXoUCC" + "/g6frhMFMOL0tzYqvz0Lczqm1Oh4RnSn3O9X4R934p28qqAobe337hmlLUdb6H5zuf+NwCh0HdZ"; assertEquals(actual, urlDecode(urlEncode(actual))); }
private static void addHeader(Multimap<String, String> headers, Headers header, Multimap<String, ?> tokenValues) { for (int i = 0; i < header.keys().length; i++) { String value = header.values()[i]; value = replaceTokens(value, tokenValues); // urlEncode may have less entries than keys e.g. default value of {} if (i < header.urlEncode().length && header.urlEncode()[i]) value = urlEncode(value, '/'); headers.put(header.keys()[i], value); } }
public void testAddBase64AndUrlEncodedQueryParams() { String base64Chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; URI uri = URI.create("http://goo.com:443?header1=" + Strings2.urlEncode(base64Chars)); HttpRequest request = HttpRequest.builder() .method("GET") .endpoint(uri) .addQueryParam("header2", base64Chars) .build(); assertEquals( request.getRequestLine(), "GET http://goo.com:443?header1=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789%2B/%3D&header2=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789%2B/%3D HTTP/1.1"); }
@Test(dataProvider = "strings") public void testReplaceQueryIsEncoded(String key) { assertEquals(uriBuilder("/redirect").addQuery("foo", key).toString(), "/redirect?foo=" + key); assertEquals(uriBuilder("/redirect").addQuery("foo", key).build().toString(), "/redirect?foo=" + urlEncode(key, '/', ',')); }
public void delete_encoded() throws Exception { server.enqueue(new MockResponse()); // TODO: Should this be returning True on not found? assertTrue(objectApi().deleteObject("test", Strings2.urlEncode("dir/object name"))); assertSent(server, "DELETE", "/storage/v1/b/test/o/dir%2Fobject%20name", null); }