
com.github.gkutiel.flip.web.HttpUtils Maven / Gradle / Ivy
package com.github.gkutiel.flip.web;
import java.util.logging.Logger;
import javax.servlet.http.Cookie;
import com.github.gkutiel.flip.utils.Utils;
import com.google.gson.Gson;
enum HttpUtils {
;
private static final String SEP = ":";
private static final Logger LOGGER = Logger.getLogger(HttpUtils.class.getCanonicalName());
private static final Gson GSON = new Gson();
static T get(final Cookie[] cookies, final Key key) {
final String val = HttpUtils.get(cookies, key.name());
if (val == null) return null;
final T t = HttpUtils.verify(val, key.valType());
return t;
}
static String get(final Cookie[] cs, final String key) {
if (cs == null) return null;
for (final Cookie c : cs)
if (c.getName().equals(key)) return c.getValue();
return null;
}
static Cookie signedCookie(final String key, final Object val) {
final String data = GSON.toJson(val);
final String sign = Utils.Cryptography.sign(data);
return new Cookie(key, sign + SEP + data);
}
static T verify(final String val, final Class type) {
final String[] args = val.split(SEP, 2);
if (args.length != 2) return null;
final String sign = args[0];
final String data = args[1];
if (!Utils.Cryptography.verify(data, sign)) {
LOGGER.info("INVALID COOKIE: " + val);
return null;
}
return GSON.fromJson(data, type);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy