package com.hkm.disqus.api.retrofitworker; import android.util.Log; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.util.HashMap; import java.util.Map; /** * build an encoded url string with params */ public class UrlParam { private String encodedUrl; private Map<String, String> paramMap; private UrlParam(Builder init) { this.paramMap = init.params; try { encodedUrl = init.baseUrl + buildParams(); } catch (UnsupportedEncodingException e) { Log.e("", "Error encoding url", e); } } public String getEncodedUrl() { return encodedUrl; } public String getValue(String param) { return paramMap.get(param); } private String buildParams() throws UnsupportedEncodingException { boolean isFirst = true; StringBuilder stringBuilder = new StringBuilder(); for (String key : paramMap.keySet()) { if (isFirst) { stringBuilder.append("?"); isFirst = false; } else { stringBuilder.append("&"); } stringBuilder.append(URLEncoder.encode(key, "UTF-8")); stringBuilder.append("="); stringBuilder.append(URLEncoder.encode(paramMap.get(key), "UTF-8")); } return stringBuilder.toString(); } public static class Builder { Map<String, String> params = new HashMap<>(); String baseUrl; public Builder(String baseUrl) { this.baseUrl = baseUrl; } public Builder addParam(String param, String value) { params.put(param, value); return this; } public UrlParam build() { return new UrlParam(this); } } }