package com.intuit.tank.http;
import com.intuit.tank.harness.APITestHarness;
import com.intuit.tank.harness.logging.LogUtil;
import com.intuit.tank.http.json.JsonRequest;
import com.intuit.tank.http.json.PlainTextRequest;
import com.intuit.tank.http.keyvalue.KeyValueRequest;
import com.intuit.tank.http.multipart.MultiPartRequest;
import com.intuit.tank.http.xml.XMLRequest;
import com.intuit.tank.logging.LogEventType;
import com.intuit.tank.logging.LoggingProfile;
import com.intuit.tank.script.ScriptConstants;
import com.intuit.tank.vm.settings.AgentConfig;
public class HttpRequestFactory {
public static BaseRequest getHttpRequest(String format, TankHttpClient httpclient) throws IllegalArgumentException {
if (format.equalsIgnoreCase(ScriptConstants.XML_TYPE)) {
return new XMLRequest(httpclient, new TankLogUtil());
} else if (format.equalsIgnoreCase(ScriptConstants.NVP_TYPE)) {
return new KeyValueRequest(httpclient, new TankLogUtil());
} else if (format.equalsIgnoreCase(ScriptConstants.MULTI_PART_TYPE)) {
return new MultiPartRequest(httpclient, new TankLogUtil());
} else if (format.equalsIgnoreCase(ScriptConstants.JSON_TYPE)) {
return new JsonRequest(httpclient, new TankLogUtil());
} else if (format.equalsIgnoreCase(ScriptConstants.PLAIN_TEXT_TYPE)) {
return new PlainTextRequest(httpclient, new TankLogUtil());
} else {
throw new IllegalArgumentException("unknow request format - " + format);
}
}
public static final class TankLogUtil implements TankHttpLogger {
@Override
public String getLogMessage(String msg) {
return LogUtil.getLogMessage(msg);
}
@Override
public String getLogMessage(String msg, LogEventType type) {
return LogUtil.getLogMessage(msg, type);
}
@Override
public String getLogMessage(String msg, LogEventType type, LoggingProfile profile) {
return LogUtil.getLogMessage(msg, type, profile);
}
@Override
public boolean isTextMimeType(String mimeType) {
return LogUtil.isTextMimeType(mimeType);
}
@Override
public AgentConfig getAgentConfig() {
return APITestHarness.getInstance().getTankConfig().getAgentConfig();
}
}
}