node-wolfram
Version:
Extremely minimal WolframAlpha API wrapper for Node.js.
61 lines (50 loc) • 1.51 kB
JavaScript
(function() {
var Client, request, url, xml2js;
request = require('request');
xml2js = require('xml2js');
url = require('url');
Client = (function() {
function Client(appId) {
this.appId = appId;
this.baseURL = url.parse("http://api.wolframalpha.com/v2/query");
}
Client.prototype.makeQueryURL = function(query) {
var key, value;
this.baseURL.query = {
appid: this.appId
};
if (query instanceof Object) {
for (key in query) {
value = query[key];
this.baseURL.query[key] = value;
}
} else {
this.baseURL.query.input = query;
}
return url.format(this.baseURL);
};
Client.prototype.query = function(query, callback) {
var queryURL;
if (this.appId == null) {
throw new Error("Cannot query without appId.");
}
queryURL = this.makeQueryURL(query);
return request(queryURL, function(err, response, body) {
if ((err != null) || response.statusCode !== 200) {
return callback(err, null);
}
return xml2js.parseString(body, function(err, result) {
if (err != null) {
return callback(err, result);
} else if (result.queryresult.$.error) {
return callback(result.queryresult.error, result);
} else {
return callback(null, result);
}
});
});
};
return Client;
})();
module.exports = Client;
}).call(this);