private string SubirArchivo(string url) { string Id = string.Empty; try { string content = string.Empty; byte[] oFileToSave = null; ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | SecurityProtocolType.Tls11; ServicePointManager.ServerCertificateValidationCallback += RemoteCertificateValidationCallback; log.Info("Se descargara el certificado con la siguiente url " + url); HttpWebRequest request = Funciones.GenerarRequest(url); log.Info("Invocando a la descarga del archivo con la siguiente url " + url); WebResponse response = (HttpWebResponse)request.GetResponse(); log.Info("Obteniendo la respuesta del Endpoint " + url); using (StreamReader reader = new StreamReader(response.GetResponseStream())) { oFileToSave = reader.CurrentEncoding.GetBytes(reader.ReadToEnd()); } log.Info("Iniciando Configuracion de Digiweb para subir el archivo previamente descargado"); string digiwebEndpoint = ConfigurationManager.AppSettings["DigiWebEndpoint"]; string digiDocCodigoSistema = ConfigurationManager.AppSettings["DigiDocCodigoSistema"]; string digiDocCodigoExterno = ConfigurationManager.AppSettings["DigiDocCodigoExterno"]; string digiDocCodigoId = ConfigurationManager.AppSettings["DigiDocCodigoId"]; DigiWeb.DigitalizacionServicio service = new DigiWeb.DigitalizacionServicio(); service.Credentials = CredentialCache.DefaultCredentials; service.Url = digiwebEndpoint; log.Info("Invocando a Digiweb para obtener la ruta de subida del archivo"); string oRuta = service.CalcularRutaSistema(digiDocCodigoSistema); string filename = string.Empty; filename = Path.GetFileName(url); filename = filename.Substring(0, filename.IndexOf(".")) + ".pdf"; Guid oGuid_A_Traer; DigiWeb.EDocumentoOriginal oEDocumentoOriginal = new DigiWeb.EDocumentoOriginal(); oEDocumentoOriginal.Id = Guid.NewGuid(); oEDocumentoOriginal.CodigoSistema = digiDocCodigoSistema; oEDocumentoOriginal.TipoEDocumentoId = Convert.ToInt32(digiDocCodigoId); oEDocumentoOriginal.EstadoEDocumentoId = 1; oEDocumentoOriginal.Entidad = "0"; oEDocumentoOriginal.PreCuil = 0; oEDocumentoOriginal.NumeroDocumento = "0"; oEDocumentoOriginal.DigitoVerificador = 0; oEDocumentoOriginal.TipoTramite = 0; oEDocumentoOriginal.Secuencia = 0; oEDocumentoOriginal.Nombre = filename; oEDocumentoOriginal.Ruta = oRuta + "\\" + filename; oEDocumentoOriginal.FechaIndexacion = DateTime.Now; oEDocumentoOriginal.CodigoExterno = digiDocCodigoExterno; log.Info("Invocando a Digiweb para la subida logica del archivo"); service.GuardarEDocumentoV2(oEDocumentoOriginal); oGuid_A_Traer = oEDocumentoOriginal.Id; log.Info("Inicio subida fisica del archivo nombre " + filename + " a la siguiente ruta " + oRuta); File.WriteAllBytes(oRuta + "\\" + filename, oFileToSave); log.Info("Invocando a Digiweb para verificar que se haya hecho la subida del archivo"); var oEDocumentoSubido = service.TraerEDocumento(oGuid_A_Traer); if (oEDocumentoSubido != null) { Id = Convert.ToString(oGuid_A_Traer); log.Info("Se ha subido el archivo de nombre " + filename + " con el Id " + Id); } } catch (Exception ex) { log.Error("Fallo la subida del archivo de la url " + url); log.Error("Motivo del fallo: " + ex.Message); Console.WriteLine(ex.Message); } return(Id); }
private IT_Archivo SubirArchivoRest(string url) { var archivo = new IT_Archivo(); archivo.Id = string.Empty; archivo.Error = false; archivo.Detalle = string.Empty; archivo.Url = url; archivo.Extension = string.Empty; try { string content = string.Empty; byte[] oFileToSave = null; log.Info("Se descargara el certificado con la siguiente url " + url); var client = new RestClient(); client.Proxy = Funciones.CrearProxy(); client.BaseUrl = new Uri(url); ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | SecurityProtocolType.Tls11; ServicePointManager.ServerCertificateValidationCallback += RemoteCertificateValidationCallback; ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(delegate { return(true); }); log.Info("Invocando a la descarga del archivo con la siguiente url " + url); var request = new RestRequest(); request.Method = Method.GET; log.Info("Obteniendo la respuesta del Endpoint " + url); oFileToSave = client.DownloadData(request); archivo.Nombre = Path.GetFileName(url); string filename = archivo.Nombre; archivo.Extension = CheckFileExtension(oFileToSave); if (string.IsNullOrEmpty(archivo.Extension)) { throw new Exception("El archivo no es valido " + archivo.Nombre); } filename = filename.Substring(0, filename.IndexOf(".")) + "." + archivo.Extension; log.Info("Iniciando Configuracion de Digiweb para subir el archivo previamente descargado"); string digiwebEndpoint = ConfigurationManager.AppSettings["DigiWebEndpoint"]; string digiDocCodigoSistema = ConfigurationManager.AppSettings["DigiDocCodigoSistema"]; string digiDocCodigoExterno = ConfigurationManager.AppSettings["DigiDocCodigoExterno"]; string digiDocCodigoId = ConfigurationManager.AppSettings["DigiDocCodigoId"]; DigiWeb.DigitalizacionServicio service = new DigiWeb.DigitalizacionServicio(); service.Credentials = CredentialCache.DefaultCredentials; service.Url = digiwebEndpoint; log.Info("Invocando a Digiweb para obtener la ruta de subida del archivo"); string oRuta = service.CalcularRutaSistema(digiDocCodigoSistema); Guid oGuid_A_Traer; DigiWeb.EDocumentoOriginal oEDocumentoOriginal = new DigiWeb.EDocumentoOriginal(); oEDocumentoOriginal.Id = Guid.NewGuid(); oEDocumentoOriginal.CodigoSistema = digiDocCodigoSistema; oEDocumentoOriginal.TipoEDocumentoId = Convert.ToInt32(digiDocCodigoId); oEDocumentoOriginal.EstadoEDocumentoId = 1; oEDocumentoOriginal.Entidad = "0"; oEDocumentoOriginal.PreCuil = 0; oEDocumentoOriginal.NumeroDocumento = "0"; oEDocumentoOriginal.DigitoVerificador = 0; oEDocumentoOriginal.TipoTramite = 0; oEDocumentoOriginal.Secuencia = 0; oEDocumentoOriginal.Nombre = filename; oEDocumentoOriginal.Ruta = oRuta + "\\" + filename; oEDocumentoOriginal.FechaIndexacion = DateTime.Now; oEDocumentoOriginal.CodigoExterno = digiDocCodigoExterno; log.Info("Invocando a Digiweb para la subida logica del archivo"); service.GuardarEDocumentoV2(oEDocumentoOriginal); oGuid_A_Traer = oEDocumentoOriginal.Id; log.Info("Inicio subida fisica del archivo nombre " + filename + " a la siguiente ruta " + oRuta); File.WriteAllBytes(oRuta + "\\" + filename, oFileToSave); log.Info("Invocando a Digiweb para verificar que se haya hecho la subida del archivo"); var oEDocumentoSubido = service.TraerEDocumento(oGuid_A_Traer); if (oEDocumentoSubido != null) { archivo.Id = Convert.ToString(oGuid_A_Traer); log.Info("Se ha subido el archivo de nombre " + filename + " con el Id " + archivo.Id); } else { throw new Exception("No se ha podido recuperar el archivo de nombre " + filename); } } catch (Exception ex) { archivo.Id = string.Empty; archivo.Error = true; archivo.Detalle = "Fallo la subida del archivo " + (archivo.Nombre ?? archivo.Url); log.Error("Fallo la subida del archivo de la url " + url); log.Error("Motivo del fallo: " + ex.Message); Console.WriteLine(ex.Message); } return(archivo); }
public Proveedor consultarPadronRest(string cuit) { log.Info("Cuit Ingresado " + cuit); cuit = Funciones.ConvertToCUIT(cuit); Certificacion[] certificaciones = new Certificacion[0]; Proveedor proveedor = new Proveedor(); IT_Mensaje mensaje = new IT_Mensaje(); string usuarioProxy = ConfigurationManager.AppSettings["CPA_Proxy_Usuario"]; string passwdProxy = ConfigurationManager.AppSettings["CPA_Proxy_Passwd"]; string domainProxy = ConfigurationManager.AppSettings["CPA_Proxy_Dominio"]; string WSApiEndpoint = ConfigurationManager.AppSettings["WS_ApiEndpoint"]; string WSApiParameter = ConfigurationManager.AppSettings["WS_ApiParameter"]; Uri WSUriApi = new Uri(WSApiEndpoint + "?" + WSApiParameter + "=" + cuit); var client = new RestClient(WSApiEndpoint); client.Proxy = Funciones.CrearProxy(); ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | SecurityProtocolType.Tls11; ServicePointManager.ServerCertificateValidationCallback += RemoteCertificateValidationCallback; ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(delegate { return(true); }); mensaje.Consulta = cuit; mensaje.Mensaje = string.Empty; var request = new RestRequest("?" + WSApiParameter + "=" + cuit, Method.GET); System.Diagnostics.Stopwatch timer = new System.Diagnostics.Stopwatch(); string content = string.Empty; log.Info("Invocacion al Endpoint de Renappo " + WSApiEndpoint + " con el siguiente parametro y valor " + WSApiParameter + "=" + cuit); timer.Start(); var response = client.Execute(request); timer.Stop(); long tiempo = timer.ElapsedMilliseconds / 1000; log.Info("Tiempo Renappo - invocacion: " + tiempo + "segundos"); timer.Restart(); if (response != null && !string.IsNullOrEmpty(response.Content) && response.StatusCode == HttpStatusCode.OK) { log.Info("Respuesta Renappo - Servicio : " + Environment.NewLine + JValue.Parse(response.Content)?.ToString(Newtonsoft.Json.Formatting.Indented)); log.Info("Parseando el la respuesta previamente obtenida"); certificaciones = JsonConvert.DeserializeObject <Certificacion[]>(response.Content); } else { mensaje.Tipo = "E"; log.Info( "Respuesta Renappo - Servicio : " + Environment.NewLine + "Estado - " + response?.StatusCode + Environment.NewLine + "Descripcion" + response?.StatusDescription); } if (certificaciones != null && certificaciones.Any()) { if (certificaciones.Any(x => x.Fallo)) { mensaje.Mensaje = certificaciones.FirstOrDefault(x => x.Fallo)?.Mensaje; mensaje.Tipo = "E"; proveedor.Detalle = null; proveedor.Actividades = null; } else { string mensajeVacio = "No se pudo obtener información"; mensaje.Tipo = "S"; IT_Detalle detalle = new IT_Detalle(); List <IT_Actividad> actividades = new List <IT_Actividad>(); foreach (var certificacion in certificaciones) { detalle.RazonSocial = !string.IsNullOrEmpty(certificacion.RazonSocial) ? certificacion.RazonSocial : mensajeVacio; detalle.Intermediario = !string.IsNullOrEmpty(certificacion.Medio) ? certificacion.Medio : mensajeVacio; detalle.Habilitado = !string.IsNullOrEmpty(certificacion.Habilitado) ? certificacion.Habilitado : mensajeVacio; detalle.FechaVigenciaDesde = Funciones.ConvertToFechaFormato(Funciones.ConvertToFechaVigencia(certificacion.FechaVigencia, Parametros.FechaVigencia.Desde), null); detalle.FechaVigenciaHasta = Funciones.ConvertToFechaFormato(Funciones.ConvertToFechaVigencia(certificacion.FechaVigencia, Parametros.FechaVigencia.Hasta), null); #region Tarifario if (!string.IsNullOrEmpty(certificacion.Tarifario)) { var tarifario = SubirArchivoRest(certificacion.Tarifario); if (tarifario != null && !tarifario.Error && !string.IsNullOrEmpty(tarifario.Id)) { detalle.Tarifario = tarifario.Id; } else { mensaje.Tipo = "W"; mensaje.Mensaje = mensaje.Mensaje + tarifario.Detalle + "; "; detalle.Tarifario = null; } } else { detalle.Tarifario = mensajeVacio; } #endregion #region Cobertura Geografica if (!string.IsNullOrEmpty(certificacion.CoberturaGeografica)) { var cobertura = SubirArchivoRest(certificacion.CoberturaGeografica); if (cobertura != null && !cobertura.Error && !string.IsNullOrEmpty(cobertura.Id)) { detalle.CoberturaGeografica = cobertura.Id; } else { mensaje.Tipo = "W"; mensaje.Mensaje = mensaje.Mensaje + cobertura.Detalle + "; "; detalle.CoberturaGeografica = null; } } else { detalle.CoberturaGeografica = mensajeVacio; } #endregion if (!string.IsNullOrEmpty(certificacion.Certificado)) { log.Info("Parseando el campo certificado para obtener la/s actividad/es del Proveedor"); var elementos = XElement.Parse(certificacion.Certificado); if (elementos.HasElements) { foreach (var elemento in elementos.Elements()) { var elementosTexto = elemento.Descendants()?.Where(x => x.FirstNode != null && x.FirstNode.NodeType == XmlNodeType.Text); if (elementosTexto != null && elementosTexto.Any()) { var actividad = new IT_Actividad(); actividad.Actividad = elementosTexto?.FirstOrDefault(x => x.Parent.Value.Contains("CERTIFICADO HABILITANTE") && x.Name == "strong").Value; actividad.Fecha = Funciones.ConvertToFechaFormato(elementosTexto?.FirstOrDefault(x => x.Value.Contains("Fecha:"))?.Value, "Fecha:"); actividad.Vencimiento = Funciones.ConvertToFechaFormato(elementosTexto?.FirstOrDefault(x => x.Value.Contains("Vencimiento:"))?.Value, "Vencimiento:"); actividad.Certificado = elementosTexto?.FirstOrDefault(x => x.Value.Contains("RENAPPO")).Value.Trim() ?? mensajeVacio; actividades.Add(actividad); } } } proveedor.Actividades = actividades.ToArray(); } else { log.Info("No se pudo obtener la/s actividad/es del Proveedor"); } } proveedor.Detalle = detalle; } } proveedor.Mensaje = mensaje; timer.Stop(); tiempo = timer.ElapsedMilliseconds / 1000; log.Info("Tiempo Servicio - procesamiento: " + tiempo + "segundos"); return(proveedor); }
public Proveedor consultarPadron(string cuit) { log.Info("Cuit Ingresado " + cuit); cuit = Funciones.ConvertToCUIT(cuit); Certificacion[] certificaciones = new Certificacion[0]; Proveedor proveedor = new Proveedor(); string usuarioProxy = ConfigurationManager.AppSettings["CPA_Proxy_Usuario"]; string passwdProxy = ConfigurationManager.AppSettings["CPA_Proxy_Passwd"]; string domainProxy = ConfigurationManager.AppSettings["CPA_Proxy_Dominio"]; string WSApiEndpoint = ConfigurationManager.AppSettings["WS_ApiEndpoint"]; string WSApiParameter = ConfigurationManager.AppSettings["WS_ApiParameter"]; Uri WSUriApi = new Uri(WSApiEndpoint + "?" + WSApiParameter + "=" + cuit); log.Debug("Seteando PROXY."); string urlProxy = ConfigurationManager.AppSettings["CPA_Proxy_URL"]; WebProxy Proxy = new WebProxy(new Uri(urlProxy)); Proxy.BypassProxyOnLocal = false; Proxy.UseDefaultCredentials = false; Proxy.Credentials = new NetworkCredential(usuarioProxy, passwdProxy, domainProxy); ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | SecurityProtocolType.Tls11; ServicePointManager.ServerCertificateValidationCallback += RemoteCertificateValidationCallback; ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(delegate { return(true); }); log.Info("Invocacion al Endpoint de Renappo " + WSApiEndpoint + " con el siguiente parametro y valor " + WSApiParameter + "=" + cuit); //HttpWebRequest request = Funciones.GenerarRequest(WSApiEndpoint + "?" + WSApiParameter + "=" + cuit); HttpWebRequest request = WebRequest.Create(WSUriApi) as HttpWebRequest; request.ContentType = "text/html; charset=utf-8"; //request.ContentType = "application/x-www-form-urlencoded"; //request.Accept = "application/json"; request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3"; request.Method = WebRequestMethods.Http.Get; //request.KeepAlive = true; request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36"; request.PreAuthenticate = true; //request.AuthenticationLevel = AuthenticationLevel.MutualAuthRequested; request.Proxy = Proxy; //request.Credentials = CredentialCache.DefaultCredentials; string content = string.Empty; WebResponse response = (HttpWebResponse)request.GetResponse(); using (StreamReader reader = new StreamReader(response.GetResponseStream())) { content = reader.ReadToEnd(); } if (!string.IsNullOrEmpty(content) && content.Length > 0 && !content.StartsWith("[{")) { throw new Exception(content); } log.Info("Respuesta del Endpoint " + WSApiEndpoint + ": " + Environment.NewLine + content); log.Info("Parseando el la respuesta previamente obtenida"); certificaciones = JsonConvert.DeserializeObject <Certificacion[]>(content); if (certificaciones != null && certificaciones.Any()) { if (certificaciones.Any(x => x.Fallo)) { throw new Exception(certificaciones.FirstOrDefault(x => x.Fallo)?.Mensaje); } IT_Detalle detalle = new IT_Detalle(); List <IT_Actividad> actividades = new List <IT_Actividad>(); foreach (var certificacion in certificaciones) { detalle.RazonSocial = certificacion.RazonSocial; detalle.Intermediario = certificacion.Medio; detalle.Habilitado = certificacion.Habilitado; detalle.FechaVigenciaDesde = Funciones.ConvertToFechaFormato(Funciones.ConvertToFechaVigencia(certificacion.FechaVigencia, Parametros.FechaVigencia.Desde), null); detalle.FechaVigenciaHasta = Funciones.ConvertToFechaFormato(Funciones.ConvertToFechaVigencia(certificacion.FechaVigencia, Parametros.FechaVigencia.Hasta), null); detalle.Tarifario = SubirArchivo(certificacion.Tarifario); detalle.CoberturaGeografica = SubirArchivo(certificacion.CoberturaGeografica); if (!string.IsNullOrEmpty(certificacion.Certificado)) { log.Info("Parseando el campo certificado para obtener la/s actividad/es del Proveedor"); var elementos = XElement.Parse(certificacion.Certificado); if (elementos.HasElements) { foreach (var elemento in elementos.Elements()) { var elementosTexto = elemento.Descendants()?.Where(x => x.FirstNode != null && x.FirstNode.NodeType == XmlNodeType.Text); var actividad = new IT_Actividad(); actividad.Actividad = elementosTexto?.FirstOrDefault(x => x.Parent.Value.Contains("CERTIFICADO HABILITANTE") && x.Name == "strong").Value; actividad.Fecha = Funciones.ConvertToFechaFormato(elementosTexto?.FirstOrDefault(x => x.Value.Contains("Fecha:"))?.Value, "Fecha:"); actividad.Vencimiento = Funciones.ConvertToFechaFormato(elementosTexto?.FirstOrDefault(x => x.Value.Contains("Vencimiento:"))?.Value, "Vencimiento:"); actividad.Certificado = elementosTexto?.FirstOrDefault(x => x.Value.Contains("RENAPPO")).Value.Trim(); actividades.Add(actividad); } } } } proveedor.Detalle = detalle; proveedor.Actividades = actividades.ToArray(); } return(proveedor); }