Advertisement
marcelofoxes

Request.java

May 24th, 2017
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.70 KB | None | 0 0
  1. import java.net.MalformedURLException;
  2. import java.net.URL;
  3.  
  4. import javax.servlet.http.HttpServletRequest;
  5.  
  6. import org.springframework.beans.factory.annotation.Autowired;
  7. import org.springframework.stereotype.Component;
  8. import org.springframework.util.StringUtils;
  9.  
  10. @Component
  11. public class Request {
  12.     enum Header {
  13.         HOST("Host"), REFERER("Referer");
  14.  
  15.         private String value;
  16.  
  17.         Header(String value) {
  18.             this.value = value;
  19.         }
  20.  
  21.         public String value() {
  22.             return this.value;
  23.         }
  24.  
  25.         @Override
  26.         public String toString() {
  27.             return value();
  28.         }
  29.     }
  30.  
  31.     @Autowired
  32.     private HttpServletRequest request;
  33.  
  34.     public String getHeaderValue(String header) {
  35.         return request.getHeader(header);
  36.     }
  37.  
  38.     public String getHeaderValue(Header header) {
  39.         return request.getHeader(header.value());
  40.     }
  41.  
  42.     public String getHost() {
  43.         // nao podemos usar o header Host pq o spring está o modificando
  44.         String referer = getReferer();
  45.  
  46.         if (referer == null || StringUtils.isEmpty(referer)) {
  47.             throw new RuntimeException("Referer can't be null!");
  48.         }
  49.  
  50.         URL url;
  51.         try {
  52.             url = new URL(referer);
  53.         }
  54.         catch (MalformedURLException e) {
  55.             throw new RuntimeException(String.format("Referer can't be invalid (%s)!", referer));
  56.         }
  57.  
  58.         return extractRootUrl(url);
  59.     }
  60.  
  61.     public String getReferer() {
  62.         return getHeaderValue(Header.REFERER);
  63.     }
  64.  
  65.     private String extractRootUrl(URL url) {
  66.         StringBuilder sb = new StringBuilder();
  67.         sb.append(url.getProtocol());
  68.         sb.append("://");
  69.         sb.append(url.getHost());
  70.  
  71.         if (hasPort(url)) {
  72.             sb.append(":");
  73.             sb.append(url.getPort());
  74.         }
  75.  
  76.         return sb.toString();
  77.     }
  78.  
  79.     private boolean hasPort(URL url) {
  80.         return url.getPort() != -1;
  81.     }
  82. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement