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); }
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)); }
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); }
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)); }
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)); }