var async = require('async'); var filesize = require('filesize'); var fs = require ('fs.extra'); var path = require('path'); var SteamWorkshop = require('steam-workshop'); var Missions = function (config) { this.config = config; this.steamWorkshop = new SteamWorkshop(this.missionsPath()); }; Missions.prototype.missionsPath = function() { return path.join(this.config.path, 'mpmissions'); }; Missions.prototype.missionPath = function (name) { return path.join(this.missionsPath(), name); } Missions.prototype.list = function (cb){ var self = this; fs.readdir(this.missionsPath(), function (err, files) { if (err) { cb(err); } else { async.map(files, function (filename, cb) { fs.stat(self.missionPath(filename), function (err, stat) { if (err) { cb(err); } cb(null, { dateCreated: new Date(stat.ctime), dateModified: new Date(stat.mtime), name: filename, size: stat.size, sizeFormatted: filesize(stat.size), }); }); }, function (err, missions) { if (cb) { cb(err, missions); } }); } }); }; Missions.prototype.handleUpload = function (uploadedFile, cb) { var filename = decodeURI(uploadedFile.originalname.toLowerCase()); fs.move (uploadedFile.path, path.join(this.missionsPath(), filename), function (err) { cb(err); }); }; Missions.prototype.delete = function (missionName, cb) { fs.unlink(path.join(this.missionsPath(), missionName), cb); }; Missions.prototype.downloadSteamWorkshop = function (id, cb) { if (!id) { return cb(new Error('Not a valid Steam Workshop ID: ' + id)); } this.steamWorkshop.downloadFile(id, cb); } module.exports = Missions;