package com.rapidftr.net;
import java.io.IOException;
import com.rapidftr.utilities.HttpSettings;
import com.sun.me.web.path.Result;
import com.sun.me.web.request.Arg;
import com.sun.me.web.request.PostData;
import com.sun.me.web.request.Request;
import com.sun.me.web.request.RequestListener;
import com.sun.me.web.request.Response;
public class HttpServer {
private RequestPool requestPool;
private HttpSettings settings;
private HttpGateway httpGateway;
public HttpServer(HttpSettings settings) {
this(settings, new HttpGateway(new ConnectionFactory()));
}
public HttpServer(HttpSettings settings, HttpGateway httpGateway) {
this.settings = settings;
this.httpGateway = httpGateway;
requestPool = RequestPool.getInstance(httpGateway);
}
public void postToServer(String url, Arg[] postParams, Arg[] httpArgs,
RequestListener listener, PostData multiPart, Object context) {
requestPool.execute(Request.createPostRequest(buildFullyQualifiedUrl(url),
postParams, httpArgs, listener, multiPart, context));
}
public void getFromServer(String url, Arg[] inputParams, Arg[] httpArgs,
RequestListener listener, Object context) {
requestPool.execute(Request.createGetRequest(buildFullyQualifiedUrl(url),
inputParams, httpArgs, listener, context));
}
public Response getFromServer(String url, Arg[] inputParams, Arg[] httpArgs)
throws IOException {
Request request = Request.createGetRequest(buildFullyQualifiedUrl(url), inputParams, httpArgs);
return httpGateway.perform(request);
}
public void cancelRequest() {
requestPool.cancelAllRequests();
}
public String buildFullyQualifiedUrl(String uri) {
String url = getUrlPrefix() + uri + ";deviceside=true"
+ ";ConnectionTimeout=" + settings.getTimeOut();
return url;
}
private String getUrlPrefix() {
return settings.getHost() + "/";
}
public static void printResponse(Response res) {
StringBuffer buffer = new StringBuffer();
buffer.append("*********Response*******\n");
buffer.append("code:" + res.getCode() + "\n");
if (res.getException() != null) {
buffer.append(res.getException().toString() + "\n");
}
Arg[] headers = res.getHeaders();
if (headers != null) {
for (int i = 0; i < headers.length; i++) {
buffer.append(headers[i].getKey() + ":" + headers[i].getValue()
+ "\n");
}
}
Result result = res.getResult();
if (result != null) {
buffer.append(result.toString());
}
System.out.println(buffer.toString());
}
}