package net.ion.radon.client; import java.net.URLEncoder; import net.ion.framework.util.StringUtil; import net.ion.nradon.HttpHandler; import net.ion.nradon.stub.StubHttpControl; import net.ion.nradon.stub.StubHttpRequest; import net.ion.nradon.stub.StubHttpResponse; import net.ion.radon.core.TreeContext; import org.apache.http.client.utils.URLEncodedUtils; import org.jboss.netty.handler.codec.http.HttpMethod; public class FakeRequest { private HttpHandler handler; private StubHttpRequest request; public FakeRequest(HttpHandler handler, StubHttpRequest request) { this.handler = handler ; this.request = request ; } public StubHttpResponse get() throws Exception { return handle(HttpMethod.GET); } public StubHttpResponse post() throws Exception { return handle(HttpMethod.POST); } public StubHttpResponse delete() throws Exception { return handle(HttpMethod.DELETE); } public StubHttpResponse put() throws Exception { return handle(HttpMethod.PUT); } public FakeRequest header(String name, String value){ request.header(name, value) ; return this ; } public FakeRequest body(String body){ request.body(body) ; return this ; } public FakeRequest postParam(String name, String value){ String encoded = URLEncoder.encode(value) ; String bodyString = request.body() ; if (StringUtil.isBlank(bodyString)) body(name + "=" + encoded) ; else body(bodyString + "&" + name + "=" + value) ; return this ; } public StubHttpResponse handle(HttpMethod method) throws Exception { TreeContext treeContext = (TreeContext) request.data(TreeContext.class.getCanonicalName()) ; treeContext.getParentContext() ; request.method(method) ; StubHttpResponse response = new StubHttpResponse(); handler.handleHttpRequest(request, response, new StubHttpControl(request, response)); return response; } }