mirror of
https://github.com/Dahlgren/arma-server-web-admin.git
synced 2024-08-30 17:22:10 +00:00
Refactored missions management into class
This commit is contained in:
5
app.js
5
app.js
@ -3,6 +3,7 @@ var Resource = require('express-resource');
|
||||
|
||||
var config = require('./config');
|
||||
var Manager = require('./lib/manager');
|
||||
var Missions = require('./lib/missions');
|
||||
var Mods = require('./lib/mods');
|
||||
var Logs = require('./lib/logs');
|
||||
|
||||
@ -25,15 +26,17 @@ var logs = new Logs(config);
|
||||
var manager = new Manager(config, logs);
|
||||
manager.load();
|
||||
|
||||
var missions = new Missions(config);
|
||||
var mods = new Mods(config);
|
||||
mods.updateMods();
|
||||
|
||||
var logsRoutes = require('./routes/logs')(logs);
|
||||
var serversRoutes = require('./routes/servers')(manager, mods);
|
||||
var missionsRoutes = require('./routes/missions')(missions);
|
||||
var modsRoutes = require('./routes/mods')(mods);
|
||||
|
||||
app.resource('api/logs', logsRoutes);
|
||||
app.resource('api/missions', require('./routes/missions'));
|
||||
app.resource('api/missions', missionsRoutes);
|
||||
app.resource('api/mods', modsRoutes);
|
||||
var serversResource = app.resource('api/servers', serversRoutes);
|
||||
app.resource('api/settings', require('./routes/settings'));
|
||||
|
42
lib/missions.js
Normal file
42
lib/missions.js
Normal file
@ -0,0 +1,42 @@
|
||||
var fs = require('fs');
|
||||
var path = require('path');
|
||||
|
||||
var Missions = function (config) {
|
||||
this.config = config;
|
||||
};
|
||||
|
||||
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){
|
||||
fs.readdir(this.missionsPath(), function (err, files) {
|
||||
if (err) {
|
||||
cb(err);
|
||||
} else {
|
||||
var missions = files.map(function (filename) {
|
||||
return {
|
||||
name: filename,
|
||||
};
|
||||
});
|
||||
cb(null, missions);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
Missions.prototype.handleUpload = function (uploadedFile, cb) {
|
||||
var filename = decodeURI(uploadedFile.name.toLowerCase());
|
||||
fs.rename(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);
|
||||
};
|
||||
|
||||
module.exports = Missions;
|
@ -1,58 +1,41 @@
|
||||
var fs = require('fs');
|
||||
var path = require('path');
|
||||
|
||||
var config = require('./../config');
|
||||
|
||||
function missionsPath() {
|
||||
return path.join(config.path, 'mpmissions');
|
||||
}
|
||||
|
||||
exports.index = function(req, res){
|
||||
fs.readdir(missionsPath(), function (err, files) {
|
||||
if (err) {
|
||||
res.send(err);
|
||||
} else {
|
||||
var missions = files.map(function (filename) {
|
||||
return {
|
||||
name: filename,
|
||||
};
|
||||
module.exports = function (missionsManager) {
|
||||
return {
|
||||
index: function (req, res) {
|
||||
missionsManager.list(function (err, missions) {
|
||||
if (err) {
|
||||
res.send(err);
|
||||
} else {
|
||||
res.send(missions);
|
||||
}
|
||||
});
|
||||
res.send(missions);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
exports.create = function(req, res){
|
||||
var missionFile = req.files.mission;
|
||||
|
||||
fs.readFile(missionFile.path, function (err, data) {
|
||||
var filename = decodeURI(missionFile.name.toLowerCase());
|
||||
fs.writeFile(path.join(missionsPath(), filename), data, function (err) {
|
||||
res.json(missionFile);
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
exports.show = function(req, res){
|
||||
var filename = req.params.mission;
|
||||
if (req.params.format) {
|
||||
filename += '.' + req.params.format;
|
||||
}
|
||||
|
||||
res.download(path.join(missionsPath(), encodeURI(filename)), decodeURI(filename));
|
||||
};
|
||||
|
||||
exports.destroy = function(req, res){
|
||||
var filename = req.params.mission;
|
||||
if (req.params.format) {
|
||||
filename += '.' + req.params.format;
|
||||
}
|
||||
|
||||
fs.unlink(path.join(missionsPath(), filename), function (err) {
|
||||
if (err) {
|
||||
res.json(500, {success: false});
|
||||
} else {
|
||||
res.json({success: true});
|
||||
}
|
||||
});
|
||||
},
|
||||
create: function (req, res) {
|
||||
var missionFile = req.files.mission;
|
||||
missionsManager.handleUpload(missionFile, function (err) {
|
||||
res.send(err);
|
||||
});
|
||||
},
|
||||
show: function(req, res){
|
||||
var filename = req.params.mission;
|
||||
if (req.params.format) {
|
||||
filename += '.' + req.params.format;
|
||||
}
|
||||
|
||||
res.download(missionsManager.missionPath(encodeURI(filename)), decodeURI(filename));
|
||||
},
|
||||
destroy: function(req, res){
|
||||
var filename = req.params.mission;
|
||||
if (req.params.format) {
|
||||
filename += '.' + req.params.format;
|
||||
}
|
||||
|
||||
missionsManager.delete(filename, function (err) {
|
||||
if (err) {
|
||||
res.json(500, {success: false});
|
||||
} else {
|
||||
res.json({success: true});
|
||||
}
|
||||
});
|
||||
},
|
||||
};
|
||||
};
|
||||
|
Reference in New Issue
Block a user