Esempio n. 1
0
 (data, next) => {
   const itemId = data.item.itemId;
   const playerId = data.player.playerId;
   const itemValue = Math.min(65535, data.item.itemValue + 10);
   const playerItems = _.without(data.player.playerItems, itemId);
   const target = 'player' + data.item.itemEffectTarget;
   let targetValue = data.player[target] + data.item.itemEffectValue;
   targetValue = Math.max(0, targetValue);
   if (target === 'playerExp') {
     targetValue = Math.min(65535, targetValue);
   } else {
     targetValue = Math.min(255, targetValue);
   }
   async.parallel({
     player: (done) => {
       service.user.updatePlayer(playerId, {
         playerItems: playerItems.join(','),
         [target]: targetValue
       }, done);
     },
     item: (done) => {
       service.item.updateItem(itemId, {
         itemValue: itemValue
       }, done);
     },
   }, next);
 },
Esempio n. 2
0
  mongo.find('post', {postId: postId}, {postId: true, postItemId: true, postUserId: true, postDateTime: true, postItemScore: true, postItemState: true, postLikeUsers: true}, undefined, function(result){
    var r = result[0];
    var d = new Date(r.postDateTime * 1000);
    var date = d.getYear() + "年" + (d.getMonth() + 1) + '月' + d.getDate() + "日 " 
    + d.getHours() + ":" + d.getMinutes() + ":" + d.getSeconds();

    var parallels = [];
    parallels.push(function (done){
      mongo.find('item', {itemId: r.postItemId}, {itemId: true, itemImage: true, itemSupplier:true, itemSoldQuantity:true, itemSalePrice: true, itemTags: true}, undefined, function(itemResult){
        done({item: itemResult[0]});
      });
    });
    parallels.push(function (done){
      mongo.find('user', {userId: r.postUserId}, {userImage: true}, undefined, function(userResult){
        done(userResult[0].userImage);
      });
    });
    async.parallel(parallels, function(pararesult){
      var post = {
        postId: r.postId,
        postItem: pararesult.item,
        postUserId: r.postUserId,
        postUserImage: pararesult.userImage,
        postDateTime: date,
        postItemScore: r.postItemScore,
        postItemState: r.postItemState,
        postLikeUsers: r.postLikeUsers.split(',')
      };
      res.render('post', {post: post, item: pararesult.item, userImage: pararesult.userImage});
    });
  });
Esempio n. 3
0
exports.getFacebook = function(req, res, next) {
  graph = require('fbgraph');

  var token = req.user.tokens.facebook;
  graph.setAccessToken(token);
  async.parallel({
    getMe: function(done) {
      graph.get(req.user.facebookId, function(err, me) {
        done(err, me);
      });
    },
    getMyFriends: function(done) {
      graph.get(req.user.facebookId + '/friends', function(err, friends) {
        done(err, friends.data);
      });
    }
  },
  function(err, results) {
    if (err) return next(err);
    res.render('api/facebook', {
      title: 'Facebook API',
      me: results.getMe,
      friends: results.getMyFriends
    });
  });
};
Esempio n. 4
0
export default function updateInspectQuery (rConn, opts, cb) {
	let calls = [];

	Object.keys(opts.matchups).forEach(uUuid => {
		calls.push(rearrangeUpcoming(rConn, opts.tournamentUuid, uUuid, opts.matchups[uUuid]));
	});
	async.parallel(calls, cb);
}
Esempio n. 5
0
function writeResult (name, content, fn) {
  var funcs = [
    async.apply(writeFile, name, content.css)
  ];
  if (content.map && name) {
    funcs.push(async.apply(writeFile, name + '.map', content.map.toString()));
  }
  async.parallel(funcs, fn);
}
Esempio n. 6
0
 (next) => {
   async.parallel({
     player: (done) => {
       service.user.getAll(done);
     },
     item: (done) => {
       service.item.getAll(done);
     }
   }, next);
 },
