示例#1
0
 /// <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();
 }
示例#2
0
        /// <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);
            }
        }