| Index: third_party/polymer/components-chromium/core-ajax/core-xhr-extracted.js
|
| diff --git a/third_party/polymer/components-chromium/core-ajax/core-xhr-extracted.js b/third_party/polymer/components-chromium/core-ajax/core-xhr-extracted.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..bd433528a8ca291fef2117dc69bfc00ff32bb531
|
| --- /dev/null
|
| +++ b/third_party/polymer/components-chromium/core-ajax/core-xhr-extracted.js
|
| @@ -0,0 +1,87 @@
|
| +
|
| +
|
| + Polymer('core-xhr', {
|
| +
|
| + /**
|
| + * Sends a HTTP request to the server and returns the XHR object.
|
| + *
|
| + * @method request
|
| + * @param {Object} inOptions
|
| + * @param {String} inOptions.url The url to which the request is sent.
|
| + * @param {String} inOptions.method The HTTP method to use, default is GET.
|
| + * @param {boolean} inOptions.sync By default, all requests are sent asynchronously. To send synchronous requests, set to true.
|
| + * @param {Object} inOptions.params Data to be sent to the server.
|
| + * @param {Object} inOptions.body The content for the request body for POST method.
|
| + * @param {Object} inOptions.headers HTTP request headers.
|
| + * @param {String} inOptions.responseType The response type. Default is 'text'.
|
| + * @param {boolean} inOptions.withCredentials Whether or not to send credentials on the request. Default is false.
|
| + * @param {Object} inOptions.callback Called when request is completed.
|
| + * @returns {Object} XHR object.
|
| + */
|
| + request: function(options) {
|
| + var xhr = new XMLHttpRequest();
|
| + var url = options.url;
|
| + var method = options.method || 'GET';
|
| + var async = !options.sync;
|
| + //
|
| + var params = this.toQueryString(options.params);
|
| + if (params && method == 'GET') {
|
| + url += (url.indexOf('?') > 0 ? '&' : '?') + params;
|
| + }
|
| + var xhrParams = this.isBodyMethod(method) ? (options.body || params) : null;
|
| + //
|
| + xhr.open(method, url, async);
|
| + if (options.responseType) {
|
| + xhr.responseType = options.responseType;
|
| + }
|
| + if (options.withCredentials) {
|
| + xhr.withCredentials = true;
|
| + }
|
| + this.makeReadyStateHandler(xhr, options.callback);
|
| + this.setRequestHeaders(xhr, options.headers);
|
| + xhr.send(xhrParams);
|
| + if (!async) {
|
| + xhr.onreadystatechange(xhr);
|
| + }
|
| + return xhr;
|
| + },
|
| +
|
| + toQueryString: function(params) {
|
| + var r = [];
|
| + for (var n in params) {
|
| + var v = params[n];
|
| + n = encodeURIComponent(n);
|
| + r.push(v == null ? n : (n + '=' + encodeURIComponent(v)));
|
| + }
|
| + return r.join('&');
|
| + },
|
| +
|
| + isBodyMethod: function(method) {
|
| + return this.bodyMethods[(method || '').toUpperCase()];
|
| + },
|
| +
|
| + bodyMethods: {
|
| + POST: 1,
|
| + PUT: 1,
|
| + DELETE: 1
|
| + },
|
| +
|
| + makeReadyStateHandler: function(xhr, callback) {
|
| + xhr.onreadystatechange = function() {
|
| + if (xhr.readyState == 4) {
|
| + callback && callback.call(null, xhr.response, xhr);
|
| + }
|
| + };
|
| + },
|
| +
|
| + setRequestHeaders: function(xhr, headers) {
|
| + if (headers) {
|
| + for (var name in headers) {
|
| + xhr.setRequestHeader(name, headers[name]);
|
| + }
|
| + }
|
| + }
|
| +
|
| + });
|
| +
|
| +
|
|
|