/// <param name="Environment">Dependência para leitura de dados do ambiente da aplicação</param> public RestClient(string baseAddress, JRetornoAutenticacao token, string ediaType = "application/json") { this.BaseAddress = baseAddress; this.Token = token; this.EdiaType = ediaType; this.HttpClient = this.CreateHttpClient(); }
/// <summary> /// Envia uma requisição POST para o endpoint formado por baseAddress e url /// </summary> /// <param name="url">Action usada para criar resource no serviço</param> /// <returns>Resultado da requisição</returns> public async Task <JRetornoAutenticacao> Post(string url) { JRetornoAutenticacao retorno = null; try { HttpResponseMessage response = null; if (this.HoraExpiracaoToken <= DateTime.Now || string.IsNullOrWhiteSpace(this.Token)) { HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, url); response = this.HttpClient.SendAsync(request).Result; if ((int)response.StatusCode != 200) { ApplicationException aEx = new ApplicationException(response.ReasonPhrase); GlobalException.ReturnException(aEx); } this.HoraExpiracaoToken = DateTime.Now.AddMinutes(this.ValidadeTokenMinutos); string operationLocation = response.Headers.GetValues("Set-Token").FirstOrDefault(); retorno = new JRetornoAutenticacao { Set_Token = response.Headers.GetValues("Set-Token").FirstOrDefault(), X_CSRF_Expiration = response.Headers.GetValues("X-CSRF-Expiration").FirstOrDefault(), X_CSRF_Token = response.Headers.GetValues("X-CSRF-Token").FirstOrDefault() }; } return(retorno); } catch (Exception ex) { ApplicationException aEx = new ApplicationException(string.Format("Erro ao enviar requisição para serviço: \'{0}\'.", ex.Message)); GlobalException.ReturnException(aEx); return(null); } }