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)); } }
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); } }