module.exports = function upload(stream, idOrPath, tag, done) {
    var queries = new Array(global.parallelQueries);
    var tx = db.begin();

    for( var i = 0, len = queries.length; i < len; ++i ) {
        queries[i] = fileInsertFor(i, tx);
    }

    async.parallel(queries, function(err, callback) {
        if (err) {
            tx.rollback();
            done(err);
        }
        else {
            tx.commit();
            done();
        }
    });
}
Esempio n. 8
0
    info(hostname, callback) {
        const parts = hostname.split('.');
        if (parts.length === 1) throw Error(`Invalid hostname ${hostname}`);
        if (parts.length === 2) return callback();
        const domain = _.slice(parts, -2).join('.');
        const subdomain = _.slice(parts, 0, -2).join('.');

        async.parallel({
            ns: cb => dns.resolveNs(domain, cb),
            ip: cb => publicIp.v4().then(ip => cb(null, ip)),
        }, (err, { ns, ip }) => {
            let api;
            if (/yandex\.(ru|net)/.test(ns[0])) {
                this.logger(`dns ${domain} nameservers: ${ns.join(' ')}`);
                this.logger(`dns ${hostname} public IP: ${ip}`);
                api = new YandexDns();
            }
            callback(err, { domain, subdomain, ns, ip, api });
        });
    }
Esempio n. 9
0
exports.getSteam = function(req, res, next) {
  var steamId = '76561198040657099';
  var query = { l: 'english', steamid: steamId, key: secrets.steam.apiKey };
  async.parallel({
    playerAchievements: function(done) {
      query.appid = '49520';
      var qs = querystring.stringify(query);
      request.get({ url: 'http://api.steampowered.com/ISteamUserStats/GetPlayerAchievements/v0001/?' + qs, json: true }, function(error, req1, body) {
        if (req1.statusCode === 401) return done(new Error('Missing or Invalid Steam API Key'));
        done(error, body);
      });
    },
    playerSummaries: function(done) {
      query.steamids = steamId;
      var qs = querystring.stringify(query);
      request.get({ url: 'http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?' + qs, json: true }, function(err, req1, body) {
        if (req1.statusCode === 401) return done(new Error('Missing or Invalid Steam API Key'));
        done(err, body);
      });
    },
    ownedGames: function(done) {
      query.include_appinfo = 1;
      query.include_played_free_games = 1;
      var qs = querystring.stringify(query);
      request.get({ url: 'http://api.steampowered.com/IPlayerService/GetOwnedGames/v0001/?' + qs, json: true }, function(err, req1, body) {
        if (req1.statusCode === 401) return done(new Error('Missing or Invalid Steam API Key'));
        done(err, body);
      });
    }
  },
  function(err, results) {
    if (err) return next(err);
    res.render('api/steam', {
      title: 'Steam Web API',
      ownedGames: results.ownedGames.response.games,
      playerAchievemments: results.playerAchievements.playerstats,
      playerSummary: results.playerSummaries.response.players[0]
    });
  });
};
Esempio n. 10
0
    var fetchNewFolderName = function (callback) {
      async.parallel([
        function (cb) {
          r = Math.floor(Math.random() * count)

          // Find random word from database
          FolderWordsModel.find({}).limit(1).skip(r).exec(function (err, data) {
            if (err) return cb(err)
            word1 = data[0].word
            cb()
          })
        },
        function (cb) {
          r = Math.floor(Math.random() * count)

          // Find another random word from database
          FolderWordsModel.find({}).limit(1).skip(r).exec(function (err, data) {
            if (err) return cb(err)

            // First letter to uppercase
            word2 = data[0].word.charAt(0).toUpperCase() + data[0].word.slice(1)
            cb()
          })
        }
      ], function (err) {
        if (err) return callback(err)

        // Check from FilesModel wether the randomized foldername already exists
        FilesModel.find({folder: word1 + word2}).exec(function (err, data) {
          if (err) return callback(err)

          // If folder already exists, fetch folder name again recursively
          if (data.length !== 0) {
            return fetchNewFolderName(callback)
          }

          callback(null, word1 + word2)
        })
      })
    }
