Subversion Repositories SmartDukaan

Rev

Rev 34824 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
33764 ranu 1
package com.spice.profitmandi.web.interceptor;
2
 
3
import javax.servlet.http.HttpServletRequest;
4
 
5
import javax.servlet.http.HttpServletResponse;
6
 
7
import org.apache.logging.log4j.Logger;
8
import org.apache.logging.log4j.LogManager;
9
import org.springframework.beans.factory.annotation.Autowired;
10
import org.springframework.cache.Cache;
11
import org.springframework.cache.CacheManager;
12
import org.springframework.stereotype.Component;
13
import org.springframework.web.servlet.HandlerInterceptor;
14
import org.springframework.web.servlet.ModelAndView;
15
 
16
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
17
import com.spice.profitmandi.common.model.UserInfo;
35272 amit 18
import com.spice.profitmandi.service.authentication.JWTUtil;
33764 ranu 19
import com.spice.profitmandi.common.web.util.ResponseSender;
20
 
21
@Component
22
public class PostInterceptor implements HandlerInterceptor {
23
 
24
    private static final Logger LOGGER = LogManager.getLogger(PostInterceptor.class);
25
 
26
    @Autowired
27
    private ResponseSender<?> responseSender;
28
 
29
    @Autowired
30
    private CacheManager timeoutCacheManager;
31
 
35272 amit 32
    @Autowired
33
    JWTUtil jwtUtil;
34
 
33764 ranu 35
    @Override
36
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object arg2, Exception arg3)
37
            throws Exception {
38
    }
39
 
40
    @Override
41
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object arg2, ModelAndView arg3)
42
            throws Exception {
43
        LOGGER.info("request is received after : "+request.getRequestURL().toString());
44
    }
45
 
46
    @Override
47
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object object) throws Exception {
33766 ranu 48
        LOGGER.info("request is received in post interceptor before [{}] with method [{}]", request.getRequestURL().toString(), request.getMethod());
33764 ranu 49
        if ("POST".equalsIgnoreCase(request.getMethod())) {
50
            String idempotencyKey = request.getHeader("IdempotencyKey");
51
            if (idempotencyKey == null || idempotencyKey.isEmpty()) {
52
//                response.sendError(HttpServletResponse.SC_BAD_REQUEST, "Missing idempotency token in header");
53
                return true;
54
            }
55
 
34824 vikas 56
            Cache cache = timeoutCacheManager.getCache("IdempotencyKey");
33764 ranu 57
            if (cache != null) {
58
                if (cache.get(idempotencyKey) != null) {
59
                    response.setStatus(HttpServletResponse.SC_OK);
60
                    response.getWriter().write("Duplicate request. Idempotency Key already processed.");
61
                    return false;
62
                } else {
63
                    cache.put(idempotencyKey, "PROCESSED");
64
                    return true;
65
                }
34824 vikas 66
            }
33764 ranu 67
        }
68
        return true;
69
    }
70
 
71
    private UserInfo getUserInfo(String token) throws ProfitMandiBusinessException{
35272 amit 72
        return jwtUtil.getUserInfo(token);
33764 ranu 73
    }
74
}