| <polymer-element name="xhr-element"> |
| <script> |
| Polymer('xhr-element', { |
| LOGIN_ERROR_MESSAGE: 'Please check if you are logged in with a ' + |
| 'google.com or chromium.org account in the ' + |
| 'upper right corner of the page.', |
| handleError: function(req, callback) { |
| callback(this.LOGIN_ERROR_MESSAGE); |
| }, |
| handleLoad: function(req, loadCallback, errorCallback) { |
| if (req.status != 200) { |
| errorCallback('HTTP error ' + req.status); |
| return; |
| } |
| try { |
| var response = JSON.parse(req.responseText); |
| } catch (e) { |
| errorCallback(this.LOGIN_ERROR_MESSAGE); |
| return; |
| } |
| if (response.error) { |
| errorCallback(response.error); |
| return; |
| } |
| loadCallback(response); |
| }, |
| send: function(url, xsrfToken, params, loadCallback, errorCallback) { |
| var postdata = 'xsrf_token=' + encodeURIComponent(xsrfToken); |
| for (var name in params) { |
| postdata += '&' + name + '=' + encodeURIComponent(params[name]); |
| } |
| var req = new XMLHttpRequest(); |
| req.onerror = this.handleError.bind(this, req, errorCallback); |
| req.onload = this.handleLoad.bind(this, req, loadCallback, errorCallback); |
| req.open('post', url, true); |
| req.setRequestHeader('Content-type', |
| 'application/x-www-form-urlencoded'); |
| req.send(postdata); |
| return req; |
| } |
| }); |
| </script> |
| </polymer-element> |