You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@couchdb.apache.org by ga...@apache.org on 2015/09/10 13:37:07 UTC

[2/2] couchdb-nmo git commit: Refactor common url check code

Refactor common url check code


Project: http://git-wip-us.apache.org/repos/asf/couchdb-nmo/repo
Commit: http://git-wip-us.apache.org/repos/asf/couchdb-nmo/commit/308a4ada
Tree: http://git-wip-us.apache.org/repos/asf/couchdb-nmo/tree/308a4ada
Diff: http://git-wip-us.apache.org/repos/asf/couchdb-nmo/diff/308a4ada

Branch: refs/heads/master
Commit: 308a4ada0cc200ea7226fa09c4c8a8966b260ac4
Parents: 320105f
Author: Garren Smith <ga...@gmail.com>
Authored: Thu Sep 10 10:18:55 2015 +0200
Committer: Garren Smith <ga...@gmail.com>
Committed: Thu Sep 10 13:36:32 2015 +0200

----------------------------------------------------------------------
 src/couch-config.js | 21 ++++++++++-----------
 src/isonline.js     |  9 ++-------
 src/utils.js        | 10 ++++++++++
 test/utils.js       | 17 +++++++++++++++++
 4 files changed, 39 insertions(+), 18 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/couchdb-nmo/blob/308a4ada/src/couch-config.js
----------------------------------------------------------------------
diff --git a/src/couch-config.js b/src/couch-config.js
index 4bc2733..4012f12 100644
--- a/src/couch-config.js
+++ b/src/couch-config.js
@@ -10,7 +10,14 @@ export function cli (cmd, cluster, section, key, value) {
   return new Promise((resolve, reject) => {
 
     if (!cmd || !cluster || !exports[cmd]) {
-      const err = new Error('Usage: nmo couch-config add/set <cluster> ...');
+      const msg = [
+        'Usage:',
+        '',
+        'nmo couch-config get <cluster> [<section>] [--json]',
+        'nmo config-config set <cluster> <section>, <key>, <value>'
+      ].join('\n');
+
+      const err = new Error(msg);
       err.type = 'EUSAGE';
       return reject(err);
     }
@@ -88,11 +95,7 @@ export function set(cluster, nodes, section, key, value) {
 
 export function setConfig (node, url, value) {
   return new Promise((resolve, reject) => {
-    let er = utils.checkUrl(url);
-
-    if (!er && !/^(http:|https:)/.test(url)) {
-      er = new Error('invalid protocol, must be https or http');
-    }
+    let er = utils.validUrl(url);
 
     if (er) {
       er.type = 'EUSAGE';
@@ -134,11 +137,7 @@ export function buildConfigUrl (node, url, section, key) {
 
 export function getConfig (node, url) {
   return new Promise((resolve, reject) => {
-    let er = utils.checkUrl(url);
-
-    if (!er && !/^(http:|https:)/.test(url)) {
-      er = new Error('invalid protocol, must be https or http');
-    }
+    let er = utils.validUrl(url);
 
     if (er) {
       er.type = 'EUSAGE';

http://git-wip-us.apache.org/repos/asf/couchdb-nmo/blob/308a4ada/src/isonline.js
----------------------------------------------------------------------
diff --git a/src/isonline.js b/src/isonline.js
index a3a88aa..5fbce1d 100644
--- a/src/isonline.js
+++ b/src/isonline.js
@@ -73,11 +73,7 @@ function isonline (...args) {
 
 function isNodeOnline (url) {
   return new Promise((resolve, reject) => {
-    let er = utils.checkUrl(url);
-
-    if (!er && !/^(http:|https:)/.test(url)) {
-      er = new Error('invalid protocol, must be https or http');
-    }
+    const er = utils.validUrl(url);
 
     if (er) {
       er.type = 'EUSAGE';
@@ -87,8 +83,7 @@ function isNodeOnline (url) {
     log.http('request', 'GET', cleanedUrl);
 
     Wreck.get(url, (err, res, payload) => {
-      if (err && (err.code === 'ECONNREFUSED'
-        || err.code === 'ENOTFOUND')) {
+      if (err && (err.code === 'ECONNREFUSED' || err.code === 'ENOTFOUND')) {
         return resolve({[url]: false});
       }
 

http://git-wip-us.apache.org/repos/asf/couchdb-nmo/blob/308a4ada/src/utils.js
----------------------------------------------------------------------
diff --git a/src/utils.js b/src/utils.js
index 1c02195..885dedb 100644
--- a/src/utils.js
+++ b/src/utils.js
@@ -8,6 +8,16 @@ import Promise from 'bluebird';
 import log from 'npmlog';
 import url from 'url';
 
+export function validUrl (url) {
+  let er = checkUrl(url);
+
+  if (!er && !/^(http:|https:)/.test(url)) {
+    er = new Error('invalid protocol, must be https or http');
+  }
+
+  return er;
+}
+
 export function isUri (url) {
   return !!checkUri(url);
 }

http://git-wip-us.apache.org/repos/asf/couchdb-nmo/blob/308a4ada/test/utils.js
----------------------------------------------------------------------
diff --git a/test/utils.js b/test/utils.js
index 41a31ea..8770e64 100644
--- a/test/utils.js
+++ b/test/utils.js
@@ -7,6 +7,23 @@ export const lab = Lab.script();
 import * as utils from '../src/utils.js';
 import * as common from './common.js';
 
+lab.experiment('utils: validUrl', () => {
+
+  lab.test('checks protocol of url', done => {
+    const err = utils.validUrl('ftp://wrong.com');
+
+    assert.ok(/invalid protocol/.test(err.message));
+    done();
+  });
+
+  lab.test('returns null if url is valid', done => {
+    const err = utils.validUrl('http://good.com');
+
+    assert.ok(err === null);
+    done();
+  });
+
+});
 
 lab.experiment('utils: uri', () => {