/// <summary> /// Get API call response. /// </summary> /// <param name="request">The <see cref="HttpRequestMessage"/>.</param> /// <returns>API Call response.</returns> protected virtual async Task <HttpResponseMessage> GetResponseAsync(HttpRequestMessage request) { var response = await Http.SendAsync(request); if (!response.IsSuccessStatusCode) { switch (response.StatusCode) { case HttpStatusCode.Unauthorized: await JsRuntime.RemoveUserTokenAsync(); var token = await GetToken(); if (token == null) { NavigationManager.NavigateTo("login"); return(response); } return(await GetResponseAsync(request)); case HttpStatusCode.BadRequest: break; default: throw new RestApiDataSourceException(GetExceptionMessage(request.RequestUri, request, response)); } } var responseContent = await response.Content.ReadAsStringAsync(); if (responseContent == "[]") { response.Content = WrapBody(string.Empty); } return(response); }