예제 #1
0
        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);
        }
예제 #2
0
        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);

                        }
                    }
                }
            }

        }