package org.rakam.server.http;
import com.google.common.collect.Lists;
import io.netty.handler.codec.http.HttpResponseStatus;
import io.netty.handler.codec.http.cookie.Cookie;
import io.netty.handler.codec.http.cookie.DefaultCookie;
import java.util.List;
public class Response<T> {
private final T data;
private final HttpResponseStatus status;
private List<Cookie> cookies;
private Response(T data, HttpResponseStatus status) {
this.data = data;
this.status = status;
}
public HttpResponseStatus getStatus()
{
return status;
}
public Response addCookie(DefaultCookie cookie) {
if(cookies == null) {
cookies = Lists.newArrayList();
}
cookies.add(cookie);
return this;
}
public Response addCookie(String name, String value, String domain, Boolean isHttpOnly, Long maxAge, String path, Boolean isSecured) {
if(cookies == null) {
cookies = Lists.newArrayList();
}
final DefaultCookie defaultCookie = new DefaultCookie(name, value);
if(domain != null) {
defaultCookie.setDomain(domain);
}
if(isHttpOnly != null) {
defaultCookie.setHttpOnly(isHttpOnly);
}
if(maxAge != null) {
defaultCookie.setMaxAge(maxAge);
}
if(path != null) {
defaultCookie.setPath(path);
}
if(isSecured != null) {
defaultCookie.setSecure(isSecured);
}
cookies.add(defaultCookie);
return this;
}
public Response addCookie(String name, String value) {
if(cookies == null) {
cookies = Lists.newArrayList();
}
cookies.add(new DefaultCookie(name, value));
return this;
}
public T getData() {
return data;
}
public List<Cookie> getCookies() {
return cookies;
}
public static <T> Response<T> ok(T elem) {
return new Response<>(elem, HttpResponseStatus.OK);
}
public static Response value(Object value, HttpResponseStatus status) {
return new Response(value, status);
}
}