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