]> git.immae.eu Git - perso/Immae/Projets/Nodejs/Surfer.git/blobdiff - cli/actions.js
Improve error handling on login
[perso/Immae/Projets/Nodejs/Surfer.git] / cli / actions.js
index 2bc0d7da02d84ad4c11c31305356f762084197c2..bdfc066b0cde2194dd02fb9b1f217e74c083ae58 100644 (file)
@@ -10,6 +10,7 @@ var superagent = require('superagent'),
     readlineSync = require('readline-sync'),
     async = require('async'),
     fs = require('fs'),
+    url = require('url'),
     path = require('path');
 
 require('colors');
@@ -48,29 +49,28 @@ function collectFiles(filesOrFolders) {
     return tmp;
 }
 
-function checkResponse(error, result) {
-    if (error && error.status === 401) {
-        console.log('Login failed');
-        process.exit(1);
-    } else if (error) {
-        console.log('Error', result ? result.text : error);
-        process.exit(1);
-    }
-}
+function login(uri) {
+    var tmp = url.parse(uri);
+    if (!tmp.host) tmp = url.parse('https://' + uri);
 
-function login(server) {
-    if (server[server.length-1] === '/') server = server.slice(0, -1);
+    var server = tmp.protocol + '//' + tmp.host;
 
-    console.log('Using server', server);
+    console.log('Using server', server.bold);
 
     var username = readlineSync.question('Username: ', { hideEchoBack: false });
     var password = readlineSync.question('Password: ', { hideEchoBack: true });
 
     superagent.get(server + API + '/').query({ username: username, password: password }).end(function (error, result) {
-        console.log(result.status);
-
+        if (error && error.code === 'ENOTFOUND') {
+            console.log('No such server %s'.red, server.bold);
+            process.exit(1);
+        }
+        if (error.code) {
+            console.log('Failed to connect to server %s'.red, server.bold, error.code);
+            process.exit(1);
+        }
         if (result.status === 401) {
-            console.log('Login failed.');
+            console.log('Login failed.'.red);
             process.exit(1);
         }
 
@@ -81,6 +81,8 @@ function login(server) {
         config.set('password', password);
 
         gQuery = { username: username, password: password };
+
+        console.log('Ok'.green);
     });
 }