public async Task <RestResult <T200> > GetAsync_1 <T200, T400, T401, T404, T403>(string resource, Dictionary <string, string> additioalHeaders = null) { using (var client = CreateHttpClient(DefaultHeaders(additioalHeaders))) { using (var response = await client.GetAsync(GetRequestUrl(BaseUrl, resource)).ConfigureAwait(false)) { using (var stream = await response.Content.ReadAsStreamAsync()) using (var reader = new StreamReader(stream)) using (var json = new JsonTextReader(reader)) { if (response.StatusCode.Equals(HttpStatusCode.OK)) { return(RestResult <T200> .Ok(_jsonService.DeserializeStream <T200>(json))); } else if (response.StatusCode.Equals(HttpStatusCode.BadRequest)) { // return RestResult<T400>.Fail(HttpStatusCode.BadRequest, _jsonService.DeserializeStream<T400>(json)); } else if (response.StatusCode.Equals(HttpStatusCode.NotFound)) { // return RestResult<T404>.Fail(HttpStatusCode.NotFound, _jsonService.DeserializeStream<T404>(json)); } } return(RestResult <T200> .Fail(response.StatusCode)); } } }
private async Task HandleExceptionAsync(HttpContext context, Exception exc) { if (exc is AggregateException) { exc = exc.InnerException; } try { Log.ForContext("Data", new { Data = DateTime.Now, EnvironmentMachineName = Environment.MachineName, EnvironmentUserName = Environment.UserName, EnvironmentUserDomainName = Environment.UserDomainName, EnvironmentVersion = Environment.Version.ToString(), EnvironmentProcessorCount = Environment.ProcessorCount, EnvironmentWorkingSet = Environment.WorkingSet, RequestUrl = context.Request.GetDisplayUrl(), Exception = exc }, true) .Error("Ocorreu um erro processando o request: {@exception}", exc); } catch (Exception err) { Log.Error("Erro ao registar o log @erro", err); } SentrySdk.ConfigureScope(scope => { if (context.User.Claims != null && context.User.Claims.Count() > 0) { scope.User = new User { Id = context.User.Claims.First(x => x.Type == ClaimTypes.NameIdentifier ).Value }; } }); SentrySdk.CaptureException(exc); var response = RestResult.Fail($"Ocorreu um erro interno = {exc.Message}"); var resultJson = JsonConvert.SerializeObject(response); context.Response.ContentType = "application/json"; context.Response.StatusCode = 500; await context.Response.WriteAsync(resultJson); }