Esempio n. 11
0
exports.getVenmo = function(req, res, next) {
  var token = req.user.tokens.venmo;
  var query = querystring.stringify({ access_token: token.accessToken });
  async.parallel({
    getProfile: function(done) {
      request.get({ url: 'https://api.venmo.com/v1/me?' + query, json: true }, function(err, req1, body) {
        done(err, body);
      });
    },
    getRecentPayments: function(done) {
      request.get({ url: 'https://api.venmo.com/v1/payments?' + query, json: true }, function(err, req1, body) {
        done(err, body);
      });
    }
  },
  function(err, results) {
    if (err) return next(err);
    res.render('api/venmo', {
      title: 'Venmo API',
      profile: results.getProfile.data,
      recentPayments: results.getRecentPayments.data
    });
  });
};
Esempio n. 12
0
 'neo-async': function(callback) {
   neo_async.parallel(tasks, callback);
 }
Esempio n. 13
0
exports.getLastfm = function(req, res, next) {
  LastFmNode = require('lastfm').LastFmNode;

  var lastfm = new LastFmNode(secrets.lastfm);
  async.parallel({
    artistInfo: function(done) {
      lastfm.request('artist.getInfo', {
        artist: 'The Pierces',
        handlers: {
          success: function(data) {
            done(null, data);
          },
          error: function(err) {
            done(err);
          }
        }
      });
    },
    artistTopTracks: function(done) {
      lastfm.request('artist.getTopTracks', {
        artist: 'The Pierces',
        handlers: {
          success: function(data) {
            var tracks = [];
            _.each(data.toptracks.track, function(track) {
              tracks.push(track);
            });
            done(null, tracks.slice(0,10));
          },
          error: function(err) {
            done(err);
          }
        }
      });
    },
    artistTopAlbums: function(done) {
      lastfm.request('artist.getTopAlbums', {
        artist: 'The Pierces',
        handlers: {
          success: function(data) {
            var albums = [];
            _.each(data.topalbums.album, function(album) {
              albums.push(album.image.slice(-1)[0]['#text']);
            });
            done(null, albums.slice(0, 4));
          },
          error: function(err) {
            done(err);
          }
        }
      });
    }
  },
  function(err, results) {
    if (err) return next(err.error.message);
    var artist = {
      name: results.artistInfo.artist.name,
      image: results.artistInfo.artist.image.slice(-1)[0]['#text'],
      tags: results.artistInfo.artist.tags.tag,
      bio: results.artistInfo.artist.bio.summary,
      stats: results.artistInfo.artist.stats,
      similar: results.artistInfo.artist.similar.artist,
      topAlbums: results.artistTopAlbums,
      topTracks: results.artistTopTracks
    };
    res.render('api/lastfm', {
      title: 'Last.fm API',
      artist: artist
    });
  });
};
Esempio n. 14
0
function benchNeoParallel (done) {
  neo.parallel([somethingA, somethingA, somethingA], done)
}
Esempio n. 15
0
				(err, results) => {
					if (err) return callback(err);
					let loaders = results[0];
					const resourceResolveData = results[1].resourceResolveData;
					resource = results[1].resource;

					// translate option idents
					try {
						for (const item of loaders) {
							if (typeof item.options === "string" && item.options[0] === "?") {
								const ident = item.options.substr(1);
								item.options = this.ruleSet.findOptionsByIdent(ident);
								item.ident = ident;
							}
						}
					} catch (e) {
						return callback(e);
					}

					if (resource === false) {
						// ignored
						return callback(
							null,
							new RawModule(
								"/* (ignored) */",
								`ignored ${context} ${request}`,
								`${request} (ignored)`
							)
						);
					}

					const userRequest = loaders
						.map(loaderToIdent)
						.concat([resource])
						.join("!");

					let resourcePath = resource;
					let resourceQuery = "";
					const queryIndex = resourcePath.indexOf("?");
					if (queryIndex >= 0) {
						resourceQuery = resourcePath.substr(queryIndex);
						resourcePath = resourcePath.substr(0, queryIndex);
					}

					const result = this.ruleSet.exec({
						resource: resourcePath,
						resourceQuery,
						issuer: contextInfo.issuer,
						compiler: contextInfo.compiler
					});
					const settings = {};
					const useLoadersPost = [];
					const useLoaders = [];
					const useLoadersPre = [];
					for (const r of result) {
						if (r.type === "use") {
							if (r.enforce === "post" && !noPrePostAutoLoaders)
								useLoadersPost.push(r.value);
							else if (
								r.enforce === "pre" &&
								!noPreAutoLoaders &&
								!noPrePostAutoLoaders
							)
								useLoadersPre.push(r.value);
							else if (!r.enforce && !noAutoLoaders && !noPrePostAutoLoaders)
								useLoaders.push(r.value);
						} else if (
							typeof r.value === "object" &&
							r.value !== null &&
							typeof settings[r.type] === "object" &&
							settings[r.type] !== null
						) {
							settings[r.type] = cachedMerge(settings[r.type], r.value);
						} else {
							settings[r.type] = r.value;
						}
					}
					asyncLib.parallel(
						[
							this.resolveRequestArray.bind(
								this,
								contextInfo,
								this.context,
								useLoadersPost,
								loaderResolver
							),
							this.resolveRequestArray.bind(
								this,
								contextInfo,
								this.context,
								useLoaders,
								loaderResolver
							),
							this.resolveRequestArray.bind(
								this,
								contextInfo,
								this.context,
								useLoadersPre,
								loaderResolver
							)
						],
						(err, results) => {
							if (err) return callback(err);
							loaders = results[0].concat(loaders, results[1], results[2]);
							process.nextTick(() => {
								const type = settings.type;
								const resolveOptions = settings.resolve;
								callback(null, {
									context: context,
									request: loaders
										.map(loaderToIdent)
										.concat([resource])
										.join("!"),
									dependencies: data.dependencies,
									userRequest,
									rawRequest: request,
									loaders,
									resource,
									resourceResolveData,
									settings,
									type,
									parser: this.getParser(type, settings.parser),
									generator: this.getGenerator(type, settings.generator),
									resolveOptions
								});
							});
						}
					);
				}
