org.craftercms.commons.rest.RestClientUtils Maven / Gradle / Ivy
/*
* Copyright (C) 2007-2014 Crafter Software Corporation.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
package org.craftercms.commons.rest;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import org.apache.commons.collections4.MapUtils;
import org.springframework.util.MultiValueMap;
/**
* Utilities for REST clients.
*
* @author avasquez
*/
public class RestClientUtils {
private RestClientUtils() {
}
/**
* Adds a param value to a params map. If value is null, nothing is done.
*
* @param key the param key
* @param value the param value
* @param params the params map
*/
public static void addValue(String key, Object value, MultiValueMap params) {
if (value != null) {
params.add(key, value.toString());
}
}
/**
* Adds a collection of param values to a params map. If the collection is null, nothing is done.
*
* @param key the param key
* @param values the collection of param values
* @param params the params map
*/
public static void addValues(String key, Collection values, MultiValueMap params) {
if (values != null) {
for (String value : values) {
params.add(key, value);
}
}
}
/**
* Adds an array of param values to a params map. If the array is null, nothing is done.
*
* @param key the param key
* @param values the array of param values
* @param params the params map
*/
public static void addValues(String key, String[] values, MultiValueMap params) {
if (values != null) {
for (String value : values) {
params.add(key, value);
}
}
}
/**
* Converts a map of params to a query string, and adds it to the specified URL.
*
* @param url the URL to add the params to
* @param params the params to convert to a query string and add to the URL
* @param encodeParams if the param values should be encoded
* @return the URL with the appended query string
*/
public static String addQueryParams(String url, MultiValueMap params, boolean encodeParams) {
return url + createQueryStringFromParams(params, encodeParams);
}
/**
* Converts a map of params to a query string.
*
* @param params the params to convert to a query string
* @param encode if the param values should be encoded
* @return the params as a query string
*/
public static String createQueryStringFromParams(MultiValueMap params, boolean encode) {
StringBuilder queryString = new StringBuilder();
if (MapUtils.isNotEmpty(params)) {
for (Map.Entry> entry : params.entrySet()) {
String paramName;
try {
paramName = URLEncoder.encode(entry.getKey(), "UTF-8");
} catch (UnsupportedEncodingException e) {
// Should NEVER happen
throw new RuntimeException(e);
}
for (String paramValue : entry.getValue()) {
if (queryString.length() > 0) {
queryString.append('&');
}
if (encode) {
try {
paramValue = URLEncoder.encode(paramValue, "UTF-8");
} catch (UnsupportedEncodingException e) {
// Should NEVER happen
throw new RuntimeException(e);
}
}
queryString.append(paramName).append('=').append(paramValue);
}
}
queryString.insert(0, '?');
}
return queryString.toString();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy