/// <summary> /// Generic Web API caller for POST /// </summary> /// <typeparam name="T">Type of object</typeparam> /// <param name="url">Url</param> /// <param name="token"></param> /// <param name="o">Object to post</param> /// <returns></returns> public ApiResponse <T> Post <T>(string url, string token, T o) where T : class { var result = new ApiResponse <T>(); try { HttpClient request = null; if (!token.IsNullOrWhiteSpace()) { request = BasicAuthRequestManager.ConfigureTokenReturnAuthRequest(token); } else { return new ApiResponse <T>() { ReasonPhrase = "No token included in the request", StatusCode = HttpStatusCode.ExpectationFailed } }; //TODO: do check for null bef convert var content = new StringContent(JsonConvert.SerializeObject(o), Encoding.UTF8, "application/json"); using ( var response = request.PostAsync(url, content).ContinueWith((taskWithResponse) => { if (taskWithResponse != null) { if (taskWithResponse.Status != TaskStatus.RanToCompletion) { result.Success = false; result.Exception = $"Server error (HTTP {taskWithResponse.Result?.StatusCode}: {taskWithResponse.Exception?.InnerException} : {taskWithResponse.Exception?.Message})."; } else if (taskWithResponse.Result.IsSuccessStatusCode) { var jsonString = taskWithResponse.Result.Content.ReadAsStringAsync(); jsonString.Wait(); var data = JsonConvert.DeserializeObject <T>(jsonString.Result); result.Success = true; result.Data = data; } else { result.ReasonPhrase = taskWithResponse.Result.ReasonPhrase; result.StatusCode = taskWithResponse.Result.StatusCode; } } })) { response.Wait(); } } catch (Exception ex) { result.Success = false; result.Exception = ex.ToString(); } return(result); }
/// <summary> /// Generic Web API caller for DELETE /// </summary> /// <param name="url">Url</param> /// <returns></returns> public ApiResponse <T> Delete <T>(string url, string token) where T : class { var result = new ApiResponse <T>(); try { HttpClient request = null; if (!token.IsNullOrWhiteSpace()) { request = BasicAuthRequestManager.ConfigureTokenReturnAuthRequest(token); } else { return new ApiResponse <T>() { ReasonPhrase = "No token included in the request", StatusCode = HttpStatusCode.ExpectationFailed } }; using ( var response = request.DeleteAsync(url).ContinueWith((taskWithResponse) => { if (taskWithResponse != null) { if (taskWithResponse.Status != TaskStatus.RanToCompletion) { result.Success = false; result.Exception = $"Server error (HTTP {taskWithResponse.Result?.StatusCode}: {taskWithResponse.Exception?.InnerException} : {taskWithResponse.Exception?.Message})."; } else if (taskWithResponse.Result.IsSuccessStatusCode) { taskWithResponse.Wait(); result.Success = true; result.ReasonPhrase = taskWithResponse.Result.ReasonPhrase; result.StatusCode = taskWithResponse.Result.StatusCode; } else { result.ReasonPhrase = taskWithResponse.Result.ReasonPhrase; result.StatusCode = taskWithResponse.Result.StatusCode; } } })) { response.Wait(); } } catch (Exception ex) { result.Success = false; result.Exception = ex.ToString(); } return(result); }