public ResponceInfo SendMessage(RequestInfo request) { var(isValid, results) = Validate.ValidateModel(request); if (isValid) { try { Log.Logger().LogInformation("Request: " + Environment.NewLine + request.Url + Environment.NewLine + request.Method + Environment.NewLine + request.Content.ReadAsStringAsync().Result); var resp = fprovider.SendRequest(request); var content = ServiceHelpers.GetObjectFromString(resp.Result.Content.ReadAsStringAsync().Result); Log.Logger().LogInformation("Responce: " + Environment.NewLine + resp.Result.StatusCode + Environment.NewLine + resp.Result.Content.ReadAsStringAsync().Result); return(new ResponceInfo { Headers = resp.Result.Headers, Content = content, Request = request, StatusCode = resp.Result.StatusCode }); } catch (FlurlHttpTimeoutException) { Log.Logger().LogError("Request:" + request.Url + Environment.NewLine + request.Method + Environment.NewLine + request.Content.Headers.ToString() + Environment.NewLine + "timed out."); return(new ResponceInfo { Headers = null, Content = new StringContent(string.Empty), StatusCode = System.Net.HttpStatusCode.GatewayTimeout, Request = request }); } catch (Exception ex) { if (ex.InnerException is FlurlHttpException fex) { if (fex.Call == null) { Log.Logger().LogError("Request:" + request.Url + Environment.NewLine + request.Method + Environment.NewLine + request.Content.Headers.ToString() + Environment.NewLine + "failed:" + fex.Message); Log.Logger().LogInformation("Responce status code: " + Environment.NewLine + System.Net.HttpStatusCode.BadRequest); return(new ResponceInfo { Headers = null, Content = new StringContent(string.Empty), StatusCode = System.Net.HttpStatusCode.BadRequest, Request = request }); } else { string fexResult = string.Empty; if (fex.Call.Response != null) { fexResult = fex.Call.Response.ResponseMessage.Content.ReadAsStringAsync().Result; Log.Logger().LogInformation("Responce: " + Environment.NewLine + fex.Call.Response.StatusCode + Environment.NewLine + fexResult); } else { Log.Logger().LogInformation("Responce is empty. Check request parameters."); Log.Logger().LogError("Request:" + request.Url + Environment.NewLine + request.Method + Environment.NewLine + request.Content.Headers.ToString() + Environment.NewLine + "failed:" + fex.Message); return(null); } Log.Logger().LogError("Request:" + request.Url + Environment.NewLine + request.Method + Environment.NewLine + request.Content.Headers.ToString() + Environment.NewLine + "failed:" + fex.Message); var content = ServiceHelpers.GetObjectFromString(fexResult); return(new ResponceInfo { Headers = fex.Call.Response.ResponseMessage.Headers, Content = content, StatusCode = fex.Call.Response.ResponseMessage.StatusCode, Request = request }); } } Log.Logger().LogError("Request:" + request.Url + Environment.NewLine + request.Method + Environment.NewLine + request.Content.Headers.ToString() + Environment.NewLine + "failed:" + ex.Message); Log.Logger().LogInformation("Responce: " + Environment.NewLine + System.Net.HttpStatusCode.BadRequest); return(new ResponceInfo { Headers = null, Content = new StringContent(string.Empty), StatusCode = System.Net.HttpStatusCode.BadRequest, Request = request }); } } else { Log.Logger().LogInformation($"Request is not valid " + Environment.NewLine + request.Url + Environment.NewLine + request.Method + Environment.NewLine + request.Content.ReadAsStringAsync().Result); return(null); } }
public WebService(RequestInfo request) { fprovider = new FlurlProvider(request); }