diff --git a/src/App/Repositories/AccountsApiRepository.cs b/src/App/Repositories/AccountsApiRepository.cs index 58a840819..ce96e162e 100644 --- a/src/App/Repositories/AccountsApiRepository.cs +++ b/src/App/Repositories/AccountsApiRepository.cs @@ -4,6 +4,7 @@ using System.Threading.Tasks; using Bit.App.Abstractions; using Bit.App.Models.Api; using Plugin.Connectivity.Abstractions; +using System.Net; namespace Bit.App.Repositories { @@ -30,13 +31,20 @@ namespace Bit.App.Repositories RequestUri = new Uri(client.BaseAddress, string.Concat(ApiRoute, "/register")), }; - var response = await client.SendAsync(requestMessage); - if(!response.IsSuccessStatusCode) + try { - return await HandleErrorAsync(response); - } + var response = await client.SendAsync(requestMessage); + if(!response.IsSuccessStatusCode) + { + return await HandleErrorAsync(response); + } - return ApiResult.Success(response.StatusCode); + return ApiResult.Success(response.StatusCode); + } + catch(WebException) + { + return HandledWebException(); + } } } @@ -55,13 +63,20 @@ namespace Bit.App.Repositories RequestUri = new Uri(client.BaseAddress, string.Concat(ApiRoute, "/password-hint")), }; - var response = await client.SendAsync(requestMessage); - if(!response.IsSuccessStatusCode) + try { - return await HandleErrorAsync(response); - } + var response = await client.SendAsync(requestMessage); + if(!response.IsSuccessStatusCode) + { + return await HandleErrorAsync(response); + } - return ApiResult.Success(response.StatusCode); + return ApiResult.Success(response.StatusCode); + } + catch(WebException) + { + return HandledWebException(); + } } } } diff --git a/src/App/Repositories/ApiRepository.cs b/src/App/Repositories/ApiRepository.cs index 111706034..d772286ce 100644 --- a/src/App/Repositories/ApiRepository.cs +++ b/src/App/Repositories/ApiRepository.cs @@ -6,6 +6,7 @@ using Bit.App.Abstractions; using Bit.App.Models.Api; using Newtonsoft.Json; using Plugin.Connectivity.Abstractions; +using System.Net; namespace Bit.App.Repositories { @@ -33,15 +34,22 @@ namespace Bit.App.Repositories RequestUri = new Uri(client.BaseAddress, string.Concat(ApiRoute, "/", id)), }; - var response = await client.SendAsync(requestMessage); - if(!response.IsSuccessStatusCode) + try { - return await HandleErrorAsync(response); - } + var response = await client.SendAsync(requestMessage); + if(!response.IsSuccessStatusCode) + { + return await HandleErrorAsync(response); + } - var responseContent = await response.Content.ReadAsStringAsync(); - var responseObj = JsonConvert.DeserializeObject(responseContent); - return ApiResult.Success(responseObj, response.StatusCode); + var responseContent = await response.Content.ReadAsStringAsync(); + var responseObj = JsonConvert.DeserializeObject(responseContent); + return ApiResult.Success(responseObj, response.StatusCode); + } + catch(WebException) + { + return HandledWebException(); + } } } @@ -60,15 +68,22 @@ namespace Bit.App.Repositories RequestUri = new Uri(client.BaseAddress, ApiRoute), }; - var response = await client.SendAsync(requestMessage); - if(!response.IsSuccessStatusCode) + try { - return await HandleErrorAsync>(response); - } + var response = await client.SendAsync(requestMessage); + if(!response.IsSuccessStatusCode) + { + return await HandleErrorAsync>(response); + } - var responseContent = await response.Content.ReadAsStringAsync(); - var responseObj = JsonConvert.DeserializeObject>(responseContent); - return ApiResult>.Success(responseObj, response.StatusCode); + var responseContent = await response.Content.ReadAsStringAsync(); + var responseObj = JsonConvert.DeserializeObject>(responseContent); + return ApiResult>.Success(responseObj, response.StatusCode); + } + catch(WebException) + { + return HandledWebException>(); + } } } @@ -87,15 +102,22 @@ namespace Bit.App.Repositories RequestUri = new Uri(client.BaseAddress, ApiRoute), }; - var response = await client.SendAsync(requestMessage); - if(!response.IsSuccessStatusCode) + try { - return await HandleErrorAsync(response); - } + var response = await client.SendAsync(requestMessage); + if(!response.IsSuccessStatusCode) + { + return await HandleErrorAsync(response); + } - var responseContent = await response.Content.ReadAsStringAsync(); - var responseObj = JsonConvert.DeserializeObject(responseContent); - return ApiResult.Success(responseObj, response.StatusCode); + var responseContent = await response.Content.ReadAsStringAsync(); + var responseObj = JsonConvert.DeserializeObject(responseContent); + return ApiResult.Success(responseObj, response.StatusCode); + } + catch(WebException) + { + return HandledWebException(); + } } } @@ -114,15 +136,22 @@ namespace Bit.App.Repositories RequestUri = new Uri(client.BaseAddress, string.Concat(ApiRoute, "/", id)), }; - var response = await client.SendAsync(requestMessage); - if(!response.IsSuccessStatusCode) + try { - return await HandleErrorAsync(response); - } + var response = await client.SendAsync(requestMessage); + if(!response.IsSuccessStatusCode) + { + return await HandleErrorAsync(response); + } - var responseContent = await response.Content.ReadAsStringAsync(); - var responseObj = JsonConvert.DeserializeObject(responseContent); - return ApiResult.Success(responseObj, response.StatusCode); + var responseContent = await response.Content.ReadAsStringAsync(); + var responseObj = JsonConvert.DeserializeObject(responseContent); + return ApiResult.Success(responseObj, response.StatusCode); + } + catch(WebException) + { + return HandledWebException(); + } } } @@ -141,13 +170,20 @@ namespace Bit.App.Repositories RequestUri = new Uri(client.BaseAddress, string.Concat(ApiRoute, "/", id)), }; - var response = await client.SendAsync(requestMessage); - if(!response.IsSuccessStatusCode) + try { - return await HandleErrorAsync(response); - } + var response = await client.SendAsync(requestMessage); + if(!response.IsSuccessStatusCode) + { + return await HandleErrorAsync(response); + } - return ApiResult.Success(response.StatusCode); + return ApiResult.Success(response.StatusCode); + } + catch(WebException) + { + return HandledWebException(); + } } } } diff --git a/src/App/Repositories/AuthApiRepository.cs b/src/App/Repositories/AuthApiRepository.cs index 777611cc8..41696857e 100644 --- a/src/App/Repositories/AuthApiRepository.cs +++ b/src/App/Repositories/AuthApiRepository.cs @@ -5,6 +5,7 @@ using Bit.App.Abstractions; using Bit.App.Models.Api; using Newtonsoft.Json; using Plugin.Connectivity.Abstractions; +using System.Net; namespace Bit.App.Repositories { @@ -31,15 +32,22 @@ namespace Bit.App.Repositories RequestUri = new Uri(client.BaseAddress, string.Concat(ApiRoute, "/token")), }; - var response = await client.SendAsync(requestMessage); - if(!response.IsSuccessStatusCode) + try { - return await HandleErrorAsync(response); - } + var response = await client.SendAsync(requestMessage); + if(!response.IsSuccessStatusCode) + { + return await HandleErrorAsync(response); + } - var responseContent = await response.Content.ReadAsStringAsync(); - var responseObj = JsonConvert.DeserializeObject(responseContent); - return ApiResult.Success(responseObj, response.StatusCode); + var responseContent = await response.Content.ReadAsStringAsync(); + var responseObj = JsonConvert.DeserializeObject(responseContent); + return ApiResult.Success(responseObj, response.StatusCode); + } + catch(WebException) + { + return HandledWebException(); + } } } @@ -58,15 +66,22 @@ namespace Bit.App.Repositories RequestUri = new Uri(client.BaseAddress, string.Concat(ApiRoute, "/token/two-factor")), }; - var response = await client.SendAsync(requestMessage); - if(!response.IsSuccessStatusCode) + try { - return await HandleErrorAsync(response); - } + var response = await client.SendAsync(requestMessage); + if(!response.IsSuccessStatusCode) + { + return await HandleErrorAsync(response); + } - var responseContent = await response.Content.ReadAsStringAsync(); - var responseObj = JsonConvert.DeserializeObject(responseContent); - return ApiResult.Success(responseObj, response.StatusCode); + var responseContent = await response.Content.ReadAsStringAsync(); + var responseObj = JsonConvert.DeserializeObject(responseContent); + return ApiResult.Success(responseObj, response.StatusCode); + } + catch(WebException) + { + return HandledWebException(); + } } } } diff --git a/src/App/Repositories/BaseApiRepository.cs b/src/App/Repositories/BaseApiRepository.cs index 885919c25..c256741aa 100644 --- a/src/App/Repositories/BaseApiRepository.cs +++ b/src/App/Repositories/BaseApiRepository.cs @@ -28,6 +28,16 @@ namespace Bit.App.Repositories return ApiResult.Failed(System.Net.HttpStatusCode.RequestTimeout, new ApiError { Message = "Not connected to the internet." }); } + protected ApiResult HandledWebException() + { + return ApiResult.Failed(System.Net.HttpStatusCode.BadGateway, new ApiError { Message = "There is a problem connecting to the server." }); + } + + protected ApiResult HandledWebException() + { + return ApiResult.Failed(System.Net.HttpStatusCode.BadGateway, new ApiError { Message = "There is a problem connecting to the server." }); + } + protected async Task> HandleErrorAsync(HttpResponseMessage response) { try diff --git a/src/App/Repositories/CipherApiRepository.cs b/src/App/Repositories/CipherApiRepository.cs index c7c0af91e..9187b75ab 100644 --- a/src/App/Repositories/CipherApiRepository.cs +++ b/src/App/Repositories/CipherApiRepository.cs @@ -6,6 +6,7 @@ using Bit.App.Abstractions; using Bit.App.Models.Api; using Newtonsoft.Json; using Plugin.Connectivity.Abstractions; +using System.Net; namespace Bit.App.Repositories { @@ -32,15 +33,22 @@ namespace Bit.App.Repositories RequestUri = new Uri(client.BaseAddress, string.Concat(ApiRoute, "/", id)), }; - var response = await client.SendAsync(requestMessage); - if(!response.IsSuccessStatusCode) + try { - return await HandleErrorAsync(response); - } + var response = await client.SendAsync(requestMessage); + if(!response.IsSuccessStatusCode) + { + return await HandleErrorAsync(response); + } - var responseContent = await response.Content.ReadAsStringAsync(); - var responseObj = JsonConvert.DeserializeObject(responseContent); - return ApiResult.Success(responseObj, response.StatusCode); + var responseContent = await response.Content.ReadAsStringAsync(); + var responseObj = JsonConvert.DeserializeObject(responseContent); + return ApiResult.Success(responseObj, response.StatusCode); + } + catch(WebException) + { + return HandledWebException(); + } } } @@ -59,15 +67,22 @@ namespace Bit.App.Repositories RequestUri = new Uri(client.BaseAddress, ApiRoute), }; - var response = await client.SendAsync(requestMessage); - if(!response.IsSuccessStatusCode) + try { - return await HandleErrorAsync>(response); - } + var response = await client.SendAsync(requestMessage); + if(!response.IsSuccessStatusCode) + { + return await HandleErrorAsync>(response); + } - var responseContent = await response.Content.ReadAsStringAsync(); - var responseObj = JsonConvert.DeserializeObject>(responseContent); - return ApiResult>.Success(responseObj, response.StatusCode); + var responseContent = await response.Content.ReadAsStringAsync(); + var responseObj = JsonConvert.DeserializeObject>(responseContent); + return ApiResult>.Success(responseObj, response.StatusCode); + } + catch(WebException) + { + return HandledWebException>(); + } } } @@ -86,15 +101,22 @@ namespace Bit.App.Repositories RequestUri = new Uri(client.BaseAddress, string.Concat(ApiRoute, "/history", "?since=", since)), }; - var response = await client.SendAsync(requestMessage); - if(!response.IsSuccessStatusCode) + try { - return await HandleErrorAsync(response); - } + var response = await client.SendAsync(requestMessage); + if(!response.IsSuccessStatusCode) + { + return await HandleErrorAsync(response); + } - var responseContent = await response.Content.ReadAsStringAsync(); - var responseObj = JsonConvert.DeserializeObject(responseContent); - return ApiResult.Success(responseObj, response.StatusCode); + var responseContent = await response.Content.ReadAsStringAsync(); + var responseObj = JsonConvert.DeserializeObject(responseContent); + return ApiResult.Success(responseObj, response.StatusCode); + } + catch(WebException) + { + return HandledWebException(); + } } } } diff --git a/src/App/Repositories/DeviceApiRepository.cs b/src/App/Repositories/DeviceApiRepository.cs index 6ee6bd541..6b5d9fd78 100644 --- a/src/App/Repositories/DeviceApiRepository.cs +++ b/src/App/Repositories/DeviceApiRepository.cs @@ -5,6 +5,7 @@ using Bit.App.Abstractions; using Bit.App.Models.Api; using Newtonsoft.Json; using Plugin.Connectivity.Abstractions; +using System.Net; namespace Bit.App.Repositories { @@ -31,13 +32,20 @@ namespace Bit.App.Repositories RequestUri = new Uri(client.BaseAddress, string.Concat(ApiRoute, "/identifier/", identifier, "/token")), }; - var response = await client.SendAsync(requestMessage); - if(!response.IsSuccessStatusCode) + try { - return await HandleErrorAsync(response); - } + var response = await client.SendAsync(requestMessage); + if(!response.IsSuccessStatusCode) + { + return await HandleErrorAsync(response); + } - return ApiResult.Success(response.StatusCode); + return ApiResult.Success(response.StatusCode); + } + catch(WebException) + { + return HandledWebException(); + } } } @@ -56,8 +64,20 @@ namespace Bit.App.Repositories RequestUri = new Uri(client.BaseAddress, string.Concat(ApiRoute, "/identifier/", identifier, "/clear-token")), }; - var response = await client.SendAsync(requestMessage); - return ApiResult.Success(response.StatusCode); + try + { + var response = await client.SendAsync(requestMessage); + if(!response.IsSuccessStatusCode) + { + return await HandleErrorAsync(response); + } + + return ApiResult.Success(response.StatusCode); + } + catch(WebException) + { + return HandledWebException(); + } } } } diff --git a/src/App/Repositories/FolderApiRepository.cs b/src/App/Repositories/FolderApiRepository.cs index 1e1e0bc19..38063bd21 100644 --- a/src/App/Repositories/FolderApiRepository.cs +++ b/src/App/Repositories/FolderApiRepository.cs @@ -6,6 +6,7 @@ using Bit.App.Abstractions; using Bit.App.Models.Api; using Newtonsoft.Json; using Plugin.Connectivity.Abstractions; +using System.Net; namespace Bit.App.Repositories { @@ -32,15 +33,22 @@ namespace Bit.App.Repositories RequestUri = new Uri(client.BaseAddress, string.Concat(ApiRoute, "?since=", since)), }; - var response = await client.SendAsync(requestMessage); - if(!response.IsSuccessStatusCode) + try { - return await HandleErrorAsync>(response); - } + var response = await client.SendAsync(requestMessage); + if(!response.IsSuccessStatusCode) + { + return await HandleErrorAsync>(response); + } - var responseContent = await response.Content.ReadAsStringAsync(); - var responseObj = JsonConvert.DeserializeObject>(responseContent); - return ApiResult>.Success(responseObj, response.StatusCode); + var responseContent = await response.Content.ReadAsStringAsync(); + var responseObj = JsonConvert.DeserializeObject>(responseContent); + return ApiResult>.Success(responseObj, response.StatusCode); + } + catch(WebException) + { + return HandledWebException>(); + } } } }