All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.mastfrog.webapi.builtin.Parameters Maven / Gradle / Ivy

package com.mastfrog.webapi.builtin;

import com.google.common.collect.Maps;
import com.mastfrog.netty.http.client.HttpRequestBuilder;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Tim Boudreau
 */
public class Parameters {

    private final Map, String> pairs = Maps.newHashMap();
    private final Map adhoc = Maps.newHashMap();

    public static Parameters create(String name, String value) {
        return new Parameters().add(name, value);
    }

    public static Parameters create(String name, long value) {
        return new Parameters().add(name, value + "");
    }

    public static Parameters create(Enum name, long value) {
        return new Parameters().add(name, value);
    }

    public static Parameters create(Enum name, String value) {
        return new Parameters().add(name, value);
    }

    public Parameters add(String name, String value) {
        adhoc.put(name, value);
        return this;
    }

    public Parameters add(Enum name, long value) {
        pairs.put(name, Long.toString(value));
        return this;
    }

    public Parameters add(Enum name, String value) {
        pairs.put(name, value);
        return this;
    }

    public void populate(HttpRequestBuilder b) {
        for (Map.Entry, String> e : pairs.entrySet()) {
            b.addQueryPair(e.getKey().toString(), e.getValue());
        }
        for (Map.Entry e : adhoc.entrySet()) {
            b.addQueryPair(e.getKey().toString(), e.getValue());
        }
    }

    public void populate(StringBuilder sb) {
        boolean first = sb.indexOf("?") < 0;
        try {
            for (Map.Entry, String> e : pairs.entrySet()) {
                sb.append(first ? '?' : '&');
                first = false;
                sb.append(e.getKey()).append('=').append(URLEncoder.encode(e.getValue(), "UTF-8"));
            }
            for (Map.Entry e : adhoc.entrySet()) {
                sb.append(first ? '?' : '&');
                first = false;
                sb.append(e.getKey()).append('=').append(URLEncoder.encode(e.getValue(), "UTF-8"));
            }
        } catch (UnsupportedEncodingException ex) {
            Logger.getLogger(Parameters.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy