Skip to content

Instantly share code, notes, and snippets.

@nbqx
Created December 28, 2010 03:58
Show Gist options
  • Save nbqx/756886 to your computer and use it in GitHub Desktop.
Save nbqx/756886 to your computer and use it in GitHub Desktop.

Revisions

  1. nbqx revised this gist Dec 28, 2010. 1 changed file with 20 additions and 1 deletion.
    21 changes: 20 additions & 1 deletion simplenote.js
    Original file line number Diff line number Diff line change
    @@ -1,6 +1,11 @@
    var request = require('request'),
    querystring = require('querystring');

    var Note = function(key){
    this.key = key;
    }
    Note.prototype = new process.EventEmitter();

    var SimpleNote = function(email, passwd){
    this.email = email;
    this.passwd = passwd;
    @@ -71,6 +76,20 @@ SimpleNote.prototype.get = function(key,cbk){
    }.bind(self));
    };

    SimpleNote.prototype.getNote = function(key){
    var self = this;
    var note = new Note(key);
    self.auth.emit('connected', function(){
    request({uri:this.baseURL+'/note?'+this.toQuery({email:this.email, auth:this.token, key:key}), method:'GET'}, function(err,res,bdy){
    if(!err && res.statusCode==200){
    note.content = bdy;
    note.emit('load');
    }else{ throw err }
    });
    }.bind(self));
    return note
    }

    SimpleNote.prototype.create = function(content,cbk){
    var self = this;
    self.auth.emit('connected', function(){
    @@ -110,4 +129,4 @@ SimpleNote.prototype.toQuery = function(obj){

    SimpleNote.prototype.toBase64 = function(str){
    return (new Buffer(str)).toString('base64')
    }
    }
  2. nbqx revised this gist Dec 28, 2010. 1 changed file with 15 additions and 7 deletions.
    22 changes: 15 additions & 7 deletions simplenote.js
    Original file line number Diff line number Diff line change
    @@ -4,7 +4,7 @@ var request = require('request'),
    var SimpleNote = function(email, passwd){
    this.email = email;
    this.passwd = passwd;
    this.encoded_body = (new Buffer(querystring.stringify({email:this.email,password:this.passwd}))).toString("base64");
    this.encoded_body = (new Buffer(this.toQuery({email:this.email,password:this.passwd}))).toString("base64");
    this.token = undefined;
    this.baseURL = "https://simple-note.appspot.com/api";

    @@ -38,7 +38,7 @@ var SimpleNote = function(email, passwd){
    SimpleNote.prototype.list = function(cbk){
    var self = this;
    self.auth.emit('connected', function(){
    request({uri:this.baseURL+'/index?'+querystring.stringify({email:this.email, auth:this.token}), method:'GET'}, function(err,res,bdy){
    request({uri:this.baseURL+'/index?'+this.toQuery({email:this.email, auth:this.token}), method:'GET'}, function(err,res,bdy){
    if(!err && res.statusCode==200){
    var jsn = JSON.parse(bdy);
    if(cbk) cbk(jsn);
    @@ -51,7 +51,7 @@ SimpleNote.prototype.search = function(q, cbk){
    var self = this;
    var results = 10;
    self.auth.emit('connected', function(){
    request({uri:this.baseURL+'/search?'+querystring.stringify({email:this.email, auth:this.token, query:q, results:results}), method:'GET'}, function(err,res,bdy){
    request({uri:this.baseURL+'/search?'+this.toQuery({email:this.email, auth:this.token, query:q, results:results}), method:'GET'}, function(err,res,bdy){
    if(!err && res.statusCode==200){
    var jsn = JSON.parse(bdy);
    if(cbk) cbk(jsn);
    @@ -63,7 +63,7 @@ SimpleNote.prototype.search = function(q, cbk){
    SimpleNote.prototype.get = function(key,cbk){
    var self = this;
    self.auth.emit('connected', function(){
    request({uri:this.baseURL+'/note?'+querystring.stringify({email:this.email, auth:this.token, key:key}), method:'GET'}, function(err,res,bdy){
    request({uri:this.baseURL+'/note?'+this.toQuery({email:this.email, auth:this.token, key:key}), method:'GET'}, function(err,res,bdy){
    if(!err && res.statusCode==200){
    if(cbk) cbk(bdy);
    }else{ throw err }
    @@ -74,7 +74,7 @@ SimpleNote.prototype.get = function(key,cbk){
    SimpleNote.prototype.create = function(content,cbk){
    var self = this;
    self.auth.emit('connected', function(){
    request({uri:this.baseURL+'/note?'+querystring.stringify({email:this.email, auth:this.token}), method:'POST', body:(new Buffer(content)).toString('base64')}, function(err,res,bdy){
    request({uri:this.baseURL+'/note?'+this.toQuery({email:this.email, auth:this.token}), method:'POST', body:this.toBase64(content)}, function(err,res,bdy){
    if(!err && res.statusCode==200){
    if(cbk) cbk(bdy);
    }else{ throw err }
    @@ -85,7 +85,7 @@ SimpleNote.prototype.create = function(content,cbk){
    SimpleNote.prototype.update = function(key, content, cbk){
    var self = this;
    self.auth.emit('connected', function(){
    request({uri:this.baseURL+'/note?'+querystring.stringify({email:this.email, auth:this.token, key:key}), method:'POST', body:(new Buffer(content)).toString('base64')}, function(err,res,bdy){
    request({uri:this.baseURL+'/note?'+this.toQuery({email:this.email, auth:this.token, key:key}), method:'POST', body:this.toBase64(content)}, function(err,res,bdy){
    if(!err && res.statusCode==200){
    if(cbk) cbk(bdy);
    }else{ throw err }
    @@ -96,10 +96,18 @@ SimpleNote.prototype.update = function(key, content, cbk){
    SimpleNote.prototype.delete = function(key,cbk){
    var self = this;
    self.auth.emit('connected', function(){
    request({uri:this.baseURL+'/delete?'+querystring.stringify({email:this.email, auth:this.token, key:key}), method:'GET'}, function(err,res,bdy){
    request({uri:this.baseURL+'/delete?'+this.toQuery({email:this.email, auth:this.token, key:key}), method:'GET'}, function(err,res,bdy){
    if(!err && res.statusCode==200){
    if(cbk) cbk(bdy);
    }else{ throw err }
    });
    }.bind(self));
    }

    SimpleNote.prototype.toQuery = function(obj){
    return querystring.stringify(obj)
    }

    SimpleNote.prototype.toBase64 = function(str){
    return (new Buffer(str)).toString('base64')
    }
  3. nbqx created this gist Dec 28, 2010.
    105 changes: 105 additions & 0 deletions simplenote.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,105 @@
    var request = require('request'),
    querystring = require('querystring');

    var SimpleNote = function(email, passwd){
    this.email = email;
    this.passwd = passwd;
    this.encoded_body = (new Buffer(querystring.stringify({email:this.email,password:this.passwd}))).toString("base64");
    this.token = undefined;
    this.baseURL = "https://simple-note.appspot.com/api";

    var Auth = function(){};
    Auth.prototype = new process.EventEmitter();

    this.auth = new Auth();
    this.auth.on('login', function(){
    request({uri:this.baseURL+'/login', method:'POST', body:this.encoded_body}, function(err,res,bdy){
    if(!err && res.statusCode==200){
    this.token = bdy;
    }
    }.bind(this));
    }.bind(this));

    this.auth.on('connected', function(fn){
    var timer = setInterval(function(){
    if(this.token!=undefined){
    fn();
    clearInterval(timer);
    }
    }.bind(this), 1000);
    }.bind(this));

    this.auth.emit('login');
    this.auth.emit('connected', function(){return true}.bind(this));

    return this
    }

    SimpleNote.prototype.list = function(cbk){
    var self = this;
    self.auth.emit('connected', function(){
    request({uri:this.baseURL+'/index?'+querystring.stringify({email:this.email, auth:this.token}), method:'GET'}, function(err,res,bdy){
    if(!err && res.statusCode==200){
    var jsn = JSON.parse(bdy);
    if(cbk) cbk(jsn);
    }else{ throw err }
    });
    }.bind(self));
    }

    SimpleNote.prototype.search = function(q, cbk){
    var self = this;
    var results = 10;
    self.auth.emit('connected', function(){
    request({uri:this.baseURL+'/search?'+querystring.stringify({email:this.email, auth:this.token, query:q, results:results}), method:'GET'}, function(err,res,bdy){
    if(!err && res.statusCode==200){
    var jsn = JSON.parse(bdy);
    if(cbk) cbk(jsn);
    }else{ throw err }
    });
    }.bind(self));
    }

    SimpleNote.prototype.get = function(key,cbk){
    var self = this;
    self.auth.emit('connected', function(){
    request({uri:this.baseURL+'/note?'+querystring.stringify({email:this.email, auth:this.token, key:key}), method:'GET'}, function(err,res,bdy){
    if(!err && res.statusCode==200){
    if(cbk) cbk(bdy);
    }else{ throw err }
    });
    }.bind(self));
    };

    SimpleNote.prototype.create = function(content,cbk){
    var self = this;
    self.auth.emit('connected', function(){
    request({uri:this.baseURL+'/note?'+querystring.stringify({email:this.email, auth:this.token}), method:'POST', body:(new Buffer(content)).toString('base64')}, function(err,res,bdy){
    if(!err && res.statusCode==200){
    if(cbk) cbk(bdy);
    }else{ throw err }
    });
    }.bind(self));
    };

    SimpleNote.prototype.update = function(key, content, cbk){
    var self = this;
    self.auth.emit('connected', function(){
    request({uri:this.baseURL+'/note?'+querystring.stringify({email:this.email, auth:this.token, key:key}), method:'POST', body:(new Buffer(content)).toString('base64')}, function(err,res,bdy){
    if(!err && res.statusCode==200){
    if(cbk) cbk(bdy);
    }else{ throw err }
    });
    }.bind(self));
    }

    SimpleNote.prototype.delete = function(key,cbk){
    var self = this;
    self.auth.emit('connected', function(){
    request({uri:this.baseURL+'/delete?'+querystring.stringify({email:this.email, auth:this.token, key:key}), method:'GET'}, function(err,res,bdy){
    if(!err && res.statusCode==200){
    if(cbk) cbk(bdy);
    }else{ throw err }
    });
    }.bind(self));
    }