Esempio n. 16
0
function benchNeoParallel (done) {
  neo.parallel(funcs, done)
}
Esempio n. 17
0
			(err, beforeResolveResult) => {
				if (err) return callback(err);

				// Ignored
				if (!beforeResolveResult) return callback();

				const context = beforeResolveResult.context;
				const request = beforeResolveResult.request;
				const resolveOptions = beforeResolveResult.resolveOptions;

				let loaders,
					resource,
					loadersPrefix = "";
				const idx = request.lastIndexOf("!");
				if (idx >= 0) {
					loaders = request.substr(0, idx + 1);
					let i;
					for (i = 0; i < loaders.length && loaders[i] === "!"; i++) {
						loadersPrefix += "!";
					}
					loaders = loaders
						.substr(i)
						.replace(/!+$/, "")
						.replace(/!!+/g, "!");
					if (loaders === "") loaders = [];
					else loaders = loaders.split("!");
					resource = request.substr(idx + 1);
				} else {
					loaders = [];
					resource = request;
				}

				const contextResolver = this.resolverFactory.get(
					"context",
					resolveOptions || EMPTY_RESOLVE_OPTIONS
				);
				const loaderResolver = this.resolverFactory.get(
					"loader",
					EMPTY_RESOLVE_OPTIONS
				);

				asyncLib.parallel(
					[
						callback => {
							contextResolver.resolve(
								{},
								context,
								resource,
								{},
								(err, result) => {
									if (err) return callback(err);
									callback(null, result);
								}
							);
						},
						callback => {
							asyncLib.map(
								loaders,
								(loader, callback) => {
									loaderResolver.resolve(
										{},
										context,
										loader,
										{},
										(err, result) => {
											if (err) return callback(err);
											callback(null, result);
										}
									);
								},
								callback
							);
						}
					],
					(err, result) => {
						if (err) return callback(err);

						this.hooks.afterResolve.callAsync(
							Object.assign(
								{
									addon:
										loadersPrefix +
										result[1].join("!") +
										(result[1].length > 0 ? "!" : ""),
									resource: result[0],
									resolveDependencies: this.resolveDependencies.bind(this)
								},
								beforeResolveResult
							),
							(err, result) => {
								if (err) return callback(err);

								// Ignored
								if (!result) return callback();

								return callback(
									null,
									new ContextModule(result.resolveDependencies, result)
								);
							}
						);
					}
				);
			}
Esempio n. 18
0
var TICK = function () {
    async.parallel(tickers, function(err, tickData) {
        sendTick(tickData);
    });
};