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