UNPKG

node-wolfram

Version:

Extremely minimal WolframAlpha API wrapper for Node.js.

61 lines (50 loc) 1.51 kB
(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);