Subversion Repositories SmartDukaan

Rev

Rev 2021 | Rev 2817 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2021 Rev 2637
Line 1... Line 1...
1
package in.shop2020.serving.interceptors;
1
package in.shop2020.serving.interceptors;
2
 
2
 
3
import java.util.HashMap;
3
import in.shop2020.datalogger.EventType;
4
import java.util.Map;
-
 
5
 
-
 
6
import in.shop2020.model.v1.user.Affiliate;
4
import in.shop2020.model.v1.user.Affiliate;
7
import in.shop2020.model.v1.user.Tracker;
5
import in.shop2020.model.v1.user.Tracker;
-
 
6
import in.shop2020.serving.services.UserSessionInfo;
8
import in.shop2020.serving.utils.DesEncrypter;
7
import in.shop2020.serving.utils.DesEncrypter;
9
import in.shop2020.thrift.clients.UserContextServiceClient;
8
import in.shop2020.thrift.clients.UserContextServiceClient;
-
 
9
import in.shop2020.utils.DataLogger;
-
 
10
 
-
 
11
import java.util.HashMap;
-
 
12
import java.util.Map;
10
 
13
 
11
import javax.servlet.http.Cookie;
14
import javax.servlet.http.Cookie;
12
import javax.servlet.http.HttpServletRequest;
15
import javax.servlet.http.HttpServletRequest;
13
import javax.servlet.http.HttpServletResponse;
16
import javax.servlet.http.HttpServletResponse;
-
 
17
import javax.servlet.http.HttpSession;
14
 
18
 
15
import org.apache.log4j.Logger;
19
import org.apache.log4j.Logger;
16
import org.apache.struts2.ServletActionContext;
20
import org.apache.struts2.ServletActionContext;
17
 
21
 
18
import com.opensymphony.xwork2.ActionInvocation;
22
import com.opensymphony.xwork2.ActionInvocation;
Line 26... Line 30...
26
	private static final int SECONDS_IN_TWO_MONTHS = 60*60*24*60;
30
	private static final int SECONDS_IN_TWO_MONTHS = 60*60*24*60;
27
	private static final int SECONDS_IN_YEAR = 60*60*24*365;
31
	private static final int SECONDS_IN_YEAR = 60*60*24*365;
28
	public static final String TRACKER = "tracker";
32
	public static final String TRACKER = "tracker";
29
	public static final String AFF_COOKIE = "uafc";
33
	public static final String AFF_COOKIE = "uafc";
30
	public static final String SRC_COOKIE = "usrcc";
34
	public static final String SRC_COOKIE = "usrcc";
-
 
35
	public static final String SESSION_SRC_COOKIE = "sess_srcc";
31
	
36
	
32
	private String cookieDomain = "";
37
	private String cookieDomain = "";
33
	private Cookie trackerCookie = null;
38
	private Cookie trackerCookie = null;
34
	private Cookie affCookie = null;
39
	private Cookie affCookie = null;
35
	private Cookie firstSourceCookie = null;
40
	private Cookie firstSourceCookie = null;
-
 
41
	private Cookie sessionSourceCookie = null;
36
    private Map<String, Cookie> cookiesMap = null;
42
    private Map<String, Cookie> cookiesMap = null;
37
    
43
    
38
    public void setCookieDomain(String cookieDomain) {
44
    public void setCookieDomain(String cookieDomain) {
39
        this.cookieDomain = cookieDomain;
45
        this.cookieDomain = cookieDomain;
40
    }
46
    }
Line 45... Line 51...
45
 
51
 
46
		String affId = request.getParameter("afid");
52
		String affId = request.getParameter("afid");
47
		createCookiesMap(request);
53
		createCookiesMap(request);
48
		cleanTrackerCookie();
54
		cleanTrackerCookie();
49
		updateFirstSourceCookie();
55
		updateFirstSourceCookie();
-
 
56
		updateSessionSourceCookie();
50
		
57
		
