From c27554b32bc39334fc22d792efd4a6dcd57e7d5c Mon Sep 17 00:00:00 2001 From: Gabriel Oliveira Date: Tue, 25 Apr 2017 11:17:16 -0300 Subject: [PATCH] =?UTF-8?q?Adicionando=20inicial=20DY=20e=20op=C3=A7=C3=A3?= =?UTF-8?q?o=20para=20n=C3=A3o=20filtrar?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 15 +++++++++++++++ src/track.js | 12 ++++++++---- src/utils/tracking-helpers.js | 1 + tests/responses/valid-two.json | 11 ----------- tests/unit/fixtures/response-valid-two.xml | 11 ----------- 5 files changed, 24 insertions(+), 26 deletions(-) diff --git a/README.md b/README.md index 26f724e..bcaf4de 100644 --- a/README.md +++ b/README.md @@ -128,6 +128,18 @@ TrackingCorreios.track('invalido') } ``` +Se não quiser filtrar, use a configuração `filter`: + +```js +TrackingCorreios.track('invalido', { filter: false }) + .catch(console.log) + +> [ { + numero: 'invalido', + erro: 'Objeto não encontrado na base de dados dos Correios.' +} ] +``` + O método `track` retorna uma Promise, portanto o tratamento de erros deve ser feito pelo `.catch`. Exemplo de API fora do ar: ```js @@ -153,6 +165,7 @@ Pode também passar um objeto de configuração como segundo parâmetro. TrackingCorreios.track('DU897123996BR', { username: undefined, password: undefined, + filter: true, type: "L", result: "T", language: "101", @@ -164,6 +177,8 @@ Os parâmetros `username`, `password`, `type`, `result` e `language` serão envi O parâmetro `limit` indica a quantidade máxima de objetos a ser enviado por requisição. Se passar 8 mil objetos e o limite for 5 mil, o módulo fará duas requisições. Se passar mil objetos e o limite for 1, fará mil requisições. +O parâmetro `filter` indica se deve realizar a filtragem de pacotes válidos antes de acessar a API do Correios. + As requisições não são paralelas, serão realizadas uma após a outra. A Promise só resolverá quando todas as requisições terminarem. ## Validação de objetos diff --git a/src/track.js b/src/track.js index ed21330..9bd97fc 100644 --- a/src/track.js +++ b/src/track.js @@ -25,7 +25,8 @@ function track (objects, configParams = {}) { type: "L", result: "T", language: "101", - limit: 5000 + limit: 5000, + filter: true }, configParams) return new Promise( (resolve, reject) => { @@ -53,7 +54,8 @@ function track (objects, configParams = {}) { function validateParams (params) { if ( params.configParams.type && params.configParams.result && params.configParams.language && params.configParams.limit > 0 && - params.configParams.limit <= MAX_OBJECTS_CORREIOS) + params.configParams.limit <= MAX_OBJECTS_CORREIOS && + typeof params.configParams.filter === 'boolean') { return params } @@ -62,7 +64,7 @@ function track (objects, configParams = {}) { message: 'Erro ao validar os parâmetros.', type: 'validation_error', errors: [{ - message: 'Type, result e language não podem ser undefined.', + message: 'Type, result e language não podem ser undefined, filter deve ser boolean', service: 'param_validation' }] }) @@ -71,7 +73,9 @@ function track (objects, configParams = {}) { function filterObjects (params) { params.objects = Helpers.arrayOf(params.objects) - params.objects = filter(params.objects) + if(params.configParams.filter) { + params.objects = filter(params.objects) + } return params } diff --git a/src/utils/tracking-helpers.js b/src/utils/tracking-helpers.js index 7cabeba..bdce6f1 100644 --- a/src/utils/tracking-helpers.js +++ b/src/utils/tracking-helpers.js @@ -53,6 +53,7 @@ const validInitials = { 'DV': 'SEDEX c/ AR digital', 'DW': 'Encomenda SEDEX (Etiqueta Lógica)', 'DX': 'SEDEX 10', + 'DY': 'Encomenda SEDEX (Etiqueta Física)', 'EA': 'Encomenda Internacional - EMS', 'EB': 'Encomenda Internacional - EMS', 'EC': 'PAC', diff --git a/tests/responses/valid-two.json b/tests/responses/valid-two.json index 3354617..5540111 100644 --- a/tests/responses/valid-two.json +++ b/tests/responses/valid-two.json @@ -182,17 +182,6 @@ "bairro": "Dist Indust Domingos Biancardi", "uf": "SP" } - }, - { - "tipo": "PO", - "status": "01", - "data": "25/10/2016", - "hora": "16:35", - "descricao": "Objeto postado", - "local": "AGF OZANAN", - "codigo": "13215971", - "cidade": "Jundiai", - "uf": "SP" } ] } diff --git a/tests/unit/fixtures/response-valid-two.xml b/tests/unit/fixtures/response-valid-two.xml index efb8a9b..b9bd366 100644 --- a/tests/unit/fixtures/response-valid-two.xml +++ b/tests/unit/fixtures/response-valid-two.xml @@ -188,17 +188,6 @@ SP - - PO - 01 - 25/10/2016 - 16:35 - Objeto postado - AGF OZANAN - 13215971 - Jundiai - SP -