예제 #1
0
        protected virtual RespuestaFegora <T> Ejecutar <T>(HttpRequestMessage request, bool forzarReconexion) where T : new()
        {
            var respFegora = new RespuestaFegora <T>();

            #region Autenticacion
            if (_session.Token == null)
            {
                var respConexion = _session.Conectar();
                if (respConexion.TieneError)
                {
                    respFegora.TieneError = true;
                    respFegora.Error      = respConexion.Error;
                    respFegora.Contenido  = default(T);

                    return(respFegora);
                }
            }
            request.Headers.Add("Authorization", "Bearer " + _session.Token.access_token);
            #endregion

            var response       = _session.Client.SendAsync(request).Result;
            var resultAsString = response.Content.ReadAsStringAsync().Result;

            // respuesta correcta
            if (response.IsSuccessStatusCode)
            {
                respFegora.TieneError = false;
                respFegora.Contenido  = JsonConvert.DeserializeObject <T>(resultAsString);
                respFegora.Error      = new Error();
            }
            // error de autenticacion
            else if (response.StatusCode == HttpStatusCode.Unauthorized)
            {
                respFegora.TieneError = true;
                respFegora.Error      = new Error()
                {
                    Mensaje = "Error de autenticaión"
                };

                // intentar renovar token
                if (forzarReconexion)
                {
                    _session.Conectar();
                    respFegora = Ejecutar <T>(request, false);
                }
            }
            // algún otro error proveniente del api
            else
            {
                respFegora.TieneError = true;
                respFegora.Error      = JsonConvert.DeserializeObject <Error>(resultAsString);
                respFegora.Contenido  = new T();
            }

            return(respFegora);
        }
예제 #2
0
        public RespuestaFegora <Dte> Obtener(string id)
        {
            var aDevolver = new RespuestaFegora <Dte>();

            // resource
            var request = new HttpRequestMessage(HttpMethod.Get, string.Format("dte/{0}", id));

            // response
            return(Ejecutar <Dte>(request));
        }
예제 #3
0
        internal RespuestaFegora Conectar()
        {
            var respuestaADevolver = new RespuestaFegora();

            // params
            var parameters = new Dictionary <string, string>();

            parameters.Add("grant_type", "password");
            parameters.Add("username", Username);
            parameters.Add("password", Password);
            parameters.Add("client_id", ClientId);

            // headers
            var request = new HttpRequestMessage(HttpMethod.Post, "token")
            {
                Content = new FormUrlEncodedContent(parameters)
            };

            request.Method = HttpMethod.Post;

            // response
            HttpResponseMessage response = null;

            try
            {
                response = Client.SendAsync(request).Result;
            }
            catch (Exception ex)
            {
                var x = ex.Message;
            }

            var resultAsString = response.Content.ReadAsStringAsync().Result;

            if (response.IsSuccessStatusCode)
            {
                Token = JsonConvert.DeserializeObject <Token>(resultAsString);
                respuestaADevolver.TieneError = false;
            }
            else
            {
                var errorToken = JsonConvert.DeserializeObject <ErrorToken>(resultAsString);
                respuestaADevolver.Error = new Error
                {
                    Mensaje = string.Format("{0}: {1}", errorToken.error, errorToken.error_description)
                };
                respuestaADevolver.TieneError = true;
                Token = null;
            }

            return(respuestaADevolver);
        }
예제 #4
0
        public RespuestaFegora <Dte> Crear(Dte dte)
        {
            var aDevolver = new RespuestaFegora <Dte>();

            // resource
            var request = new HttpRequestMessage(HttpMethod.Post, "dte");

            // params
            var json    = JsonConvert.SerializeObject(dte);
            var content = new StringContent(json, Encoding.UTF8, "application/json");

            request.Content = content;

            // response
            return(Ejecutar <Dte>(request));
        }
예제 #5
0
        public RespuestaFegora <Dte> Anular(string id, string motivoAnulacion)
        {
            var aDevolver = new RespuestaFegora <Dte>();

            // construir datos dte para anulacion
            var dte = new Dte();

            dte.Id             = id;
            dte.Anulado        = true;
            dte.DatosAnulacion = new DatosAnulacion();
            dte.DatosAnulacion.MotivoAnulacion = motivoAnulacion;

            // resource
            var request = new HttpRequestMessage(new HttpMethod("PATCH"), "dte");

            // params
            var json    = JsonConvert.SerializeObject(dte);
            var content = new StringContent(json, Encoding.UTF8, "application/json");

            request.Content = content;

            // response
            return(Ejecutar <Dte>(request));
        }