aboutsummaryrefslogtreecommitdiff
path: root/contexts/data/lib/closure-library/closure/goog/datasource/jsxmlhttpdatasource.js
diff options
context:
space:
mode:
Diffstat (limited to 'contexts/data/lib/closure-library/closure/goog/datasource/jsxmlhttpdatasource.js')
-rw-r--r--contexts/data/lib/closure-library/closure/goog/datasource/jsxmlhttpdatasource.js193
1 files changed, 0 insertions, 193 deletions
diff --git a/contexts/data/lib/closure-library/closure/goog/datasource/jsxmlhttpdatasource.js b/contexts/data/lib/closure-library/closure/goog/datasource/jsxmlhttpdatasource.js
deleted file mode 100644
index 3a8445b..0000000
--- a/contexts/data/lib/closure-library/closure/goog/datasource/jsxmlhttpdatasource.js
+++ /dev/null
@@ -1,193 +0,0 @@
-// Copyright 2006 The Closure Library Authors. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS-IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-/**
- * @fileoverview
- * DataSource implementation that uses XMLHttpRequest as transport, with
- * response as serialized JS object (not required to be JSON) that can
- * be evaluated and set to a variable.
- *
- * Response can have unexecutable starting/ending text to prevent inclusion
- * using <script src="...">
- *
- */
-
-
-goog.provide('goog.ds.JsXmlHttpDataSource');
-
-goog.require('goog.Uri');
-goog.require('goog.ds.DataManager');
-goog.require('goog.ds.FastDataNode');
-goog.require('goog.ds.LoadState');
-goog.require('goog.ds.logger');
-goog.require('goog.events');
-goog.require('goog.net.EventType');
-goog.require('goog.net.XhrIo');
-
-
-
-/**
- * Similar to JsonDataSource, with using XMLHttpRequest for transport
- * Currently requires the result be a JS object that can be evaluated and
- * set to a variable and doesn't require strict JSON notation.
- *
- * @param {string || goog.Uri} uri URI for the request.
- * @param {string} name Name of the datasource.
- * @param {string=} opt_startText Text to expect/strip before JS response.
- * @param {string=} opt_endText Text to expect/strip after JS response.
- * @param {boolean=} opt_usePost If true, use POST. Defaults to false (GET).
- *
- * @extends {goog.ds.FastDataNode}
- * @constructor
- */
-goog.ds.JsXmlHttpDataSource = function(uri, name, opt_startText, opt_endText,
- opt_usePost) {
- goog.ds.FastDataNode.call(this, {}, name, null);
- if (uri) {
- this.uri_ = new goog.Uri(uri);
- this.xhr_ = new goog.net.XhrIo();
- this.usePost_ = !!opt_usePost;
-
- goog.events.listen(this.xhr_, goog.net.EventType.COMPLETE,
- this.completed_, false, this);
- } else {
- this.uri_ = null;
- }
- this.startText_ = opt_startText;
- this.endText_ = opt_endText;
-};
-goog.inherits(goog.ds.JsXmlHttpDataSource, goog.ds.FastDataNode);
-
-
-/**
- * Delimiter for start of JSON data in response.
- * null = starts at first character of response
- * @type {string|undefined}
- * @private
- */
-goog.ds.JsXmlHttpDataSource.prototype.startText_;
-
-
-/**
- * Delimiter for end of JSON data in response.
- * null = ends at last character of response
- * @type {string|undefined}
- * @private
- */
-goog.ds.JsXmlHttpDataSource.prototype.endText_;
-
-
-/**
- * Gets the state of the backing data for this node
- * @return {goog.ds.LoadState} The state.
- * @override
- */
-goog.ds.JsXmlHttpDataSource.prototype.getLoadState = function() {
- return this.loadState_;
-};
-
-
-/**
- * Sets the request data. This can be used if it is required to
- * send a specific body rather than build the body from the query
- * parameters. Only used in POST requests.
- * @param {string} data The data to send in the request body.
- */
-goog.ds.JsXmlHttpDataSource.prototype.setQueryData = function(data) {
- this.queryData_ = data;
-};
-
-
-/**
- * Load or reload the backing data for this node.
- * Fires the JsonDataSource
- * @override
- */
-goog.ds.JsXmlHttpDataSource.prototype.load = function() {
- goog.ds.logger.info('Sending JS request for DataSource ' +
- this.getDataName() + ' to ' + this.uri_);
-
- if (this.uri_) {
- if (this.usePost_) {
-
- var queryData;
- if (!this.queryData_) {
- queryData = this.uri_.getQueryData().toString();
- } else {
- queryData = this.queryData_;
- }
-
- var uriNoQuery = this.uri_.clone();
- uriNoQuery.setQueryData(null);
- this.xhr_.send(String(uriNoQuery), 'POST', queryData);
- } else {
- this.xhr_.send(String(this.uri_));
- }
- } else {
- this.loadState_ = goog.ds.LoadState.NOT_LOADED;
- }
-};
-
-
-/**
- * Called on successful request.
- * @private
- */
-goog.ds.JsXmlHttpDataSource.prototype.success_ = function() {
- goog.ds.DataManager.getInstance().fireDataChange(this.getDataName());
-};
-
-
-/**
- * Completed callback. Loads data if successful, otherwise sets
- * state to FAILED
- * @param {goog.events.Event} e Event object, Xhr is target.
- * @private
- */
-goog.ds.JsXmlHttpDataSource.prototype.completed_ = function(e) {
- if (this.xhr_.isSuccess()) {
- goog.ds.logger.info('Got data for DataSource ' + this.getDataName());
- var text = this.xhr_.getResponseText();
-
- // Look for start and end token and trim text
- if (this.startText_) {
- var startpos = text.indexOf(this.startText_);
- text = text.substring(startpos + this.startText_.length);
- }
- if (this.endText_) {
- var endpos = text.lastIndexOf(this.endText_);
- text = text.substring(0, endpos);
- }
-
- // Eval result
- /** @preserveTry */
- try {
- var jsonObj = /** @type {Object} */ (eval('[' + text + '][0]'));
- this.extendWith_(jsonObj);
- this.loadState_ = goog.ds.LoadState.LOADED;
- }
- catch (ex) {
- // Invalid JS
- this.loadState_ = goog.ds.LoadState.FAILED;
- goog.ds.logger.severe('Failed to parse data: ' + ex.message);
- }
-
- // Call on a timer to avoid threading issues on IE.
- goog.global.setTimeout(goog.bind(this.success_, this), 0);
- } else {
- goog.ds.logger.info('Data retrieve failed for DataSource ' +
- this.getDataName());
- this.loadState_ = goog.ds.LoadState.FAILED;
- }
-};