Skip to content

Instantly share code, notes, and snippets.

@mheadd
Created December 20, 2010 22:05
Show Gist options
  • Save mheadd/749076 to your computer and use it in GitHub Desktop.
Save mheadd/749076 to your computer and use it in GitHub Desktop.
Moving from blocking functional programming, to non-blocking Node.js programming.
var sys = require('sys');
var http = require('http');
var EventEmitter = require('events').EventEmitter;
TropoSession = function() {
this.responseBody;
};
TropoSession.prototype = new EventEmitter;
TropoSession.prototype.makeApiCall = function(token, parameters) {
var self = this;
var tropoSessionAPI = 'api.tropo.com';
var path = '/1.0/sessions?action=create&token=' + token;
for(item in parameters) {
path += '&' + item + '=' + encodeURI(parameters[item]);
}
var tropo = http.createClient(80, tropoSessionAPI);
var request = tropo.request('GET', path, {'host': tropoSessionAPI});
request.end();
request.on('response', function (response) {
response.setEncoding('utf8');
self.emit('responseCode', response.statusCode);
response.addListener('data', function (chunk) {
this.responseBody = chunk;
});
response.addListener('end', function() {
self.emit('responseBody', this.responseBody);
});
});
};
var token = 'your-token-goes-here';
var parameters = { 'numberToCall': '5551234567', 'messageToSay': 'Hello from Node.' };
// Create a new TropoSession object
var tropo = new TropoSession();
// Make the API call.
tropo.makeApiCall(token, parameters);
// Add listeners for events emitted from makeApiCall() method.
tropo.addListener('responseCode', function(code){
sys.puts('Response code: ' + code);
});
tropo.addListener('responseBody', function(body) {
sys.puts('Response body: ' + body);
});
var sys = require('sys');
var http = require('http');
TropoSession = function() {
this.responseCode;
this.responseBody;
};
TropoSession.prototype.makeApiCall = function(token, parameters) {
var tropoSessionAPI = 'api.tropo.com';
var path = '/1.0/sessions?action=create&token=' + token;
for(item in parameters) {
path += '&' + item + '=' + encodeURI(parameters[item]);
}
var tropo = http.createClient(80, tropoSessionAPI);
var request = tropo.request('GET', path, {'host': tropoSessionAPI});
request.end();
request.on('response', function (response) {
response.setEncoding('utf8');
this.responseCode = response.statusCode;
response.addListener('data', function (chunk) {
this.responseBody = chunk;
});
});
};
var token = 'your-token-goes-here';
var parameters = { 'numberToCall': '5551234567', 'messageToSay': 'Hello from Node.' };
// Create a new TropoSession object.
var tropo = new TropoSession();
// Make the API call.
tropo.makeApiCall(token, parameters);
// Display the response from the API call.
sys.puts('Response code: ' + tropo.responseCode);
sys.puts('Response body: ' + tropo.responseBody);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment