org.spincast.plugins.httpclient.SpincastHttpResponse Maven / Gradle / Ivy
package org.spincast.plugins.httpclient;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.annotation.Nullable;
import org.spincast.core.cookies.ICookie;
import org.spincast.core.utils.SpincastStatics;
import com.google.inject.assistedinject.Assisted;
import com.google.inject.assistedinject.AssistedInject;
/**
* Spincast Http Client's reponse implementation.
*/
public class SpincastHttpResponse implements IHttpResponse {
private final int status;
private final byte[] content;
private String contentAsString;
private String lastContentAsStringEncodingUsed;
private final String contentType;
private final Map> headers;
private final Map cookies;
private final boolean isGzipped;
@AssistedInject
public SpincastHttpResponse(@Assisted("status") int status,
@Assisted("contentType") @Nullable String contentType,
@Assisted("content") @Nullable byte[] content,
@Assisted("headers") Map> headers,
@Assisted("cookies") Map cookies,
@Assisted("wasZipped") boolean wasZipped) {
this.status = status;
this.contentType = contentType;
this.headers = headers;
this.cookies = cookies;
this.isGzipped = wasZipped;
if(content == null) {
content = new byte[0];
}
this.content = content;
}
@Override
public int getStatus() {
return this.status;
}
@Override
public String getContentType() {
return this.contentType;
}
@Override
public String getContentAsString() {
return getContentAsString("UTF-8");
}
@Override
public String getContentAsString(String encoding) {
try {
if(encoding == null) {
encoding = "UTF-8";
}
if(this.contentAsString == null || !encoding.equals(this.lastContentAsStringEncodingUsed)) {
this.lastContentAsStringEncodingUsed = encoding;
this.contentAsString = new String(getContentAsByteArray(), encoding);
}
return this.contentAsString;
} catch(Exception ex) {
throw SpincastStatics.runtimize(ex);
}
}
@Override
public byte[] getContentAsByteArray() {
return this.content;
}
@Override
public Map> getHeaders() {
return this.headers;
}
@Override
public String getHeaderFirst(String name) {
List vals = getHeaders().get(name);
if(vals != null && vals.size() > 0) {
return vals.get(0);
}
return null;
}
@Override
public List getHeader(String name) {
List vals = getHeaders().get(name);
if(vals == null) {
vals = new ArrayList();
}
return vals;
}
@Override
public Map getCookies() {
return this.cookies;
}
@Override
public ICookie getCookie(String name) {
return getCookies().get(name);
}
@Override
public boolean isGzipped() {
return this.isGzipped;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy