]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.cms/src/org/argeo/cms/http/RemoteAuthHttpExchange.java
Releasing
[lgpl/argeo-commons.git] / org.argeo.cms / src / org / argeo / cms / http / RemoteAuthHttpExchange.java
1 package org.argeo.cms.http;
2
3 import java.util.ArrayList;
4 import java.util.Collections;
5 import java.util.List;
6 import java.util.Locale;
7 import java.util.Objects;
8
9 import org.argeo.cms.auth.RemoteAuthRequest;
10 import org.argeo.cms.auth.RemoteAuthResponse;
11 import org.argeo.cms.auth.RemoteAuthSession;
12
13 import com.sun.net.httpserver.HttpExchange;
14
15 /**
16 * Implementation of {@link RemoteAuthRequest} and {@link RemoteAuthResponse}
17 * based on {@link HttpExchange}.
18 */
19 public class RemoteAuthHttpExchange implements RemoteAuthRequest, RemoteAuthResponse {
20 private final HttpExchange httpExchange;
21 private RemoteAuthSession remoteAuthSession;
22
23 public RemoteAuthHttpExchange(HttpExchange httpExchange) {
24 this.httpExchange = httpExchange;
25 this.remoteAuthSession = (RemoteAuthSession) httpExchange.getAttribute(RemoteAuthSession.class.getName());
26 Objects.requireNonNull(this.remoteAuthSession);
27 }
28
29 @Override
30 public void setHeader(String headerName, String value) {
31 httpExchange.getResponseHeaders().put(headerName, Collections.singletonList(value));
32 }
33
34 @Override
35 public void addHeader(String headerName, String value) {
36 List<String> values = httpExchange.getResponseHeaders().getOrDefault(headerName, new ArrayList<>());
37 values.add(value);
38 }
39
40 @Override
41 public RemoteAuthSession getSession() {
42 return remoteAuthSession;
43 }
44
45 @Override
46 public RemoteAuthSession createSession() {
47 throw new UnsupportedOperationException("Cannot create remote session");
48 }
49
50 @Override
51 public Locale getLocale() {
52 // TODO Auto-generated method stub
53 return null;
54 }
55
56 @Override
57 public Object getAttribute(String key) {
58 return httpExchange.getAttribute(key);
59 }
60
61 @Override
62 public void setAttribute(String key, Object object) {
63 httpExchange.setAttribute(key, object);
64 }
65
66 @Override
67 public String getHeader(String key) {
68 List<String> lst = httpExchange.getRequestHeaders().get(key);
69 if (lst == null || lst.size() == 0)
70 return null;
71 return lst.get(0);
72 }
73
74 @Override
75 public int getLocalPort() {
76 return httpExchange.getLocalAddress().getPort();
77 }
78
79 @Override
80 public String getRemoteAddr() {
81 return httpExchange.getRemoteAddress().getHostName();
82 }
83
84 @Override
85 public int getRemotePort() {
86 return httpExchange.getRemoteAddress().getPort();
87 }
88
89 }