lib/28.js

Summary

Maintainability
D
2 days
Test Coverage
'use strict';

var syncLib = require('./sync');

var Options = syncLib.Options;
var Client = syncLib.Client;

var $28 = (function() {

    function $28(apiEndpoint){
        this.api = require('28.io-nodejs').$28(apiEndpoint);
        this.Options = Options;
    }

    $28.prototype.sync = function(type, projectEndpoint, projectToken, localProjectPath, overwrite, deleteOrphaned, simulate, ignore, concurrency) {
        var client = new Client(this.api, projectEndpoint, projectToken, localProjectPath);
        var method = type === 'download' ? client.download : client.upload;
        return method.apply(client, [overwrite, deleteOrphaned, simulate, ignore, concurrency]);
    };

    $28.prototype.download = function(projectEndpoint, projectToken, localProjectPath, overwrite, deleteOrphaned, simulate, ignore, concurrency) {
        return this.sync('download', projectEndpoint, projectToken, localProjectPath, overwrite, deleteOrphaned, simulate, ignore, concurrency);
    };

    $28.prototype.upload = function(projectEndpoint, projectToken, localProjectPath, overwrite, deleteOrphaned, simulate, ignore, concurrency) {
        return this.sync('upload', projectEndpoint, projectToken, localProjectPath, overwrite, deleteOrphaned, simulate, ignore, concurrency);
    };

    $28.prototype.import = function(projectEndpoint, projectToken, archive, contentType, root){
        return this.api.Batch(projectEndpoint).importProject({
            archive: archive,
            contentType: contentType,
            token: projectToken,
            overwrite: 'yes',
            'delete-orphaned': true,
            root: root
        });
    };

    $28.prototype.truncate = function(projectEndpoint, projectToken, simulate, ignore) {
        var client = new Client(this.api, projectEndpoint, projectToken);
        return client.truncate(simulate, ignore);
    };

    $28.prototype.refreshTokens = function(email, token){
        return this.api.Auth.authenticate({
            email: email,
            refresh_token: token,
            grant_type: 'refresh_token'
        });
    };

    $28.prototype.login = function(email, password) {
        return this.api.Auth.authenticate({
            email: email,
            password: password,
            grant_type: 'client_credentials'
        });
    };

    $28.prototype.resetPassword = function(email, password, token) {
        return this.api.Account.updateAccount({
            email: email,
            password: password,
            token: token
        });
    };

    $28.prototype.existsProject = function(name) {
        return this.api.Project.checkProject({
            projectName: name
        });
    };

    $28.prototype.upgradeProject = function(name, token) {
        return this.api.Project.upgradeProject({
            projectName: name,
            token: token
        });
    };

    $28.prototype.createProject = function(projectName, token) {
        return this.api.Project.createProject({
            projectName: projectName,
            package: 'free',
            token: token
        });
    };

    $28.prototype.deleteProject = function(projectName, token){
        return this.api.Project.deleteProject({
            projectName: projectName,
            token: token
        });
    };

    $28.prototype.getQueryTrace = function(projectEndpoint, token, path) {
        return this.api.Queries(projectEndpoint).getQueryTrace({ token: token, queryPath: path });
    };

    $28.prototype.getCustomRewriteRules = function(projectName, token){
        return this.api.Project.getCustomRewriteRules({ projectName: projectName, token: token });
    };

    $28.prototype.setCustomRewriteRules = function(projectName, token, customRewrites) {
        return this.api.Project.setCustomRewriteRules({ projectName: projectName, token: token, customRewrites: customRewrites });
    };

    $28.prototype.listDatasources = function(projectEndpoint, token){
        return this.api.Datasources(projectEndpoint).listDatasources({ token: token });
    };

    $28.prototype.createDatasource = function(projectEndpoint, category, name, token, difault, credentials){
        return this.api.Datasources(projectEndpoint).createDatasource({
            category: category,
            name: name,
            token: token,
            default: difault,
            credentials: credentials
        });
    };

    $28.prototype.updateDatasource = function(projectEndpoint, name, category, newname, token, difault, credentials){
        return this.api.Datasources(projectEndpoint).updateDatasource({
            category: category,
            datasource: name,
            name: newname,
            token: token,
            default: difault,
            credentials: credentials
        });
    };

    $28.prototype.removeDatasource = function(projectEndpoint, category, datasource, projectToken){
        return this.api.Datasources(projectEndpoint).removeDatasource({
            category: category,
            datasource: datasource,
            token: projectToken
        });
    };

    $28.prototype.getDefaultMongoDBCredentials = function(projectName, token){
        return this.api.Project.getDefaultMongoDBCredentials({
            projectName: projectName,
            token: token
        });
    };

    $28.prototype.updateDefaultMongoDBCredentials = function(
        projectName, token, dbType, connString, db, username, password, preDigested
    ){
        return this.api.Project.updateDefaultMongoDBCredentials({
            projectName: projectName,
            token: token,
            dbType: dbType,
            connString: connString,
            db: db,
            user: username,
            pass: password,
            preDigested: preDigested
        });
    };

    $28.prototype.overwriteCoercion = function(value, cmd){
        value = value.toLowerCase();
        if(value === 'yes' || value === 'all' || value === 'always') {
            return Options.OVERWRITE_ALWAYS;
        } else if(value === 'no' || value === 'none' || value === 'never') {
            return Options.OVERWRITE_NEVER;
        } else if(value === 'ask') {
            return Options.OVERWRITE_ASK;
        } else if(value === 'if-newer') {
            return Options.OVERWRITE_IF_NEWER;
        } else {
            console.error('Invalid option value for the overwrite option.'.red);
            cmd.help();
        }
    };

    $28.prototype.concurrencyCoercion = function(value, cmd){
        var intValue = Math.floor(Number(value));
        if (String(intValue) === value && intValue > 0) {
            return intValue; }
        else {
            console.error('Invalid option value for the concurrency option.'.red);
            cmd.help();
        }
    };


    return $28;
})();

exports.$28 = $28;
exports.VFS = require('./vfs').VFS;