/**
* Mad-Advertisement
* Copyright (C) 2011 Thorsten Marx <thmarx@gmx.net>
*
* This program is free software: you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later
* version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package net.mad.ads.server.utils.context;
import java.util.UUID;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import net.mad.ads.common.util.Strings;
import net.mad.ads.db.definition.AdSlot;
import net.mad.ads.server.utils.AdServerConstants;
import net.mad.ads.server.utils.RuntimeContext;
import net.mad.ads.server.utils.http.CookieUtils;
import net.mad.ads.server.utils.request.RequestHelper;
public class AdContextHelper {
private static final Logger logger = LoggerFactory.getLogger(AdContextHelper.class);
public static AdContext getAdContext (HttpServletRequest request, HttpServletResponse response) {
AdContext context = new AdContext();
String userID = null;
Cookie cookie = CookieUtils.getCookie(request.getCookies(), AdServerConstants.Cookie.USERID);
if (cookie != null) {
userID = cookie.getValue();
}
if (Strings.isEmpty(userID)) {
userID = UUID.randomUUID().toString();
CookieUtils.addCookie(response, AdServerConstants.Cookie.USERID, userID, CookieUtils.ONE_YEAR, RuntimeContext.getProperties().getProperty(AdServerConstants.CONFIG.PROPERTIES.COOKIE_DOMAIN));
}
context.setUserid(userID);
String requestID = (String)request.getParameter(RequestHelper.requestId);
if (Strings.isEmpty(requestID)) {
requestID = UUID.randomUUID().toString();
}
context.setRequestid(requestID);
String slot = (String)request.getParameter(RequestHelper.slot);
if (!Strings.isEmpty(slot)) {
try {
AdSlot aduuid = AdSlot.fromString(slot);
context.setSlot(aduuid);
} catch (Exception e) {
logger.error("", e);
}
}
// gets the ip
String clientIP = request.getRemoteAddr();
/*
* if we are behind a proxy or loadbalancer
* the the X-Real-ip header should be set
*/
if (request.getHeader("X-Real-IP") != null) {
clientIP = request.getHeader("X-Real-IP");
}
context.setIp(clientIP);
return context;
}
}