private async Task <HttpResponseMessage> SendDefaultRequest(HttpRequestMessage request, CancellationToken cancellationToken) { var responseMessage = new HttpResponseMessage(); Exception exception = null; var canDoRequest = await ConnectivityService.CanDoRequest(request); if (canDoRequest) { try { responseMessage = await _httpMessageInvoker.SendAsync(request, cancellationToken); } catch (Exception ex) { responseMessage.StatusCode = System.Net.HttpStatusCode.BadRequest; exception = ex; } } else { responseMessage.StatusCode = System.Net.HttpStatusCode.BadGateway; exception = new ConnectivityException(request); } if (!responseMessage.IsSuccessStatusCode && exception != null) { throw exception; } return(responseMessage); }
Task CheckConnectivity() { var connectivityService = App.Resolve <IConnectivityService> (); if (!connectivityService.IsNetworkAvailable) { var ex = new ConnectivityException("No Internet Connection"); Exception = ex; throw ex; } return(Task.FromResult(false)); }
public void NetHttpConnectivityException_ImplementException() { var exceptionWithoutMessage = new ConnectivityException(); exceptionWithoutMessage.Message.Should().Be("Exception of type 'Withywoods.Net.Http.Exceptions.ConnectivityException' was thrown."); exceptionWithoutMessage.InnerException.Should().BeNull(); var exceptionWithMessage = new ConnectivityException("My first message"); exceptionWithMessage.Message.Should().Be("My first message"); exceptionWithMessage.InnerException.Should().BeNull(); var exceptionWithInnerException = new ConnectivityException("My first message", new Exception("Inner exception")); exceptionWithInnerException.Message.Should().Be("My first message"); exceptionWithInnerException.InnerException.Should().NotBeNull(); exceptionWithInnerException.InnerException.Message.Should().Be("Inner exception"); }
private async Task <HttpResponseMessage> SendRequestOrGetFromCache(HttpRequestMessage request, int expireInSeconds, IApiCacheService cacheService, CancellationToken cancellationToken) { var responseMessage = new HttpResponseMessage(); Exception exception = null; var canDoRequest = await ConnectivityService.CanDoRequest(request); if (canDoRequest) { try { responseMessage = await _httpMessageInvoker.SendAsync(request, cancellationToken); } catch (Exception ex) { responseMessage.StatusCode = System.Net.HttpStatusCode.BadRequest; exception = ex; } } else { responseMessage.StatusCode = System.Net.HttpStatusCode.BadGateway; exception = new ConnectivityException(request); } if (responseMessage.IsSuccessStatusCode) { await cacheService.Add(request, responseMessage, TimeSpan.FromSeconds(expireInSeconds)); } else { if (cacheService.TryGet(request, out var existResponseMessage)) { responseMessage = existResponseMessage; } else if (exception != null) { throw exception; } } return(responseMessage); }