public GWServerHttp(int serverPort = DefaultPort, IGWClient[] clients = null) { _listener = new TcpSocketListener(); _port = serverPort; if (clients != null) { foreach (IGWClient client in clients) _clients.Add(client.Name.ToLower(), client); } _listener.ConnectionReceived += (s, e) => ProcessRequestAsync(e.SocketClient); }
private void RequestParse(string request, out IGWClient client, out Dictionary<string, string> parameters) { client = null; parameters = null; // decomposition du request request = request.ToLower(); string[] requestParts = request.Split('?'); if (requestParts.Length > 0) { requestParts[0] = requestParts[0].Replace("/", "").Trim().ToLower(); // recherche du client associé if (_clients.ContainsKey(requestParts[0])) { // trouvé => traitement des parametres client = _clients[requestParts[0]]; parameters = new Dictionary<string, string>(); if (requestParts.Length > 1) { // séparateur avec le & string[] requesParams = requestParts[1].Split('&'); foreach (string param in requesParams) { string[] items = param.Split('='); string itemID = (items.Length > 0 ? items[0].Trim() : string.Empty); string itemVal = (items.Length > 1 ? items[1].Trim() : string.Empty); if (!string.IsNullOrWhiteSpace(itemID) && !parameters.ContainsKey(itemID)) parameters.Add(itemID, itemVal); } } } } }