Skip to content

Commit

Permalink
update dist
Browse files Browse the repository at this point in the history
  • Loading branch information
jhowbhz committed Sep 22, 2023
1 parent a5bde8d commit 32e8979
Show file tree
Hide file tree
Showing 42 changed files with 1,442 additions and 0 deletions.
23 changes: 23 additions & 0 deletions dist/controllers/ALController.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import { Request, Response } from 'express';
declare class Al {
index: (req: Request, res: Response) => Promise<Response<any, Record<string, any>> | undefined>;
scrap: (placa: string, renavam: string) => Promise<{
placa: string;
renavam: string;
multas: never[];
message: any;
} | {
multas: any;
placa: string;
renavam: string;
message: string;
}>;
checkErros: (browser: any, page: any, placa: string, renavam: string) => Promise<false | {
placa: string;
renavam: string;
multas: never[];
message: any;
}>;
}
export declare const al: Al;
export {};
92 changes: 92 additions & 0 deletions dist/controllers/ALController.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.al = void 0;
const utils_1 = __importDefault(require("../utils/utils"));
const validation_1 = __importDefault(require("../validations/validation"));
const puppeteer_1 = __importDefault(require("puppeteer"));
class Al {
constructor() {
this.index = async (req, res) => {
const placa = req.body.placa;
const renavam = req.body.renavam;
const errors = validation_1.default.generic(placa, renavam);
if (errors) {
return res.status(400).json(errors);
}
const multas = await this.scrap(placa, renavam);
res.status(200).json(multas);
};
this.scrap = async (placa, renavam) => {
const browser = await puppeteer_1.default.launch({
headless: process.env.NODE_ENV === 'production' ? 'new' : false,
slowMo: process.env.NODE_ENV === 'production' ? 0 : 50,
timeout: 5000,
args: [
'--no-sandbox',
'--disable-setuid-sandbox',
'--disable-dev-shm-usage',
'--disable-accelerated-2d-canvas',
]
});
const page = await browser.newPage();
await page.goto(`${process.env.AL_URL}`);
const placaSelector = '#id_placa';
const renavamSelector = '#id_renavam';
const buttonsSelector = 'button[type="submit"]';
const inputPlaca = await page.$(placaSelector);
const inputRenavam = await page.$(renavamSelector);
await (inputPlaca === null || inputPlaca === void 0 ? void 0 : inputPlaca.type(placa));
await (inputRenavam === null || inputRenavam === void 0 ? void 0 : inputRenavam.type(renavam));
const buttons = await page.$$(buttonsSelector);
const buttonSubmit = buttons[0];
await (buttonSubmit === null || buttonSubmit === void 0 ? void 0 : buttonSubmit.click());
const erros = await this.checkErros(browser, page, placa, renavam);
if (erros) {
return erros;
}
const multas = [];
const uls = await page.$$('ul.list-group');
for (let ul of uls) {
const lis = await page.$$('ul.list-group > li');
const data = {};
for (let li of lis) {
const liHtml = await page.evaluate(li => li.innerHTML, li);
const htmlContent = liHtml.split('<br>').map((item) => item.trim());
const indice = utils_1.default.removeAccents(htmlContent[0]) // Remover acentos
.replace(/(<([^>]+)>)/gi, "") // Remover tags HTML
.replace(/\n\t/g, "") // Remover quebras de linha e tabulações
.trim()
.toLowerCase()
.replace(/ /g, '_'); // Substituir espaços por underscores
const value = htmlContent[1];
data[indice] = value;
}
multas.push(data);
}
await browser.close();
return { multas: multas, placa: placa, renavam: renavam, message: '' };
};
this.checkErros = async (browser, page, placa, renavam) => {
try {
const divErrorSelector = '.error';
const divErrors = await page.waitForSelector(divErrorSelector, { timeout: 5000 });
const divErrorsHtml = await page.evaluate((divErrors) => divErrors.innerHTML, divErrors);
const errosClear = divErrorsHtml.replace(/(<([^>]+)>)/gi, "").replace(/\n\t/g, "").trim();
await browser.close();
return {
placa: placa,
renavam: renavam,
multas: [],
message: errosClear
};
}
catch (e) {
return false;
}
};
}
}
exports.al = new Al();
17 changes: 17 additions & 0 deletions dist/controllers/AMController.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import { Request, Response } from 'express';
declare class Am {
index: (req: Request, res: Response) => Promise<Response<any, Record<string, any>> | undefined>;
scrap: (placa: string, renavam: string) => Promise<{
placa: string;
renavam: string;
data: any;
error?: undefined;
} | {
placa: string;
renavam: string;
error: any;
data?: undefined;
}>;
}
export declare const am: Am;
export {};
38 changes: 38 additions & 0 deletions dist/controllers/AMController.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.am = void 0;
const utils_1 = __importDefault(require("../utils/utils"));
const validation_1 = __importDefault(require("../validations/validation"));
class Am {
constructor() {
this.index = async (req, res) => {
const placa = req.body.placa;
const renavam = req.body.renavam;
const errors = validation_1.default.generic(placa, renavam);
if (errors) {
return res.status(400).json(errors);
}
const multas = await this.scrap(placa, renavam);
res.status(200).json(multas);
};
this.scrap = async (placa, renavam) => {
try {
const response = await utils_1.default.request(`${process.env.AM_URL}/?renavam=${renavam}`, 'GET', {
'Accept-Encoding': 'gzip',
'Host': 'www.detran.am.gov.br',
'User-Agent': 'okhttp/3.12.12',
'Accept': 'application/json'
}, {});
const data = response.data;
return { placa, renavam, data };
}
catch (error) {
return { placa, renavam, error: error.message };
}
};
}
}
exports.am = new Am();
7 changes: 7 additions & 0 deletions dist/controllers/BRController.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import { Request, Response } from 'express';
declare class Br {
index: (req: Request, res: Response) => Promise<Response<any, Record<string, any>> | undefined>;
scrap: (placa: string, renavam: string) => Promise<any>;
}
export declare const br: Br;
export {};
42 changes: 42 additions & 0 deletions dist/controllers/BRController.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.br = void 0;
const utils_1 = __importDefault(require("../utils/utils"));
const validation_1 = __importDefault(require("../validations/validation"));
class Br {
constructor() {
this.index = async (req, res) => {
const placa = req.body.placa;
const renavam = req.body.renavam;
const errors = validation_1.default.generic(placa, renavam);
if (errors) {
return res.status(400).json(errors);
}
const multas = await this.scrap(placa, renavam);
res.status(200).json(multas);
};
this.scrap = async (placa, renavam) => {
try {
const payload = await utils_1.default.request(`https://api.detran.df.gov.br/app/vinculo-veiculo/area-publica/buscaVeiculo/${placa}/${renavam}?user_key=${process.env.BR_KEY}`, 'GET', {
'Connection': 'Keep-Alive',
'Accept': 'application/json, text/plain, */*',
'Host': 'api.detran.df.gov.br',
'User-Agent': 'okhttp/4.9.2',
'Content-Type': 'application/json',
'X-Application-Context': 'application:prod:8080',
'X-OneAgent-JS-Injection': true,
'X-XSS-Protection': '1; mode=block',
}, null);
const debitos = payload;
return debitos;
}
catch (e) {
return { message: 'Não foi possível fazer login no DETRAN BR', error: e.message };
}
};
}
}
exports.br = new Br();
34 changes: 34 additions & 0 deletions dist/controllers/GOController.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
import { Request, Response } from 'express';
declare class Go {
index: (req: Request, res: Response) => Promise<Response<any, Record<string, any>> | undefined>;
scrap: (placa: string, renavam: string) => Promise<{
placa: string;
renavam: string;
debitos: any;
message?: undefined;
error?: undefined;
} | {
message: string;
error: any;
placa?: undefined;
renavam?: undefined;
debitos?: undefined;
} | {
message: string;
}>;
consultaVeiculoPorPlacaRenavam: (placa: string, renavam: string, token: string) => Promise<{
placa: string;
renavam: string;
debitos: any;
message?: undefined;
error?: undefined;
} | {
message: string;
error: any;
placa?: undefined;
renavam?: undefined;
debitos?: undefined;
}>;
}
export declare const go: Go;
export {};
60 changes: 60 additions & 0 deletions dist/controllers/GOController.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.go = void 0;
const utils_1 = __importDefault(require("../utils/utils"));
const validation_1 = __importDefault(require("../validations/validation"));
class Go {
constructor() {
this.index = async (req, res) => {
const placa = req.body.placa;
const renavam = req.body.renavam;
const errors = validation_1.default.generic(placa, renavam);
if (errors) {
return res.status(400).json(errors);
}
const multas = await this.scrap(placa, renavam);
res.status(200).json(multas);
};
this.scrap = async (placa, renavam) => {
try {
const bearerToken = await utils_1.default.request(`${process.env.GO_URL}/token`, 'POST', {
'Origin': 'https://www.go.gov.br',
'Referer': 'https://www.go.gov.br/',
'Content-Type': 'application/x-www-form-urlencoded',
}, {
'grant_type': 'client_credentials',
'client_id': 'Uxw0W7lCNcM6fsewGxvDChLcEAEa',
'client_secret': 'JPU7TYzkDzafwmfgG2POSrUsbgEa'
});
const token = bearerToken.access_token;
const consultarVeiculoPorPlacaRenavam = await this.consultaVeiculoPorPlacaRenavam(placa, renavam, token);
return consultarVeiculoPorPlacaRenavam;
}
catch (e) {
return { message: 'Não foi possível fazer login no DETRAN GO' };
}
};
this.consultaVeiculoPorPlacaRenavam = async (placa, renavam, token) => {
const sessionString = '{"sistema":"SSEDI","codgChave":"EKH1A40","codgTipoChave":"03","idServico":13679,"idSessao":"","ip":"179.221.165.221"}';
const sessionBase64 = Buffer.from(sessionString).toString('base64');
try {
const payload = await utils_1.default.request(`${process.env.GO_URL}/detran/financeiro/1.0.0/sedi/financeiro/consultarVeiculoPorPlacaRenavam?placa=${placa}&renavam=${renavam}`, 'GET', {
'Origin': 'https://www.go.gov.br',
'Referer': 'https://www.go.gov.br/',
'Content-Type': 'application/json',
"Authorization": `Bearer ${token}`,
"Session": sessionBase64
}, null);
const debitos = payload;
return { placa, renavam, debitos };
}
catch (e) {
return { message: `Não foi possível encontrar o veículo ${placa} na base do DETRAN GO`, error: (e === null || e === void 0 ? void 0 : e.message) ? e === null || e === void 0 ? void 0 : e.message : null };
}
};
}
}
exports.go = new Go();
36 changes: 36 additions & 0 deletions dist/controllers/MAController.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
import { Request, Response } from 'express';
declare class Ma {
index: (req: Request, res: Response) => Promise<Response<any, Record<string, any>> | undefined>;
scrap: (placa: string, renavam: string) => Promise<{
message: any;
veiculo?: undefined;
placa?: undefined;
renavam?: undefined;
autuacoes?: undefined;
infracoes?: undefined;
} | {
veiculo: {
idVeiculo: any;
idAcesso: any;
documentoProprietario: any;
chassi: any;
};
placa: string;
renavam: string;
autuacoes: {
numeroAuto: string;
descricao: string;
localComplemento: string;
valor: number;
}[];
infracoes: {
numeroAuto: string;
descricao: string;
localComplemento: string;
valor: number;
}[];
message?: undefined;
}>;
}
export declare const ma: Ma;
export {};
Loading

0 comments on commit 32e8979

Please sign in to comment.