/* * Copyright (c) 2009-2016, b3log.org & hacpai.com * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.b3log.latke.servlet; import org.b3log.latke.Keys; import org.b3log.latke.servlet.renderer.AbstractHTTPResponseRenderer; import org.b3log.latke.servlet.renderer.JSONRenderer; import org.json.JSONObject; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * HTTP request context. * * @author <a href="http://88250.b3log.org">Liang Ding</a> * @version 1.2.0.0, Mar 5, 2017 */ public final class HTTPRequestContext { /** * Request. */ private HttpServletRequest request; /** * Response. */ private HttpServletResponse response; /** * Renderer. */ private AbstractHTTPResponseRenderer renderer; /** * Gets the renderer. * * @return renderer */ public AbstractHTTPResponseRenderer getRenderer() { return renderer; } /** * Sets the renderer with the specified renderer. * * @param renderer the specified renderer */ public void setRenderer(final AbstractHTTPResponseRenderer renderer) { this.renderer = renderer; } /** * Gets the request. * * @return request */ public HttpServletRequest getRequest() { return request; } /** * Sets the request with the specified request. * * @param request the specified request */ public void setRequest(final HttpServletRequest request) { this.request = request; } /** * Gets the response. * * @return response */ public HttpServletResponse getResponse() { return response; } /** * Sets the response with the specified response. * * @param response the specified response */ public void setResponse(final HttpServletResponse response) { this.response = response; } /** * Pretty rends with the specified json object. * * @param json the specified json object * @return this context */ public HTTPRequestContext renderJSONPretty(final JSONObject json) { final JSONRenderer jsonRenderer = new JSONRenderer(); jsonRenderer.setJSONObject(json); jsonRenderer.setPretty(true); this.renderer = jsonRenderer; return this; } /** * Renders using {@link JSONRenderer} with {"sc": false}. * * @return this context */ public HTTPRequestContext renderJSON() { final JSONRenderer jsonRenderer = new JSONRenderer(); final JSONObject ret = new JSONObject().put(Keys.STATUS_CODE, false); jsonRenderer.setJSONObject(ret); this.renderer = jsonRenderer; return this; } /** * Renders with the specified json object. * * @param json the specified json object * @return this context */ public HTTPRequestContext renderJSON(final JSONObject json) { final JSONRenderer jsonRenderer = new JSONRenderer(); jsonRenderer.setJSONObject(json); this.renderer = jsonRenderer; return this; } /** * Renders using {@link JSONRenderer} with {"sc": sc}. * * @param sc the specified sc * @return this context */ public HTTPRequestContext renderJSON(final boolean sc) { final JSONRenderer jsonRenderer = new JSONRenderer(); final JSONObject ret = new JSONObject().put(Keys.STATUS_CODE, sc); jsonRenderer.setJSONObject(ret); this.renderer = jsonRenderer; return this; } /** * Renders with {"sc": true}. * * @return this context */ public HTTPRequestContext renderTrueResult() { if (this.renderer instanceof JSONRenderer) { final JSONRenderer r = (JSONRenderer) this.renderer; final JSONObject ret = r.getJSONObject(); ret.put(Keys.STATUS_CODE, true); } return this; } /** * Renders with {"sc": false}. * * @return this context */ public HTTPRequestContext renderFalseResult() { if (this.renderer instanceof JSONRenderer) { final JSONRenderer r = (JSONRenderer) this.renderer; final JSONObject ret = r.getJSONObject(); ret.put(Keys.STATUS_CODE, false); } return this; } /** * Renders with {"msg": msg}. * * @param msg the specified msg * @return this context */ public HTTPRequestContext renderMsg(final String msg) { if (this.renderer instanceof JSONRenderer) { final JSONRenderer r = (JSONRenderer) this.renderer; final JSONObject ret = r.getJSONObject(); ret.put(Keys.MSG, msg); } return this; } /** * Renders with {"name", obj}. * * @param name the specified name * @param obj the specified object * @return this context */ public HTTPRequestContext renderJSONValue(final String name, final Object obj) { if (this.renderer instanceof JSONRenderer) { final JSONRenderer r = (JSONRenderer) this.renderer; final JSONObject ret = r.getJSONObject(); ret.put(name, obj); } return this; } }