
com.cats.https.CHttpRequest Maven / Gradle / Ivy
package com.cats.https;
import com.cats.common.collections.CList;
import com.cats.common.json.CJsonUtil;
import org.apache.http.HttpEntity;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
import org.apache.http.message.BasicNameValuePair;
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.UriBuilder;
import java.net.URI;
import java.util.Base64;
import java.util.List;
import java.util.Map;
public class CHttpRequest {
private final CList queryParameters = new CList<>();
private final CSession session;
private final URI targetURL;
private HttpEntity entity;
public CHttpRequest(String targetURL) {
this(UriBuilder.fromUri(targetURL).build());
}
public CHttpRequest(URI targetURL) {
this(null, targetURL);
}
public CHttpRequest(CSession session, String targetURL) {
this(session, UriBuilder.fromUri(targetURL).build(), new CList<>());
}
public CHttpRequest(CSession session, URI targetURL) {
this(session, targetURL, new CList<>());
}
public CHttpRequest(String targetURL, List headers) {
this(null, UriBuilder.fromUri(targetURL).build(), headers);
}
public CHttpRequest(URI targetURL, List headers) {
this(null, targetURL, headers);
}
public CHttpRequest(CSession session, String targetURL, List headers) {
this(session, UriBuilder.fromUri(targetURL).build(), headers);
}
public CHttpRequest(CSession session, URI targetURL, List headers) {
this.session = session == null ? new CBasicSession() : session;
this.targetURL = targetURL;
if (headers != null) {
for (NameValuePair header : headers) {
this.session.addHeader(header.getName(), header.getValue());
}
}
this.session.addDefaultHeaders();
}
public CSession getSession() {
return session;
}
public URI getTargetURL() {
return targetURL;
}
public T setBasicCredentialsProvider(String username, String password) {
String userpass = String.format("%s:%s", username, password);
session.addHeader(HttpHeaders.AUTHORIZATION, "Basic " + Base64.getEncoder().encodeToString(userpass.getBytes()));
return (T) this;
}
public List getQueryParameters() {
return queryParameters;
}
public T addQueryParameter(String name, Object value) {
this.queryParameters.add(new BasicNameValuePair(name, value.toString()));
return (T) this;
}
public HttpEntity getEntity() {
return entity;
}
public T setEntity(HttpEntity entity) {
this.entity = entity;
return (T) this;
}
public T setStringEntity(String string, ContentType contentType) {
this.entity = new StringEntity(string, contentType);
return (T) this;
}
public T setUrlEncodedFormEntity(List entities) {
try {
this.entity = new UrlEncodedFormEntity(entities);
return (T) this;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
public T setUrlEncodedFormEntity(Map entities) {
try {
this.entity = new UrlEncodedFormEntity(new CList<>(entities.keySet()).mapToList(s -> new BasicNameValuePair(s, entities.get(s))));
return (T) this;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
@Override
public String toString() {
return "CHttpRequest {\n" +
"queryParameters: " + queryParameters +
",\nsession: " + CJsonUtil.toString(session) +
",\ntargetURL: '" + targetURL + '\'' +
",\nentity: " + entity +
'}';
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy