示例#1
0
        public async Task TestGetWaterCounters()
        {
            var authToken = await _client.LogInAsync(_ct);

            var houses = await _client.GetHousesAsync(authToken, _ct);

            var house     = houses.First();
            var houseName = house.Name;

            var countersInfo = await _client.GetHouseWaterCountersAsync(houseName, authToken, _ct);

            countersInfo.Should().NotBeNullOrEmpty();
            countersInfo.Count.Should().Be(2);
            countersInfo.First().Value.Should().BeGreaterThan(0);
            countersInfo.Last().Value.Should().BeGreaterThan(0);
        }
示例#2
0
        public async Task <string> ExecuteCore()
        {
            await _mutex.WaitAsync();

            try
            {
                var sent = await _retryPolicy.ExecuteAsync(
                    async() =>
                {
                    var authToken = await _client.LogInAsync(_shutdownSwitch.Token);
                    var results   = await _client.GetHouseWaterCountersAsync(
                        _appSetings.Application.SstCloud.HouseName,
                        authToken,
                        _shutdownSwitch.Token);
                    var sentLetter = await _emailSender.SendStatisticsAsync(
                        results.First(i => i.IsHotWaterCounter),
                        results.First(i => !i.IsHotWaterCounter));
                    return(sentLetter);
                });

                return(sent);
            }
            catch (Exception ex)
            {
                var sent = await _retryPolicy.ExecuteAsync(
                    async() =>
                {
                    _logger.Error(ex, "Exception happened during Jarvis operations.");
                    var sentLetter = await _emailSender.NotifyAboutJarvisException(ex.ToString());
                    return(sentLetter);
                });

                return(sent);
            }
            finally
            {
                _mutex.Release();
            }
        }