Ejemplo n.º 1
0
        T HttpGet <T>(string url)
        {
            lock (_communicationLock)
            {
                try
                {
                    if (_client == null)
                    {
                        return(default(T));
                    }

                    var request = new NefitEasyHttpRequest(url, _client.MyJID, $"{CRrcGatewayPrefix}{_serial}@{CHost}");
                    _client.Send(request.ToString());

                    HttpRequestEvent?.Invoke(this, $"HttpGet->request: {request}");
                    var timeout = CRequestTimeout;

                    while (timeout > 0)
                    {
                        lock (_lockObj)
                        {
                            if (_lastMessage != null)
                            {
                                var decrypted = _encryptionHelper.Decrypt(_lastMessage.Payload);
                                HttpRequestEvent?.Invoke(this, $"HttpGet->decrypted: {decrypted}");

                                NefitJson <T> obj;

                                if (TryParseJsonString(decrypted, out obj))
                                {
                                    if (ConnectionStatus != NefitConnectionStatus.Connected)
                                    {
                                        UpdateConnectionStatus(NefitConnectionStatus.Connected);
                                    }
                                    _lastMessage = null;
                                    return(obj.Value);
                                }

                                UpdateConnectionStatus(NefitConnectionStatus.InvalidPassword);
                                timeout = 0;
                            }
                        }
                        timeout -= CCheckInterval;
                        Thread.Sleep(CCheckInterval);
                    }
                }
                catch (Exception e)
                {
                    ExceptionEvent?.Invoke(this, e);
                }
                return(default(T));
            }
        }
Ejemplo n.º 2
0
        bool HttpPut(string url, string data)
        {
            lock (_communicationLock)
            {
                try
                {
                    if (_client == null)
                    {
                        return(false);
                    }

                    var request = new NefitEasyHttpRequest(url, _client.MyJID, $"{CRrcGatewayPrefix}{_serial}@{CHost}", _encryptionHelper.Encrypt(data));
                    _client.Send(request.ToString());

                    HttpRequestEvent?.Invoke(this, $"HttpPut: {request}");
                    var timeout = CRequestTimeout;

                    while (timeout > 0)
                    {
                        lock (_lockObj)
                        {
                            if (_lastMessage != null)
                            {
                                var result = _lastMessage.Code == (int)HttpStatusCode.OK || _lastMessage.Code == (int)HttpStatusCode.NoContent;
                                if (result && ConnectionStatus != NefitConnectionStatus.Connected)
                                {
                                    UpdateConnectionStatus(NefitConnectionStatus.Connected);
                                }

                                _lastMessage = null;
                                return(result);
                            }
                        }
                        timeout -= CCheckInterval;
                        Thread.Sleep(CCheckInterval);
                    }
                }
                catch (Exception e)
                {
                    ExceptionEvent?.Invoke(this, e);
                }
                return(false);
            }
        }