mirror of
https://github.com/gamedig/node-gamedig.git
synced 2024-11-17 17:25:19 +01:00
52 lines
1.2 KiB
JavaScript
52 lines
1.2 KiB
JavaScript
|
var Path = require('path'),
|
||
|
fs = require('fs');
|
||
|
|
||
|
var gamesDir = Path.normalize(__dirname+'/../games');
|
||
|
|
||
|
function readAliases() {
|
||
|
var lines = fs.readFileSync(gamesDir+'/aliases.txt','utf8').split('\n');
|
||
|
var aliases = {};
|
||
|
|
||
|
lines.forEach(function(line) {
|
||
|
line = line.trim();
|
||
|
if(!line) return;
|
||
|
if(line.charAt(0) == '#') return;
|
||
|
var split = line.split('|');
|
||
|
|
||
|
aliases[split[0].trim()] = {
|
||
|
pretty: split[1].trim(),
|
||
|
protocol: split[2].trim(),
|
||
|
port: split[3] ? parseInt(split[3]) : 0
|
||
|
};
|
||
|
});
|
||
|
return aliases;
|
||
|
}
|
||
|
var aliases = readAliases();
|
||
|
|
||
|
function createQueryInstance(type) {
|
||
|
type = Path.basename(type);
|
||
|
|
||
|
var path = gamesDir+'/'+type;
|
||
|
if(type.substr(0,9) == 'protocol-') {
|
||
|
path = gamesDir+'/protocols/'+type.substr(9);
|
||
|
}
|
||
|
|
||
|
if(!fs.existsSync(path+'.js')) return false;
|
||
|
var protocol = require(path);
|
||
|
|
||
|
return new protocol();
|
||
|
}
|
||
|
|
||
|
module.exports = function(type) {
|
||
|
var alias = aliases[type];
|
||
|
|
||
|
if(alias) {
|
||
|
var query = createQueryInstance('protocol-'+alias.protocol);
|
||
|
if(!query) return false;
|
||
|
query.pretty = alias.pretty;
|
||
|
if(alias.port) query.options.port = alias.port;
|
||
|
return query;
|
||
|
}
|
||
|
return createQueryInstance(type);
|
||
|
}
|