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}