From: Mathieu Baudier Date: Wed, 18 Oct 2023 08:51:33 +0000 (+0200) Subject: Export RemoteAuthHttpExchange X-Git-Tag: v2.3.20~6 X-Git-Url: https://git.argeo.org/?a=commitdiff_plain;h=592f9df9d821a36868d3d49f87c1b848867e3e89;p=lgpl%2Fargeo-commons.git Export RemoteAuthHttpExchange --- diff --git a/org.argeo.cms/src/org/argeo/cms/http/RemoteAuthHttpExchange.java b/org.argeo.cms/src/org/argeo/cms/http/RemoteAuthHttpExchange.java new file mode 100644 index 000000000..7f34a5230 --- /dev/null +++ b/org.argeo.cms/src/org/argeo/cms/http/RemoteAuthHttpExchange.java @@ -0,0 +1,89 @@ +package org.argeo.cms.http; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Locale; +import java.util.Objects; + +import org.argeo.cms.auth.RemoteAuthRequest; +import org.argeo.cms.auth.RemoteAuthResponse; +import org.argeo.cms.auth.RemoteAuthSession; + +import com.sun.net.httpserver.HttpExchange; + +/** + * Implementation of {@link RemoteAuthRequest} and {@link RemoteAuthResponse} + * based on {@link HttpExchange}. + */ +public class RemoteAuthHttpExchange implements RemoteAuthRequest, RemoteAuthResponse { + private final HttpExchange httpExchange; + private RemoteAuthSession remoteAuthSession; + + public RemoteAuthHttpExchange(HttpExchange httpExchange) { + this.httpExchange = httpExchange; + this.remoteAuthSession = (RemoteAuthSession) httpExchange.getAttribute(RemoteAuthSession.class.getName()); + Objects.requireNonNull(this.remoteAuthSession); + } + + @Override + public void setHeader(String headerName, String value) { + httpExchange.getResponseHeaders().put(headerName, Collections.singletonList(value)); + } + + @Override + public void addHeader(String headerName, String value) { + List values = httpExchange.getResponseHeaders().getOrDefault(headerName, new ArrayList<>()); + values.add(value); + } + + @Override + public RemoteAuthSession getSession() { + return remoteAuthSession; + } + + @Override + public RemoteAuthSession createSession() { + throw new UnsupportedOperationException("Cannot create remote session"); + } + + @Override + public Locale getLocale() { + // TODO Auto-generated method stub + return null; + } + + @Override + public Object getAttribute(String key) { + return httpExchange.getAttribute(key); + } + + @Override + public void setAttribute(String key, Object object) { + httpExchange.setAttribute(key, object); + } + + @Override + public String getHeader(String key) { + List lst = httpExchange.getRequestHeaders().get(key); + if (lst == null || lst.size() == 0) + return null; + return lst.get(0); + } + + @Override + public int getLocalPort() { + return httpExchange.getLocalAddress().getPort(); + } + + @Override + public String getRemoteAddr() { + return httpExchange.getRemoteAddress().getHostName(); + } + + @Override + public int getRemotePort() { + return httpExchange.getRemoteAddress().getPort(); + } + +} diff --git a/org.argeo.cms/src/org/argeo/cms/http/server/HttpServerUtils.java b/org.argeo.cms/src/org/argeo/cms/http/server/HttpServerUtils.java index a170507e5..9d2c1930a 100644 --- a/org.argeo.cms/src/org/argeo/cms/http/server/HttpServerUtils.java +++ b/org.argeo.cms/src/org/argeo/cms/http/server/HttpServerUtils.java @@ -18,7 +18,7 @@ import org.argeo.api.acr.ContentRepository; import org.argeo.api.acr.ContentSession; import org.argeo.cms.auth.RemoteAuthUtils; import org.argeo.cms.http.HttpMethod; -import org.argeo.cms.internal.http.RemoteAuthHttpExchange; +import org.argeo.cms.http.RemoteAuthHttpExchange; import com.sun.net.httpserver.HttpContext; import com.sun.net.httpserver.HttpExchange; diff --git a/org.argeo.cms/src/org/argeo/cms/internal/http/CmsAuthenticator.java b/org.argeo.cms/src/org/argeo/cms/internal/http/CmsAuthenticator.java index e17a089fe..a66a7397e 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/http/CmsAuthenticator.java +++ b/org.argeo.cms/src/org/argeo/cms/internal/http/CmsAuthenticator.java @@ -10,6 +10,7 @@ import org.argeo.cms.auth.RemoteAuthCallbackHandler; import org.argeo.cms.auth.RemoteAuthRequest; import org.argeo.cms.auth.RemoteAuthResponse; import org.argeo.cms.auth.RemoteAuthUtils; +import org.argeo.cms.http.RemoteAuthHttpExchange; import com.sun.net.httpserver.Authenticator; import com.sun.net.httpserver.HttpExchange; diff --git a/org.argeo.cms/src/org/argeo/cms/internal/http/RemoteAuthHttpExchange.java b/org.argeo.cms/src/org/argeo/cms/internal/http/RemoteAuthHttpExchange.java deleted file mode 100644 index b7e670c79..000000000 --- a/org.argeo.cms/src/org/argeo/cms/internal/http/RemoteAuthHttpExchange.java +++ /dev/null @@ -1,85 +0,0 @@ -package org.argeo.cms.internal.http; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Locale; -import java.util.Objects; - -import org.argeo.cms.auth.RemoteAuthRequest; -import org.argeo.cms.auth.RemoteAuthResponse; -import org.argeo.cms.auth.RemoteAuthSession; - -import com.sun.net.httpserver.HttpExchange; - -public class RemoteAuthHttpExchange implements RemoteAuthRequest, RemoteAuthResponse { - private final HttpExchange httpExchange; - private RemoteAuthSession remoteAuthSession; - - public RemoteAuthHttpExchange(HttpExchange httpExchange) { - this.httpExchange = httpExchange; - this.remoteAuthSession = (RemoteAuthSession) httpExchange.getAttribute(RemoteAuthSession.class.getName()); - Objects.requireNonNull(this.remoteAuthSession); - } - - @Override - public void setHeader(String headerName, String value) { - httpExchange.getResponseHeaders().put(headerName, Collections.singletonList(value)); - } - - @Override - public void addHeader(String headerName, String value) { - List values = httpExchange.getResponseHeaders().getOrDefault(headerName, new ArrayList<>()); - values.add(value); - } - - @Override - public RemoteAuthSession getSession() { - return remoteAuthSession; - } - - @Override - public RemoteAuthSession createSession() { - throw new UnsupportedOperationException("Cannot create remote session"); - } - - @Override - public Locale getLocale() { - // TODO Auto-generated method stub - return null; - } - - @Override - public Object getAttribute(String key) { - return httpExchange.getAttribute(key); - } - - @Override - public void setAttribute(String key, Object object) { - httpExchange.setAttribute(key, object); - } - - @Override - public String getHeader(String key) { - List lst = httpExchange.getRequestHeaders().get(key); - if (lst == null || lst.size() == 0) - return null; - return lst.get(0); - } - - @Override - public int getLocalPort() { - return httpExchange.getLocalAddress().getPort(); - } - - @Override - public String getRemoteAddr() { - return httpExchange.getRemoteAddress().getHostName(); - } - - @Override - public int getRemotePort() { - return httpExchange.getRemoteAddress().getPort(); - } - -} diff --git a/org.argeo.cms/src/org/argeo/cms/internal/runtime/CmsAcrHttpHandler.java b/org.argeo.cms/src/org/argeo/cms/internal/runtime/CmsAcrHttpHandler.java index c80933a55..2847cb32f 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/runtime/CmsAcrHttpHandler.java +++ b/org.argeo.cms/src/org/argeo/cms/internal/runtime/CmsAcrHttpHandler.java @@ -26,7 +26,7 @@ import org.argeo.cms.dav.DavHttpHandler; import org.argeo.cms.dav.DavPropfind; import org.argeo.cms.dav.DavResponse; import org.argeo.cms.http.HttpStatus; -import org.argeo.cms.internal.http.RemoteAuthHttpExchange; +import org.argeo.cms.http.RemoteAuthHttpExchange; import org.argeo.cms.util.StreamUtils; import com.sun.net.httpserver.HttpExchange;