consultas-doc-peru
Version:
Consulta de documentos a las diferentes entidades publicas del gobierno del Perú.
122 lines (118 loc) • 4.61 kB
text/typescript
import cheerio from 'cheerio';
import { Dictionary } from 'typescript-collections';
import { IParseHtml } from './parseHtml.interface';
import { Departamento } from './departamento'
import { Direccion } from './direccion';
import { RazonSocial } from './razonSocial';
export class ParseHtml implements IParseHtml
{
/**
*
* @param string dato
* @return RazonSocial
*
*/
getRazonSocial(dato: string): RazonSocial{
const razonSocial = new RazonSocial();
let _dato: string[] = dato.split('-').map((dato: string) => dato.trim());
let _rs: string;
if (_dato.length === 3){
_rs = `${_dato[1]} - ${_dato[2]}`;
}else{
_rs = _dato[1];
}
razonSocial.Ruc = _dato[0];
razonSocial.RazonSocial = _rs;
return razonSocial;
}
/**
*
* @param string departamento
* @return Departamento
*
*/
getDepartamento(departamento: string): Departamento{
const _departamento = new Departamento();
switch(departamento.toUpperCase()){
case 'DIOS':
_departamento.Departamento = 'MADRE DE DIOS';
_departamento.Cantidad = 3;
break;
case 'MARTIN':
_departamento.Departamento = 'SAN MARTIN';
_departamento.Cantidad = 2;
break;
case 'LIBERTAD':
_departamento.Departamento = 'LA LIBERTAD';
_departamento.Cantidad = 2;
break;
default:
_departamento.Departamento = departamento;
_departamento.Cantidad = 1;
break;
}
return _departamento;
}
/**
*
* @param string direccionCompleta
* @return Direccion
*
*/
getDireccion(direccionCompleta: string): Direccion{
const direccion = new Direccion();
let _direccion: string[] = direccionCompleta.split('-').map((dato: string) => dato.trim());
let _direccionCompleta: string[] = direccionCompleta.split('-').map((dato: string) => dato.trim());
let _ultimoElemento: string;
let _docimilio: string;
let _splitDomicilio: string[]
if (_direccionCompleta.length != 3){
_direccionCompleta.splice(2);
_docimilio = _direccionCompleta.join(' ');
_splitDomicilio = _docimilio.split(' ');
_ultimoElemento = _splitDomicilio[_splitDomicilio.length -1];
}else{
_docimilio = _direccionCompleta[_direccionCompleta.length - 3];
_splitDomicilio = _docimilio.split(' ');
_ultimoElemento = _splitDomicilio[_splitDomicilio.length-1];
}
let { Cantidad, Departamento } = this.getDepartamento(_ultimoElemento);
_splitDomicilio.splice(-1*Cantidad);
direccion.Departamento = Departamento;
direccion.Provincia = _direccion[_direccion.length - 1];
direccion.Distrito = _direccion[_direccion.length - 2]
direccion.Domicilio = _splitDomicilio.join(' ')
return direccion;
}
/**
*
* @param string pagina
* @return Dictionary<string,any>
*
*/
parseHtml(pagina: string): Dictionary<string,any>{
const respuesta = new Dictionary<string, any>();
const $ = cheerio.load(pagina);
const table = $('.form-table').eq(2).find('tbody');
const html = table.first().children("tr").find("td[class=bg]").html();
if(!html){
respuesta.setValue('ERROR', {
Estado : 'ERROR',
Respuesta : $('.form-table').eq(1).children('tbody').find('tr .bg').text()
})
return respuesta;
}
table.find('tr .bg').each((i, el)=>{
let value:string[] = $(el).text().split('\n').map<string>((elemento: any) => {
if(elemento.trim() != '')
return elemento.replace(/[ \n\t]+/g, " ").trim()
}).filter((elemento: any) => {
return elemento !== undefined
});
let key: string = $(el).prev().text().replace(/[ :\n\t]+/g, " ").trim();
let vl: any = value.length <=1 ? value.join() : value;
respuesta.setValue(key, vl);
});
return respuesta;
}
}