51
		if(affId != null && !affId.isEmpty()) {
58
		if(affId != null && !affId.isEmpty()) {
52
		    updateAffCookie(affId);
59
		    updateAffCookie(affId);
53
		}
60
		}
54
 
61
 
55
        return invocation.invoke();
62
        return invocation.invoke();
56
	}
63
	}
57
 
64
 
58
    /**
65
    /**
59
     * Check afid, referer
66
     * Update first source cookie
60
     * 
67
     * 
61
     */
68
     */
62
    private void updateFirstSourceCookie() {
69
    private void updateFirstSourceCookie() {
63
        firstSourceCookie = (Cookie) cookiesMap.get(SRC_COOKIE);
70
        firstSourceCookie = (Cookie) cookiesMap.get(SRC_COOKIE);
64
        if (firstSourceCookie != null) {
71
        if (firstSourceCookie != null) {
Line 87... Line 94...
87
        }
94
        }
88
        cookiesMap.put(SRC_COOKIE, firstSourceCookie);
95
        cookiesMap.put(SRC_COOKIE, firstSourceCookie);
89
        HttpServletResponse response = ServletActionContext.getResponse();
96
        HttpServletResponse response = ServletActionContext.getResponse();
90
        response.addCookie(firstSourceCookie);
97
        response.addCookie(firstSourceCookie);
91
    }
98
    }
-
 
99
    
-
 
100
    /**
-
 
101
     * Update first source cookie
-
 
102
     * 
-
 
103
     */
-
 
104
    private void updateSessionSourceCookie() {
-
 
105
        sessionSourceCookie = (Cookie) cookiesMap.get(SESSION_SRC_COOKIE);
-
 
106
        if (sessionSourceCookie != null) {
-
 
107
            return;
-
 
108
        }
-
 
109
        HttpServletRequest request = ServletActionContext.getRequest();
-
 
110
        String src = "";
-
 
111
        String referer = request.getHeader("referer");
-
 
112
        if (referer == null || referer.isEmpty() || referer.contains("saholic") || referer.contains("shop2020")) {
-
 
113
            src = "DIRECT : " + "(" + request.getRequestURL() + ")" ;
-
 
114
        }
-
 
115
        else if (referer.contains("google.co")) {
-
 
116
            src = "ORGANIC : " + "(" + referer + ")";
-
 
117
        }
-
 
118
        else {
-
 
119
            src = referer;
-
 
120
        }
-
 
121
        DesEncrypter des = new DesEncrypter("Saholic");
-
 
122
        String sessionSourceCookieVal = des.encrypt(src);
-
 
123
        
-
 
124
        sessionSourceCookie = new Cookie(SESSION_SRC_COOKIE, sessionSourceCookieVal);
-
 
125
        sessionSourceCookie.setPath("/");
-
 
126
        if (!cookieDomain.isEmpty()) {
-
 
127
            sessionSourceCookie.setDomain(cookieDomain);
-
 
128
        }
-
 
129
        cookiesMap.put(SESSION_SRC_COOKIE, sessionSourceCookie);
-
 
130
        HttpServletResponse response = ServletActionContext.getResponse();
-
 
131
        response.addCookie(sessionSourceCookie);
-
 
132
        HttpSession session = request.getSession();
-
 
133
        UserSessionInfo userinfo = (UserSessionInfo) session.getAttribute(UserInterceptor.USER_INFO);
-
 
134
        DataLogger.logData(EventType.NEW_SESSION, request.getSession().getId(), userinfo.getUserId(), userinfo.getEmail(), src);
-
 
135
    }
92
 
136
 
93
    private void createCookiesMap(HttpServletRequest request) {
137
    private void createCookiesMap(HttpServletRequest request) {
94
        cookiesMap  = new HashMap<String, Cookie>();
138
        cookiesMap  = new HashMap<String, Cookie>();
95
        Cookie[] cookies = request.getCookies();
139
        Cookie[] cookies = request.getCookies();
96
        // This check is necessary for the first request when no cookies are
140
        // This check is necessary for the first request when no cookies are