diff --git a/@types/index.d.ts b/@types/index.d.ts index d2d9f96..cd665f6 100644 --- a/@types/index.d.ts +++ b/@types/index.d.ts @@ -29,9 +29,9 @@ export const enum Rota { export interface Event { codigo: string; - tipo: string; - dtHrCriado: string; descricao: string; + dtHrCriado: string; + tipo: string; unidade: Unidade; unidadeDestino: Unidade | null; comentario?: string; @@ -50,19 +50,25 @@ export interface TipoPostal { categoria: string; } -export interface CorreiosResponse { +export interface ObjectItem { codObjeto: string; - tipoPostal: TipoPostal; - dtPrevista: string; - modalidade: string; eventos: Event[]; - situacao: string; - autoDeclaracao: boolean; - encargoImportacao: boolean; - percorridaCarteiro: boolean; + modalidade: string; + tipoPostal: TipoPostal; + habilitaAutoDeclaracao: boolean; + permiteEncargoImportacao: boolean; + habilitaPercorridaCarteiro: boolean; bloqueioObjeto: boolean; - arEletronico: boolean; - redis: boolean; + possuiLocker: boolean; + habilitaLocker: boolean; + habilitaCrowdshipping: boolean; +} + +export interface CorreiosResponse { + objetos: ObjectItem[]; + quantidade: number; + resultado: string; + versao: string; } export interface CorreiosError { diff --git a/src/index.ts b/src/index.ts index dac2cbf..dceee38 100644 --- a/src/index.ts +++ b/src/index.ts @@ -24,13 +24,13 @@ const run = async () => { const data = await getData(code); - const events = data?.eventos || []; + const events = data?.objetos[0]?.eventos || []; events?.reverse().forEach((event) => { - const { descricao, descricaoWeb, dtHrCriado, unidade, unidadeDestino } = event; + const { descricao, dtHrCriado, unidade, unidadeDestino } = event; - log(`==> ${getIcon(descricaoWeb)} ${chalk.bold(descricao)}`); - log(chalk.blackBright(`Data: ${dtHrCriado}`)); + log(`==> ${getIcon(descricao)} ${chalk.bold(descricao)}`); + log(chalk.blackBright(`Data: ${new Date(dtHrCriado).toLocaleString()}`)); log(chalk.blackBright(`Local: ${getAddress(unidade)}`)); if (unidadeDestino) { diff --git a/src/utils/api.ts b/src/utils/api.ts index 96cdf7f..641cffa 100644 --- a/src/utils/api.ts +++ b/src/utils/api.ts @@ -1,15 +1,10 @@ import axios from 'axios'; import type { CorreiosError, CorreiosResponse } from '@types'; -const baseURL = 'https://rastreamento.correios.com.br/app/resultado.php'; +const baseURL = 'https://proxyapp.correios.com.br/v1/sro-rastro'; export const fetchObject = async (code: string) => { - const { data } = await axios.get(baseURL, { - params: { - objeto: code, - mqs: 'S', - }, - }); + const { data } = await axios.get(`${baseURL}/${code}`); return data; }; diff --git a/src/utils/icon.ts b/src/utils/icon.ts index 1fb7d16..541abd0 100644 --- a/src/utils/icon.ts +++ b/src/utils/icon.ts @@ -1,12 +1,12 @@ const iconByStatus: Record = { - TRANSITO: "🚚", - "SAIU-ENTREGA-DESTINATARIO": "🙌", - ENTREGUE: "🎁", - PAR31: "🤑", // Pagamento confirmado - PAR17: "💸", // Aguardando pagamento - PAR21: "🔎", // Encaminhado para fiscalização aduaneira - RecebidoCorreiosBrasil: "🛬", - POSTAGEM: "📦", + "Objeto em trânsito - por favor aguarde": "🚚", + "Objeto saiu para entrega ao destinatário": "🙌", + "Objeto entregue ao destinatário": "🎁", + "Pagamento confirmado": "🤑", + "Aguardando o pagamento do despacho postal": "💸", + "Objeto encaminhado para fiscalização aduaneira": "🔎", + "Objeto recebido pelos correios do Brasil": "🛬", + "Objeto postado": "📦", DEFAULT: "🚧" }; diff --git a/tests/utils/api.spec.ts b/tests/utils/api.spec.ts index fb3d342..64c4b2d 100644 --- a/tests/utils/api.spec.ts +++ b/tests/utils/api.spec.ts @@ -29,23 +29,27 @@ describe('Função fetchObject', function() { it('deve retornar os valores corretos da api dos correios', async () => { const mockedResponse = { - codObjeto: 'codObjeto', - tipoPostal: - { - sigla: 'sigla', - descricao: 'descricao', - categoria: 'categoria', - }, - dtPrevista: 'dtPrevista', - modalidade: 'modalidade', - eventos: [], - situacao: 'situacao', - autoDeclaracao: true, - encargoImportacao: true, - percorridaCarteiro: true, - bloqueioObjeto: true, - arEletronico: true, - redis: true, + objetos: [{ + codObjeto: 'codObjeto', + tipoPostal: + { + sigla: 'sigla', + descricao: 'descricao', + categoria: 'categoria', + }, + modalidade: 'modalidade', + eventos: [], + habilitaAutoDeclaracao: true, + permiteEncargoImportacao: true, + habilitaPercorridaCarteiro: true, + bloqueioObjeto: true, + possuiLocker: true, + habilitaLocker: true, + habilitaCrowdshipping: true, + }], + quantidade: 1, + resultado: "Todos os Eventos", + versao: "1.0.0" }; makeCorreiosResponse(mockedResponse); const result = await fetchObject('123'); diff --git a/tests/utils/icon.spec.ts b/tests/utils/icon.spec.ts index a36a070..e480248 100644 --- a/tests/utils/icon.spec.ts +++ b/tests/utils/icon.spec.ts @@ -3,14 +3,14 @@ import { getIcon } from '../../src/utils'; describe('Função getIcon', function() { it.each` status | value - ${'TRANSITO'} | ${'🚚'} - ${'SAIU-ENTREGA-DESTINATARIO'} | ${'🙌'} - ${'ENTREGUE'} | ${'🎁'} - ${'PAR31'} | ${'🤑'} - ${'PAR17'} | ${'💸'} - ${'PAR21'} | ${'🔎'} - ${'RecebidoCorreiosBrasil'} | ${'🛬'} - ${'POSTAGEM'} | ${'📦'} + ${'Objeto em trânsito - por favor aguarde'} | ${'🚚'} + ${'Objeto saiu para entrega ao destinatário'} | ${'🙌'} + ${'Objeto entregue ao destinatário'} | ${'🎁'} + ${'Pagamento confirmado'} | ${'🤑'} + ${'Aguardando o pagamento do despacho postal'} | ${'💸'} + ${'Objeto encaminhado para fiscalização aduaneira'} | ${'🔎'} + ${'Objeto recebido pelos correios do Brasil'} | ${'🛬'} + ${'Objeto postado'} | ${'📦'} ${'DEFAULT'} | ${'🚧'} ${'RANDOM STATUS'} | ${'🚧'} `('deve retornar os icones corretos de acordo com o mapeamento ', function({ status, value }) {