1 module hunt.http.codec.websocket.model.UpgradeRequestAdapter; 2 3 import hunt.http.Cookie; 4 import hunt.net.util.HttpURI; 5 import hunt.text.QuoteUtil; 6 7 // dfmt off 8 version(WITH_HUNT_SECURITY) { 9 // import hunt.security.Principal; 10 } 11 // dfmt on 12 13 import hunt.http.codec.websocket.utils.HeaderValueGenerator; 14 15 // class UpgradeRequestAdapter : UpgradeRequest { 16 // private HttpURI requestURI; 17 // private List<string> subProtocols = new ArrayList<>(1); 18 // private List<ExtensionConfig> extensions = new ArrayList<>(1); 19 // private List<Cookie> cookies = new ArrayList<>(1); 20 // private Map<string, List<string>> headers = new TreeMap<>(string.CASE_INSENSITIVE_ORDER); 21 // private Map<string, List<string>> parameters = new HashMap<>(1); 22 // private Object session; 23 // private string httpVersion; 24 // private string method; 25 // private string host; 26 // private bool secure; 27 28 // protected this() { 29 // /* anonymous, no requestURI, upgrade request */ 30 // } 31 32 // this(string requestURI) { 33 // this(new HttpURI(requestURI)); 34 // } 35 36 // this(HttpURI requestURI) { 37 // setRequestURI(requestURI); 38 // } 39 40 // override 41 // void addExtensions(ExtensionConfig[] configs...) { 42 // Collections.addAll(extensions, configs); 43 // } 44 45 // override 46 // void addExtensions(string[] configs...) { 47 // foreach (string config ; configs) { 48 // extensions.add(ExtensionConfig.parse(config)); 49 // } 50 // } 51 52 // override 53 // List<Cookie> getCookies() { 54 // return cookies; 55 // } 56 57 // override 58 // List<ExtensionConfig> getExtensions() { 59 // return extensions; 60 // } 61 62 // override 63 // string getHeader(string name) { 64 // List<string> values = headers.get(name); 65 // // no value list 66 // if (values is null) { 67 // return null; 68 // } 69 // int size = values.size(); 70 // // empty value list 71 // if (size <= 0) { 72 // return null; 73 // } 74 // // simple return 75 // if (size == 1) { 76 // return values.get(0); 77 // } 78 // return generateHeaderValue(values); 79 // } 80 81 // override 82 // int getHeaderInt(string name) { 83 // List<string> values = headers.get(name); 84 // // no value list 85 // if (values is null) { 86 // return -1; 87 // } 88 // int size = values.size(); 89 // // empty value list 90 // if (size <= 0) { 91 // return -1; 92 // } 93 // // simple return 94 // if (size == 1) { 95 // return Integer.parseInt(values.get(0)); 96 // } 97 // throw new NumberFormatException("Cannot convert multi-value header into int"); 98 // } 99 100 // override 101 // Map<string, List<string>> getHeaders() { 102 // return headers; 103 // } 104 105 // override 106 // List<string> getHeaders(string name) { 107 // return headers.get(name); 108 // } 109 110 // override 111 // string getHost() { 112 // return host; 113 // } 114 115 // override 116 // string getHttpVersion() { 117 // return httpVersion; 118 // } 119 120 // override 121 // string getMethod() { 122 // return method; 123 // } 124 125 // override 126 // string getOrigin() { 127 // return getHeader("Origin"); 128 // } 129 130 // /** 131 // * Returns a map of the query parameters of the request. 132 // * 133 // * @return a unmodifiable map of query parameters of the request. 134 // */ 135 // override 136 // Map<string, List<string>> getParameterMap() { 137 // return Collections.unmodifiableMap(parameters); 138 // } 139 140 // override 141 // string getProtocolVersion() { 142 // string version = getHeader("Sec-WebSocket-Version"); 143 // if (version is null) { 144 // return "13"; // Default 145 // } 146 // return version; 147 // } 148 149 // override 150 // string getQueryString() { 151 // return requestURI.getQuery(); 152 // } 153 154 // override 155 // HttpURI getRequestURI() { 156 // return requestURI; 157 // } 158 159 // /** 160 // * Access the Servlet HTTP Session (if present) 161 // * <p> 162 // * Note: Never present on a Client UpgradeRequest. 163 // * 164 // * @return the Servlet HttpSession on server side UpgradeRequests 165 // */ 166 // override 167 // Object getSession() { 168 // return session; 169 // } 170 171 // override 172 // List<string> getSubProtocols() { 173 // return subProtocols; 174 // } 175 176 // /** 177 // * Get the User Principal for this request. 178 // * <p> 179 // * Only applicable when using UpgradeRequest from server side. 180 // * 181 // * @return the user principal 182 // */ 183 // override 184 // Principal getUserPrincipal() { 185 // // Server side should override to implement 186 // return null; 187 // } 188 189 // override 190 // bool hasSubProtocol(string test) { 191 // for (string protocol : subProtocols) { 192 // if (protocol.equalsIgnoreCase(test)) { 193 // return true; 194 // } 195 // } 196 // return false; 197 // } 198 199 // override 200 // bool isOrigin(string test) { 201 // return test.equalsIgnoreCase(getOrigin()); 202 // } 203 204 // override 205 // bool isSecure() { 206 // return secure; 207 // } 208 209 // override 210 // void setCookies(List<Cookie> cookies) { 211 // this.cookies.clear(); 212 // if (cookies !is null && !cookies.isEmpty()) { 213 // this.cookies.addAll(cookies); 214 // } 215 // } 216 217 // override 218 // void setExtensions(List<ExtensionConfig> configs) { 219 // this.extensions.clear(); 220 // if (configs !is null) { 221 // this.extensions.addAll(configs); 222 // } 223 // } 224 225 // override 226 // void setHeader(string name, List<string> values) { 227 // headers.put(name, values); 228 // } 229 230 // override 231 // void setHeader(string name, string value) { 232 // List<string> values = new ArrayList<>(); 233 // values.add(value); 234 // setHeader(name, values); 235 // } 236 237 // override 238 // void setHeaders(Map<string, List<string>> headers) { 239 // headers.clear(); 240 241 // for (Map.Entry<string, List<string>> entry : headers.entrySet()) { 242 // string name = entry.getKey(); 243 // List<string> values = entry.getValue(); 244 // setHeader(name, values); 245 // } 246 // } 247 248 // override 249 // void setHttpVersion(string httpVersion) { 250 // this.httpVersion = httpVersion; 251 // } 252 253 // override 254 // void setMethod(string method) { 255 // this.method = method; 256 // } 257 258 // protected void setParameterMap(Map<string, List<string>> parameters) { 259 // this.parameters.clear(); 260 // this.parameters.putAll(parameters); 261 // } 262 263 // override 264 // void setRequestURI(HttpURI uri) { 265 // this.requestURI = uri; 266 // string scheme = uri.getScheme(); 267 // if ("ws".equalsIgnoreCase(scheme)) { 268 // secure = false; 269 // } else if ("wss".equalsIgnoreCase(scheme)) { 270 // secure = true; 271 // } else { 272 // throw new IllegalArgumentException("URI scheme must be 'ws' or 'wss'"); 273 // } 274 // this.host = this.requestURI.getHost(); 275 // this.parameters.clear(); 276 // } 277 278 // override 279 // void setSession(Object session) { 280 // this.session = session; 281 // } 282 283 // override 284 // void setSubProtocols(List<string> subProtocols) { 285 // this.subProtocols.clear(); 286 // if (subProtocols !is null) { 287 // this.subProtocols.addAll(subProtocols); 288 // } 289 // } 290 291 // /** 292 // * Set Sub Protocol request list. 293 // * 294 // * @param protocols the sub protocols desired 295 // */ 296 // override 297 // void setSubProtocols(string... protocols) { 298 // subProtocols.clear(); 299 // Collections.addAll(subProtocols, protocols); 300 // } 301 // }