| Index: third_party/polymer/components/core-ajax/core-xhr.html
|
| diff --git a/third_party/polymer/components/core-ajax/core-xhr.html b/third_party/polymer/components/core-ajax/core-xhr.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..8557aecfb1843e06ee6888888b6bda1b197699ff
|
| --- /dev/null
|
| +++ b/third_party/polymer/components/core-ajax/core-xhr.html
|
| @@ -0,0 +1,115 @@
|
| +<!--
|
| +Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
|
| +This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
|
| +The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
|
| +The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
|
| +Code distributed by Google as part of the polymer project is also
|
| +subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
|
| +-->
|
| +<!--
|
| +/**
|
| + * @group Polymer Core Elements
|
| + *
|
| + * core-xhr can be used to perform XMLHttpRequests.
|
| + *
|
| + * <core-xhr id="xhr"></core-xhr>
|
| + * ...
|
| + * this.$.xhr.request({url: url, params: params, callback: callback});
|
| + *
|
| + * @element core-xhr
|
| + */
|
| +-->
|
| +
|
| +<link rel="import" href="../polymer/polymer.html">
|
| +
|
| +<polymer-element name="core-xhr" hidden>
|
| +
|
| + <script>
|
| +
|
| + 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]);
|
| + }
|
| + }
|
| + }
|
| +
|
| + });
|
| +
|
| + </script>
|
| +
|
| +</polymer-element>
|
|
|