From 2cc13f8ea6634f9a8bb1c393eb485d1aaf75942e Mon Sep 17 00:00:00 2001 From: Luigi Freitas Cruz Date: Tue, 8 Aug 2017 00:29:29 -0300 Subject: [PATCH 1/8] Suporte ao DirectCall. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Não testado. --- src/gemidao.js | 48 ++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 40 insertions(+), 8 deletions(-) diff --git a/src/gemidao.js b/src/gemidao.js index c884548..380e1cf 100644 --- a/src/gemidao.js +++ b/src/gemidao.js @@ -3,17 +3,19 @@ import agent from 'superagent'; import promisifyAgent from 'superagent-promise'; const request = promisifyAgent(agent, Bluebird); -const route = path => `https://api.totalvoice.com.br${path}`; +const routeDirectCall = pathDirectCall => `https://api.directcallsoft.com${path}`; +const routeTotalVoice = pathTotalVoice => `https://api.totalvoice.com.br${path}`; const gemidaoInText = 'OOOWH AHHHWN WOOOO AAAAHN WAAAAA AAAAAAHN ANN WAAA!\n' + 'Voce caiu no gemidao do zap'; -const sms = (to, token) => request.post(route('/sms')) +// TotalVoice +const smsTotalVoice = (to, token) => request.post(routeTotalVoice('/sms')) .set('Access-Token', token) .set('Accept', 'application/json') .send({ numero_destino: to, mensagem: gemidaoInText }); -const call = (from, to, token) => request.post(route('/composto')) +const callTotalVoice = (from, to, token) => request.post(routeTotalVoice('/composto')) .set('Access-Token', token) .set('Accept', 'application/json') .send({ @@ -29,18 +31,48 @@ const call = (from, to, token) => request.post(route('/composto')) bina: from }); +// DirectCall +const smsDirectCall = (from, to, token) => request.post(route('/sms/send')) + .set('Accept', 'application/json') + .send({ + origem: from, + access_token: token, + destino: to, + texto: gemidaoInText + }); + +const callDirectCall = (from, to, token) => request.post(route('/sms/audio')) + .set('Access-Token', token) + .set('Accept', 'application/json') + .send({ + access_token: token, + audio: 'https://github.com/haskellcamargo/gemidao-do-zap/raw/master/resources/gemidao.mp3' + }); + +// Comum export default function gemidao(args) { - if (!/^[a-f0-9]{32}$/.test(args.token)) { - return reject(new Error('Token inválido. Obtenha um em https://totalvoice.com.br')); + if (!/^[a-f0-9]{45}$/.test(args.token)) { + return reject(new Error('Token inválido. Obtenha um em https://www.directcallsoft.com')); } if (!/^[0-9]{10,11}$/.test(args.para)) { return reject(new Error('Número de telefone inválido')); } - const action = args.sms - ? sms(args.para, args.token) - : call(args.de, args.para, args.token); + switch(args.api) { + case "TotalVoice": + const action = args.sms + ? smsTotalVoice(args.de, args.para, args.token) + : callTotalVoice(args.de, args.para, args.token); + break; + case "DirectCall": + const action = args.sms + ? smsDirectCall(args.de, args.para, args.token) + : callDirectCall(args.de, args.para, args.token); + break; + default: + return reject(new Error('Escolha uma das APIs Suportadas: DirectCall ou TotalVoice.')); + } return action .catch(err => { From 1dc0705405cc83b7d3f9c6e76a15abeff87880dc Mon Sep 17 00:00:00 2001 From: Luigi Freitas Cruz Date: Tue, 8 Aug 2017 00:31:21 -0300 Subject: [PATCH 2/8] Suporte DirectCall --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index cc50c4f..969bb2c 100644 --- a/README.md +++ b/README.md @@ -37,14 +37,15 @@ Você terá disponível globalmente o comando `gemidao-do-zap`. | Parâmetro | Obrigatório | Descrição | |-----------|--------------------|-----------------------------------------------------------| -| `--token` | :white_check_mark: | Seu token de acesso do TotalVoice | +| `--token` | :white_check_mark: | Seu token de acesso do TotalVoice ou DirectCall | | `--de` | | Quem está enviando o gemidão? Qualquer número telefônico! | | `--para` | :white_check_mark: | Quem é a vítima do gemidão do zap? | | `--sms` | | Se definido, será enviado um SMS ao invés de uma chamada | +| `--api`   | :white_check_mark: | Escolha entre TotalVoice ou DirectCall | ### Exemplo -`gemidao-do-zap --de=47998569631 --para=47996326548 --token=ade6a19ecee14577634f66af105eb68c` +`gemidao-do-zap --de=47998569631 --para=47996326548 --api=TotalVoice --token=ade6a19ecee14577634f66af105eb68c` Observações: From 046486671b0a6f88f2f41761a569b7880653afaf Mon Sep 17 00:00:00 2001 From: Luigi Freitas Cruz Date: Tue, 8 Aug 2017 00:37:19 -0300 Subject: [PATCH 3/8] =?UTF-8?q?Valida=C3=A7=C3=A3o=20do=20Token?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ~Ainda não testado~ --- src/gemidao.js | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/gemidao.js b/src/gemidao.js index 380e1cf..5d4bc4c 100644 --- a/src/gemidao.js +++ b/src/gemidao.js @@ -51,21 +51,25 @@ const callDirectCall = (from, to, token) => request.post(route('/sms/audio')) // Comum export default function gemidao(args) { - if (!/^[a-f0-9]{45}$/.test(args.token)) { - return reject(new Error('Token inválido. Obtenha um em https://www.directcallsoft.com')); - } - if (!/^[0-9]{10,11}$/.test(args.para)) { return reject(new Error('Número de telefone inválido')); } switch(args.api) { case "TotalVoice": + if (!/^[a-f0-9]{32}$/.test(args.token)) { + return reject(new Error('Token inválido. Obtenha um em https://totalvoice.com.br')); + } + const action = args.sms ? smsTotalVoice(args.de, args.para, args.token) : callTotalVoice(args.de, args.para, args.token); break; case "DirectCall": + if (!/^[a-f0-9]{45}$/.test(args.token)) { + return reject(new Error('Token inválido. Obtenha um em https://www.directcallsoft.com')); + } + const action = args.sms ? smsDirectCall(args.de, args.para, args.token) : callDirectCall(args.de, args.para, args.token); From ac476ac618ffdfeaa3e506111b57c5d560eb870d Mon Sep 17 00:00:00 2001 From: Luigi Freitas Cruz Date: Tue, 8 Aug 2017 00:43:57 -0300 Subject: [PATCH 4/8] Fix uri --- src/gemidao.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gemidao.js b/src/gemidao.js index 5d4bc4c..a05cb88 100644 --- a/src/gemidao.js +++ b/src/gemidao.js @@ -32,7 +32,7 @@ const callTotalVoice = (from, to, token) => request.post(routeTotalVoice('/compo }); // DirectCall -const smsDirectCall = (from, to, token) => request.post(route('/sms/send')) +const smsDirectCall = (from, to, token) => request.post(routeDirectCall('/sms/send')) .set('Accept', 'application/json') .send({ origem: from, @@ -41,7 +41,7 @@ const smsDirectCall = (from, to, token) => request.post(route('/sms/send')) texto: gemidaoInText }); -const callDirectCall = (from, to, token) => request.post(route('/sms/audio')) +const callDirectCall = (from, to, token) => request.post(routeDirectCall('/sms/audio')) .set('Access-Token', token) .set('Accept', 'application/json') .send({ From b51ed57067170446cca7be6590b67d0524a07b8d Mon Sep 17 00:00:00 2001 From: Luigi Freitas Cruz Date: Tue, 8 Aug 2017 00:51:08 -0300 Subject: [PATCH 5/8] Fix TotalVoice function call. --- src/gemidao.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gemidao.js b/src/gemidao.js index a05cb88..0ce10e5 100644 --- a/src/gemidao.js +++ b/src/gemidao.js @@ -62,7 +62,7 @@ export default function gemidao(args) { } const action = args.sms - ? smsTotalVoice(args.de, args.para, args.token) + ? smsTotalVoice(args.para, args.token) : callTotalVoice(args.de, args.para, args.token); break; case "DirectCall": From 2e9c3597ecf8705680a4a90339566d057e8c8706 Mon Sep 17 00:00:00 2001 From: Iago Caldeira Date: Wed, 9 Aug 2017 02:14:40 -0300 Subject: [PATCH 6/8] Fix de toda sintaxe e estrutura para suportar nova API --- src/cli.js | 7 ++++++- src/gemidao.js | 53 +++++++++++++++++++++++++------------------------- 2 files changed, 32 insertions(+), 28 deletions(-) diff --git a/src/cli.js b/src/cli.js index 0ecb479..8e7da0a 100644 --- a/src/cli.js +++ b/src/cli.js @@ -10,7 +10,8 @@ const emitError = message => console.log(red(` ✗ Erro: ${message}`)); function cli(args) { gemidao(args) - .then(() => { + .then(res => { + console.log(res); emitSuccess(args.sms ? 'sms enviado!' : 'chamada efetuada!'); }) .catch(pipe(prop('message'), emitError)); @@ -34,6 +35,10 @@ cli(yargs describe: 'Se definido, será enviado um SMS ao invés de uma chamada', type: 'boolean' }) + .option('api', { + describe: 'Escolha entre TotalVoice ou DirectCall (Padrão:TotalVoice)', + type: 'string' + }) .demandOption(['para', 'token']) .locale('pt_BR') .strict() diff --git a/src/gemidao.js b/src/gemidao.js index 0ce10e5..b5a4455 100644 --- a/src/gemidao.js +++ b/src/gemidao.js @@ -3,8 +3,8 @@ import agent from 'superagent'; import promisifyAgent from 'superagent-promise'; const request = promisifyAgent(agent, Bluebird); -const routeDirectCall = pathDirectCall => `https://api.directcallsoft.com${path}`; -const routeTotalVoice = pathTotalVoice => `https://api.totalvoice.com.br${path}`; +const routeDirectCall = pathDirectCall => `https://api.directcallsoft.com${pathDirectCall}`; +const routeTotalVoice = pathTotalVoice => `https://api.totalvoice.com.br${pathTotalVoice}`; const gemidaoInText = 'OOOWH AHHHWN WOOOO AAAAHN WAAAAA AAAAAAHN ANN WAAA!\n' + 'Voce caiu no gemidao do zap'; @@ -42,7 +42,6 @@ const smsDirectCall = (from, to, token) => request.post(routeDirectCall('/sms/se }); const callDirectCall = (from, to, token) => request.post(routeDirectCall('/sms/audio')) - .set('Access-Token', token) .set('Accept', 'application/json') .send({ access_token: token, @@ -55,35 +54,35 @@ export default function gemidao(args) { return reject(new Error('Número de telefone inválido')); } - switch(args.api) { - case "TotalVoice": - if (!/^[a-f0-9]{32}$/.test(args.token)) { - return reject(new Error('Token inválido. Obtenha um em https://totalvoice.com.br')); - } - - const action = args.sms - ? smsTotalVoice(args.para, args.token) - : callTotalVoice(args.de, args.para, args.token); - break; - case "DirectCall": - if (!/^[a-f0-9]{45}$/.test(args.token)) { - return reject(new Error('Token inválido. Obtenha um em https://www.directcallsoft.com')); + const action = + (() => { + if (args.api.length === 0 || args.api === "TotalVoice") { + if (!/^[a-f0-9]{32}$/.test(args.token)) { + return reject(new Error('Token inválido. Obtenha um em https://totalvoice.com.br')); + } + return args.sms + ? smsTotalVoice(args.para, args.token) + : callTotalVoice(args.de, args.para, args.token); + } else if (args.api === "DirectCall") { + // O token da DirectCall possui mais de 250 carecteres + // e nao tem tamanho definido, além de usar simbolos + // + // if (!/^[a-f0-9]$/.test(args.token)) { + // console.log(args.token); + // return reject(new Error('Token inválido. Obtenha um em https://www.directcallsoft.com')); + // } + return args.sms + ? smsDirectCall(args.de, args.para, args.token) + : callDirectCall(args.de, args.para, args.token); + } else { + return reject(new Error('Escolha uma das APIs Suportadas: DirectCall ou TotalVoice.')); } - - const action = args.sms - ? smsDirectCall(args.de, args.para, args.token) - : callDirectCall(args.de, args.para, args.token); - break; - default: - return reject(new Error('Escolha uma das APIs Suportadas: DirectCall ou TotalVoice.')); - } - + })(); return action .catch(err => { if (err.status === 405 || err.status === 403) { return reject(new Error((err.body || err.response.body).mensagem)); } - return reject(err); }); -} +} \ No newline at end of file From 373529f6f43f51cf8fe41c794c6245cdc2f87791 Mon Sep 17 00:00:00 2001 From: iagocaldeira Date: Wed, 9 Aug 2017 02:47:42 -0300 Subject: [PATCH 7/8] =?UTF-8?q?Corre=C3=A7=C3=B5es=20de=20code=20style?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/gemidao.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/gemidao.js b/src/gemidao.js index b5a4455..608b3f6 100644 --- a/src/gemidao.js +++ b/src/gemidao.js @@ -54,16 +54,16 @@ export default function gemidao(args) { return reject(new Error('Número de telefone inválido')); } - const action = - (() => { - if (args.api.length === 0 || args.api === "TotalVoice") { + const action + = (() => { + if (args.api.length === 0 || args.api === 'TotalVoice') { if (!/^[a-f0-9]{32}$/.test(args.token)) { return reject(new Error('Token inválido. Obtenha um em https://totalvoice.com.br')); } return args.sms ? smsTotalVoice(args.para, args.token) : callTotalVoice(args.de, args.para, args.token); - } else if (args.api === "DirectCall") { + } else if (args.api === 'DirectCall') { // O token da DirectCall possui mais de 250 carecteres // e nao tem tamanho definido, além de usar simbolos // @@ -85,4 +85,4 @@ export default function gemidao(args) { } return reject(err); }); -} \ No newline at end of file +} From d797d1cdb66163c80c3f53ec9ee1b43c266654f7 Mon Sep 17 00:00:00 2001 From: iagocaldeira Date: Wed, 9 Aug 2017 02:50:30 -0300 Subject: [PATCH 8/8] =?UTF-8?q?Corre=C3=A7=C3=A3o=20de=20no-else-after-ret?= =?UTF-8?q?urn?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/gemidao.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/gemidao.js b/src/gemidao.js index 608b3f6..55aec6f 100644 --- a/src/gemidao.js +++ b/src/gemidao.js @@ -74,9 +74,8 @@ export default function gemidao(args) { return args.sms ? smsDirectCall(args.de, args.para, args.token) : callDirectCall(args.de, args.para, args.token); - } else { - return reject(new Error('Escolha uma das APIs Suportadas: DirectCall ou TotalVoice.')); } + return reject(new Error('Escolha uma das APIs Suportadas: DirectCall ou TotalVoice.')); })(); return action .catch(err => {