2014-09-13 21:29:45 +00:00
|
|
|
var _ = require("lodash");
|
|
|
|
var Chan = require("./chan");
|
|
|
|
|
|
|
|
module.exports = Network;
|
|
|
|
|
|
|
|
var id = 0;
|
|
|
|
|
|
|
|
function Network(attr) {
|
|
|
|
_.merge(this, _.extend({
|
2014-10-11 20:44:56 +00:00
|
|
|
name: "",
|
|
|
|
host: "",
|
|
|
|
port: 6667,
|
|
|
|
tls: false,
|
|
|
|
password: "",
|
|
|
|
username: "",
|
|
|
|
realname: "",
|
2014-09-13 21:29:45 +00:00
|
|
|
channels: [],
|
|
|
|
connected: false,
|
|
|
|
id: id++,
|
|
|
|
irc: null,
|
|
|
|
}, attr));
|
|
|
|
this.name = attr.name || prettify(attr.host);
|
|
|
|
this.channels.unshift(
|
|
|
|
new Chan({name: this.name, type: Chan.Type.LOBBY})
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
Network.prototype.toJSON = function() {
|
2014-09-25 23:51:53 +00:00
|
|
|
var json = _.extend(this, {nick: (this.irc || {}).me || ""});
|
2014-10-11 20:44:56 +00:00
|
|
|
return _.omit(json, "irc", "password");
|
|
|
|
};
|
|
|
|
|
|
|
|
Network.prototype.export = function() {
|
|
|
|
var network = _.pick(
|
|
|
|
this,
|
|
|
|
["name", "host", "port", "tls", "password", "username", "realname"]
|
|
|
|
);
|
|
|
|
network.nick = (this.irc || {}).me;
|
|
|
|
network.join = _.pluck(
|
|
|
|
_.where(this.channels, {type: "channel"}),
|
|
|
|
"name"
|
|
|
|
);
|
|
|
|
return network;
|
2014-09-13 21:29:45 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
function prettify(host) {
|
|
|
|
var name = capitalize(host.split(".")[1]);
|
|
|
|
if (!name) {
|
|
|
|
name = host;
|
|
|
|
}
|
|
|
|
return name;
|
|
|
|
}
|
|
|
|
|
|
|
|
function capitalize(str) {
|
|
|
|
if (typeof str === "string") {
|
|
|
|
return str.charAt(0).toUpperCase() + str.slice(1);
|
|
|
|
}
|
|
|
|
}
|