yoichiro/chrome_mysql_admin

View on GitHub
app/scripts/window/services/ssh2_known_host_service.js

Summary

Maintainability
A
3 hrs
Test Coverage
chromeMyAdmin.factory("ssh2KnownHostService", function(
    $rootScope,
    $q
) {
    "use strict";

    var lastChecked = null;

    return {
        check: function(hostName, port, method, fingerprint) {
            lastChecked = {
                hostName: hostName,
                port: port,
                method: method,
                fingerprint: fingerprint
            };
            var deferred = $q.defer();
            chrome.storage.local.get("knownHosts", function(items) {
                var knownHosts = items.knownHosts || {};
                var key = hostName + ":" + port;
                var knownHost = knownHosts[key];
                if (knownHost) {
                    if (knownHost.method === method &&
                        knownHost.fingerprint === fingerprint) {
                        deferred.resolve({
                            result: "found"
                        });
                    } else {
                        deferred.resolve({
                            result: "not_same",
                            method: knownHost.method,
                            fingerprint: knownHost.fingerprint
                        });
                    }
                } else {
                    deferred.resolve({
                        result: "not_found"
                    });
                }
            });
            return deferred.promise;
        },
        addLastChecked: function() {
            var deferred = $q.defer();
            chrome.storage.local.get("knownHosts", function(items) {
                var knownHosts = items.knownHosts || {};
                var key = lastChecked.hostName + ":" + lastChecked.port;
                var value = {
                    method: lastChecked.method,
                    fingerprint: lastChecked.fingerprint
                };
                knownHosts[key] = value;
                chrome.storage.local.set({knownHosts: knownHosts}, function() {
                    deferred.resolve();
                });
            });
            return deferred.promise;
        },
        getAll: function() {
            var deferred = $q.defer();
            chrome.storage.local.get("knownHosts", function(items) {
                var knownHosts = items.knownHosts || {};
                deferred.resolve(knownHosts);
            });
            return deferred.promise;
        }
    };
});