Esempio n. 1
0
        var create = function*() {
            logger.log('This script will setup basic data. Calls the latest HTTP API.');

            //Create Users
            _globals.sessions = {};
            _doHttpRequest = thunkify(doHttpRequest);

            var user, token, resp, cred, adminkey;
            for (var _i = 0; _i < data.users.length; _i++) {
                user = data.users[_i];

                logger.log("Creating a credential for " + user.username);

                cred = {
                    secret: conf.services.auth.adminkeys.default,
                    type: user.credential_type
                };

                switch(cred.type) {
                    case 'builtin':
                        cred.username = user.credential_username;
                        cred.password = user.credential_password;
                        cred.email = user.email;
                        break;
                    case 'twitter':
                        cred.username = user.credential_username;
                        cred.id = user.credential_id;
                        cred.accessToken = user.credential_accessToken;
                        cred.accessTokenSecret = user.credential_accessTokenSecret;
                        cred.email = user.email;
                        break;
                }

                resp = yield* _doHttpRequest('/api/credentials', querystring.stringify(cred), 'post');
                token = JSON.parse(resp).token;

                resp = yield* _doHttpRequest("/api/users?token=" + token, querystring.stringify(user), 'post');
                resp = JSON.parse(resp);
                logger.log("Created " + resp.username);
                _globals.sessions[user.username] = resp;

                logger.log("Creating session for " + resp.username);
                resp = yield* _doHttpRequest("/api/login?token=" + token, querystring.stringify({ token: token, username: user.username }), 'post');
                _globals.sessions[user.username].token = JSON.parse(resp).token;
            }

            var apps = {};

            var app;
            for (_i = 0; _i < data.apps.length; _i++) {
                app = data.apps[_i];
                token = _globals.sessions[app._createdBy].token;
                logger.log("Creating a new app " + app.name + " with token " + token);
                delete app._createdBy;

                if (app._message)
                    app.message = fs.readFileSync(path.resolve(__dirname, "apps/" + app._message), 'utf-8');
                delete app._message;

                if (app._about)
                    app.about = fs.readFileSync(path.resolve(__dirname, "apps/" + app._about), 'utf-8');
                delete app._about;

                app.type = "forum";
                app.version = "1.0.0";
                resp = yield* _doHttpRequest("/api/apps?token=" + token, querystring.stringify(app), 'post');
                var appJson = JSON.parse(resp);
                apps[appJson.stub] = appJson;
                logger.log("Created " + appJson.name);

                for (var u in _globals.sessions) {
                    var uToken = _globals.sessions[u];
                    if (uToken.token !== token) {
                        resp = yield* _doHttpRequest("/api/app/" + appJson.stub + "/members?token=" + uToken.token, querystring.stringify(app), 'post');
                        resp = JSON.parse(resp);
                        logger.log(u + " joined " + app.name);
                    }
                }
            }

            for (_i = 0; _i < data.records.length; _i++) {
                var article = data.records[_i];
                token = _globals.sessions[article._createdBy].token;
                adminkey = _globals.sessions.jeswin.token;

                logger.log("Creating a new article with token " + token);
                logger.log("Creating " + article.title);

                article.content_text = fs.readFileSync(path.resolve(__dirname, "records/" + article._content), 'utf-8');
                article.content_format = 'markdown';
                article.state = 'published';
                app = article._app;
                var meta = article._meta;

                delete article._app;
                delete article._createdBy;
                delete article._content;
                delete article._meta;

                resp = yield* _doHttpRequest("/api/app/" + app + "?token=" + token, querystring.stringify(article), 'post');
                resp = JSON.parse(resp);
                logger.log("Created " + resp.title + " with stub " + resp.stub);

                var metaTags = meta.split(',');
                for (var _i2 = 0; _i2 < metaTags.length; _i2++) {
                    var metaTag = metaTags[_i2];
                    resp = yield* _doHttpRequest("/api/app/" + app + "/admin/records/" + resp.stub + "?token=" + adminkey,
                        querystring.stringify({ meta: metaTag}), 'put');
                    resp = JSON.parse(resp);
                    logger.log("Added " + metaTag + " tag to article " + resp.title);
                }
            }

            //Without this return, CS will create a wrapper function to return the results (array) of: for metaTag in meta.split(',')
            return;
        };
Esempio n. 2
0
 FileService.prototype.copyFile = function*(src, dest) {
     src = fs.createReadStream(src);
     dest = fs.createWriteStream(dest);
     src.pipe(dest);
     return yield* thunkify(src.on).call(src, 'end');
 };