001package com.box.sdk;
002
003import java.net.MalformedURLException;
004import java.net.URL;
005
006/**
007 * A template class to build URLs from base URL, path, URL parameters and Query String.
008 */
009public class URLTemplate {
010    private String template;
011
012    /**
013     * Construct an URL Template object from path.
014     * @param template path
015     */
016    public URLTemplate(String template) {
017        this.template = template;
018    }
019
020    /**
021     * Build a URL with URL Parameters.
022     * @param base base URL
023     * @param values URL parameters
024     * @return URL
025     */
026    public URL build(String base, Object... values) {
027        String urlString = String.format(base + this.template, values);
028
029        URL url = null;
030        try {
031            url = new URL(urlString);
032        } catch (MalformedURLException e) {
033            assert false : "An invalid URL template indicates a bug in the SDK.";
034        }
035
036        return url;
037    }
038
039    /**
040     * Build a URL with Query String and URL Parameters.
041     * @param base base URL
042     * @param queryString query string
043     * @param values URL Parameters
044     * @return URL
045     */
046    public URL buildWithQuery(String base, String queryString, Object... values) {
047        String urlString = String.format(base + this.template, values) + queryString;
048        URL url = null;
049        try {
050            url = new URL(urlString);
051        } catch (MalformedURLException e) {
052            assert false : "An invalid URL template indicates a bug in the SDK.";
053        }
054
055        return url;
056    }
057}