/** * */ package com.trendrr.oss.strest; import java.util.Map; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import com.trendrr.oss.DynMap; import com.trendrr.oss.strest.models.StrestHeader; import com.trendrr.oss.strest.models.StrestRequest; import com.trendrr.oss.strest.models.StrestHeader.TxnAccept; import com.trendrr.oss.strest.models.json.StrestJsonRequest; /** * @author Dustin Norlander * @created Jan 26, 2011 * */ public class RequestBuilder { protected static Log log = LogFactory.getLog(RequestBuilder.class); StrestRequest request; public static void main(String...strings) { } public static RequestBuilder instance() { return new RequestBuilder(); } public static RequestBuilder instance(StrestRequest request) { return new RequestBuilder(request); } public RequestBuilder() { this(null); } public RequestBuilder(StrestRequest request) { if (request == null) { this.request = new StrestJsonRequest(); } else { this.request = request; } } public RequestBuilder uri(String uri) { request.setUri(uri); return this; } public RequestBuilder params(Map params) { request.setParams(DynMap.instance(params)); return this; } /** * adds params to the uri. * @param params * @return */ public RequestBuilder paramsGET(DynMap params) { String encodedParams = params.toURLString(); if (encodedParams == null || encodedParams.isEmpty()) { return this; } String uri = request.getUri(); if (!uri.contains("?")) { uri = uri + "?"; } else { uri = uri + "&"; } request.setUri(uri + encodedParams); return this; } // /** // * adds params to the content section and sets the Content-Type to // * // * @param params // * @return // */ // public RequestBuilder paramsPOST(DynMap params) { // String encodedParams = params.toURLString(); // log.info(encodedParams); // if (encodedParams == null || encodedParams.isEmpty()) { // return this; // } // return this.contentUTF8("application/x-www-form-urlencoded", encodedParams); // } // // /** // * Adds params to content section as json string, with mime type set to json // * @param params // * @return // */ // public RequestBuilder paramsJSONPOST(DynMap params){ // String json = params.toJSONString(); // log.info(json); // if(json == null || json.isEmpty()){ // return this; // } // return this.contentUTF8("application/json", json); // } // // /** // * encodes the text as utf8 and swallows and logs a warning for any character encoding exceptions // * @param mimeType // * @param content // * @return // */ // public RequestBuilder contentUTF8(String mimeType, String content) { // try { // this.content(mimeType, content.getBytes("utf8")); // } catch (UnsupportedEncodingException e) { // log.warn("Swallowed", e); // } // return this; // } /** * sets a custom transaction Id. a unique txn id is * already set, so this call is not manditory. * @param id * @return */ public RequestBuilder txnId(String id) { request.setTxnId(id); return this; } /** * what kind of transactions to accept. * * 'single' or multi * * @param val * @return */ public RequestBuilder txnAccept(String val) { request.setTxnAccept(TxnAccept.instance(val)); return this; } public RequestBuilder method(String method) { request.setMethod(StrestHeader.Method.instance(method)); return this; } // public RequestBuilder header(String header, String value) { // request.addHeader(header, value); // return this; // } public StrestRequest getRequest() { return this.request; } }