package com.thoughtworks.inproctester.htmlunit;
import com.gargoylesoftware.htmlunit.WebRequest;
import com.thoughtworks.inproctester.core.InProcRequest;
import com.thoughtworks.inproctester.core.UrlHelper;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
class HtmlUnitInProcRequest implements InProcRequest {
private WebRequest request;
private Map<String, String> headers = new HashMap<>();
public HtmlUnitInProcRequest(WebRequest request) {
this.request = request;
headers.put("Host", UrlHelper.getRequestHost(request.getUrl()));
headers.put("Content-Type", request.getEncodingType().getName() + ";" + request.getCharset());
headers.putAll(request.getAdditionalHeaders());
}
@Override
public String getHttpMethod() {
return request.getHttpMethod().name();
}
@Override
public URI getUri() {
try {
return request.getUrl().toURI();
} catch (URISyntaxException e) {
throw new RuntimeException(e);
}
}
@Override
public String getContent() {
if (request.getRequestParameters().size() > 0) {
return new UrlEncodedContent(request.getRequestParameters()).generateFormDataAsString();
}
return request.getRequestBody();
}
@Override
public String getHeader(String headerName) {
return headers.get(headerName);
}
@Override
public Set<String> getHeaderNames() {
return headers.keySet();
}
@Override
public void addHeader(String headerName, String header) {
headers.put(headerName, header);
}
}