diff options
Diffstat (limited to 'gerrit-openid/src/main/java/com/google/gerrit/httpd/auth/openid/XrdsFilter.java')
-rw-r--r-- | gerrit-openid/src/main/java/com/google/gerrit/httpd/auth/openid/XrdsFilter.java | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/gerrit-openid/src/main/java/com/google/gerrit/httpd/auth/openid/XrdsFilter.java b/gerrit-openid/src/main/java/com/google/gerrit/httpd/auth/openid/XrdsFilter.java new file mode 100644 index 0000000000..92230f687d --- /dev/null +++ b/gerrit-openid/src/main/java/com/google/gerrit/httpd/auth/openid/XrdsFilter.java @@ -0,0 +1,42 @@ +package com.google.gerrit.httpd.auth.openid; + +import com.google.gerrit.server.config.CanonicalWebUrl; +import com.google.inject.Inject; +import com.google.inject.Provider; +import com.google.inject.Singleton; + +import java.io.IOException; + +import javax.servlet.Filter; +import javax.servlet.FilterChain; +import javax.servlet.FilterConfig; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.http.HttpServletResponse; + +@Singleton +class XrdsFilter implements Filter { + private final Provider<String> url; + + @Inject + XrdsFilter(@CanonicalWebUrl final Provider<String> url) { + this.url = url; + } + + @Override + public void doFilter(ServletRequest request, ServletResponse response, + FilterChain chain) throws IOException, ServletException { + HttpServletResponse rsp = (HttpServletResponse) response; + rsp.setHeader("X-XRDS-Location", url.get() + XrdsServlet.LOCATION); + chain.doFilter(request, response); + } + + @Override + public void init(FilterConfig config) { + } + + @Override + public void destroy() { + } +} |