beginning of efficient caching

This commit is contained in:
hydrabolt
2015-08-14 21:33:35 +01:00
parent 776dda9bff
commit 2758f33710

View File

@@ -58,23 +58,24 @@ exports.Client.prototype.off = function( name ) {
this.events[ name ] = function() {}; this.events[ name ] = function() {};
} }
exports.Client.prototype.cacheServer = function( id, cb, members ) { exports.Client.prototype.cacheServer = function( id, cb, members, channelInfo ) {
console.log("caching!");
var self = this;
var serverInput;
if ( typeof id === 'string' || id instanceof String ) {
//actually an ID
if ( this.serverList.filter( "id", id ).length > 0 ) { if ( this.serverList.filter( "id", id ).length > 0 ) {
return; return;
} }
var self = this; console.log("test");
request request
.get( Endpoints.SERVERS + "/" + id ) .get( Endpoints.SERVERS + "/" + id )
.set( "authorization", this.token )
.end( function( err, res ) {
var dat = res.body;
var server = new Server( dat.region, dat.owner_id, dat.name, id, members || dat.members, dat.icon, dat.afk_timeout, dat.afk_channel_id );
request
.get( Endpoints.SERVERS + "/" + id + "/channels" )
.set( "authorization", self.token ) .set( "authorization", self.token )
.end( function( err, res ) { .end( function( err, res ) {
@@ -82,7 +83,48 @@ exports.Client.prototype.cacheServer = function( id, cb, members ) {
throw err; throw err;
} }
var channelList = res.body; var dat = res.body;
makeServer( dat );
} );
} else {
// got objects because SPEEEDDDD
if ( this.serverList.filter( "id", id.id ).length > 0 ) {
return;
}
serverInput = id;
id = id.id;
makeServer( serverInput );
}
function channelsFromHTTP() {
request
.get( Endpoints.SERVERS + "/" + id + "/channels" )
.set( "authorization", self.token )
.end( function( err, res ) {
if ( err )
throw err;
cacheChannels( res.body );
} );
}
var server;
function makeServer( dat ) {
server = new Server( dat.region, dat.owner_id, dat.name, id, members || dat.members, dat.icon, dat.afk_timeout, dat.afk_channel_id );
console.log(server.id);
if ( !channelInfo )
channelsFromHTTP();
}
function cacheChannels( dat ) {
var channelList = dat;
for ( channel of channelList ) { for ( channel of channelList ) {
server.channels.add( new Channel( channel, server ) ); server.channels.add( new Channel( channel, server ) );
} }
@@ -90,8 +132,7 @@ exports.Client.prototype.cacheServer = function( id, cb, members ) {
self.serverList.add( server ); self.serverList.add( server );
cb( server ); cb( server );
} ); }
} );
} }