All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.gkutiel.flip.web.HttpUtils Maven / Gradle / Ivy

package com.github.gkutiel.flip.web;

import java.io.IOException;
import java.util.logging.Logger;

import javax.servlet.http.Cookie;

import com.github.gkutiel.flip.utils.Utils;

enum HttpUtils {
	;
	private static final String SEP = ":";

	private static final Logger LOGGER = Logger.getLogger(HttpUtils.class.getCanonicalName());

	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 = Utils.Json.toString(val);
		final String sign = Utils.Cryptography.sign(data);
		return new Cookie(key, sign + SEP + data);
	}

	static  T verify(final String val, final Class type) {
		try {
			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 Utils.Json.fromString(data, type);
		} catch (final IOException e) {
			throw new RuntimeException(e);
		}
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy