package com.project.shared.server;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.google.common.base.Objects;
import com.project.shared.utils.StringUtils;
public class HttpServerCookiesUtils
{
public static final String ROOT_COOKIE_PATH = "/";
public static String getCookieValue(HttpServletRequest request, String cookieName)
{
return getCookieValue(cookieName, request.getCookies());
}
public static Cookie getCookie(HttpServletRequest httpRequest, String cookieName)
{
return getCookie(cookieName, httpRequest.getCookies());
}
public static String getCookieValue(String cookieName, Cookie[] cookies)
{
Cookie cookie = HttpServerCookiesUtils.getCookie(cookieName, cookies);
String cookieValue = cookie == null ? null : cookie.getValue();
return StringUtils.defaultIfNullOrEmpty(cookieValue, null);
}
public static Cookie getCookie(String cookieName, Cookie[] cookies)
{
if (null == cookies)
{
return null;
}
for (Cookie cookie : cookies)
{
if ((null != cookie) && (Objects.equal(cookie.getName(), cookieName)))
{
return cookie;
}
}
return null;
}
public static void removeRootCookie(HttpServletRequest request, HttpServletResponse response, String cookieName)
{
HttpServerCookiesUtils.removeCookie(request, response, cookieName, ROOT_COOKIE_PATH);
}
public static void removeCookie(HttpServletRequest request, HttpServletResponse response,
String cookieName, String cookiePath)
{
Cookie cookie = HttpServerCookiesUtils.getCookie(request, cookieName);
if (null == cookie)
{
return;
}
cookie.setMaxAge(0);
cookie.setPath(cookiePath);
response.addCookie(cookie);
}
public static void setRootCookie(HttpServletResponse response, String cookieName,
String cookieValue, int ageInSeconds)
{
HttpServerCookiesUtils.setCookie(response, cookieName, cookieValue, ageInSeconds, ROOT_COOKIE_PATH);
}
public static void setCookie(HttpServletResponse response, String cookieName, String cookieValue,
int ageInSeconds, String path)
{
Cookie cookie = new Cookie(cookieName, cookieValue);
cookie.setPath(path);
cookie.setMaxAge(ageInSeconds);
response.addCookie(cookie);
}
}