Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.net.MalformedURLException;
- import java.net.URL;
- import javax.servlet.http.HttpServletRequest;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Component;
- import org.springframework.util.StringUtils;
- @Component
- public class Request {
- enum Header {
- HOST("Host"), REFERER("Referer");
- private String value;
- Header(String value) {
- this.value = value;
- }
- public String value() {
- return this.value;
- }
- @Override
- public String toString() {
- return value();
- }
- }
- @Autowired
- private HttpServletRequest request;
- public String getHeaderValue(String header) {
- return request.getHeader(header);
- }
- public String getHeaderValue(Header header) {
- return request.getHeader(header.value());
- }
- public String getHost() {
- // nao podemos usar o header Host pq o spring está o modificando
- String referer = getReferer();
- if (referer == null || StringUtils.isEmpty(referer)) {
- throw new RuntimeException("Referer can't be null!");
- }
- URL url;
- try {
- url = new URL(referer);
- }
- catch (MalformedURLException e) {
- throw new RuntimeException(String.format("Referer can't be invalid (%s)!", referer));
- }
- return extractRootUrl(url);
- }
- public String getReferer() {
- return getHeaderValue(Header.REFERER);
- }
- private String extractRootUrl(URL url) {
- StringBuilder sb = new StringBuilder();
- sb.append(url.getProtocol());
- sb.append("://");
- sb.append(url.getHost());
- if (hasPort(url)) {
- sb.append(":");
- sb.append(url.getPort());
- }
- return sb.toString();
- }
- private boolean hasPort(URL url) {
- return url.getPort() != -1;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement