AutorÃa | Ultima modificación | Ver Log |
YUI.add('yql', function (Y, NAME) {/*** This class adds a sugar class to allow access to YQL (http://developer.yahoo.com/yql/).* @module yql*//*** Utility Class used under the hood by the YQL class* @class YQLRequest* @constructor* @param {String} sql The SQL statement to execute* @param {Function/Object} callback The callback to execute after the query (Falls through to JSONP).* @param {Object} params An object literal of extra parameters to pass along (optional).* @param {Object} opts An object literal of configuration options (optional): proto (http|https), base (url)*/var YQLRequest = function (sql, callback, params, opts) {if (!params) {params = {};}params.q = sql;//Allow format override.. JSON-P-Xif (!params.format) {params.format = Y.YQLRequest.FORMAT;}if (!params.env) {params.env = Y.YQLRequest.ENV;}this._context = this;if (opts && opts.context) {this._context = opts.context;delete opts.context;}if (params && params.context) {this._context = params.context;delete params.context;}this._params = params;this._opts = opts;this._callback = callback;};YQLRequest.prototype = {/*** @private* @property _jsonp* @description Reference to the JSONP instance used to make the queries*/_jsonp: null,/*** @private* @property _opts* @description Holder for the opts argument*/_opts: null,/*** @private* @property _callback* @description Holder for the callback argument*/_callback: null,/*** @private* @property _params* @description Holder for the params argument*/_params: null,/*** @private* @property _context* @description The context to execute the callback in*/_context: null,/*** @private* @method _internal* @description Internal Callback Handler*/_internal: function () {this._callback.apply(this._context, arguments);},/*** @method send* @description The method that executes the YQL Request.* @chainable* @return {YQLRequest}*/send: function () {var qs = [], url = ((this._opts && this._opts.proto) ? this._opts.proto : Y.YQLRequest.PROTO), o;Y.Object.each(this._params, function (v, k) {qs.push(k + '=' + encodeURIComponent(v));});qs = qs.join('&');url += ((this._opts && this._opts.base) ? this._opts.base : Y.YQLRequest.BASE_URL) + qs;o = (!Y.Lang.isFunction(this._callback)) ? this._callback : { on: { success: this._callback } };o.on = o.on || {};this._callback = o.on.success;o.on.success = Y.bind(this._internal, this);this._send(url, o);return this;},/*** Private method to send the request, overwritten in plugins* @method _send* @private* @param {String} url The URL to request* @param {Object} o The config object*/_send: function() {//Overwritten in plugins}};/*** @static* @property FORMAT* @description Default format to use: json*/YQLRequest.FORMAT = 'json';/*** @static* @property PROTO* @description Default protocol to use: http*/YQLRequest.PROTO = 'http';/*** @static* @property BASE_URL* @description The base URL to query: query.yahooapis.com/v1/public/yql?*/YQLRequest.BASE_URL = ':/' + '/query.yahooapis.com/v1/public/yql?';/*** @static* @property ENV* @description The environment file to load: http://datatables.org/alltables.env*/YQLRequest.ENV = 'http:/' + '/datatables.org/alltables.env';Y.YQLRequest = YQLRequest;/*** This class adds a sugar class to allow access to YQL (http://developer.yahoo.com/yql/).* @class YQL* @constructor* @param {String} sql The SQL statement to execute* @param {Function} callback The callback to execute after the query (optional).* @param {Object} params An object literal of extra parameters to pass along (optional).* @param {Object} opts An object literal of configuration options (optional): proto (http|https), base (url)*/Y.YQL = function (sql, callback, params, opts) {return new Y.YQLRequest(sql, callback, params, opts).send();};}, '3.18.1', {"requires": ["oop"]});