diff options
Diffstat (limited to 'js/dojo/dojox/data/S3Store.js')
| -rw-r--r-- | js/dojo/dojox/data/S3Store.js | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/js/dojo/dojox/data/S3Store.js b/js/dojo/dojox/data/S3Store.js new file mode 100644 index 0000000..0a32385 --- /dev/null +++ b/js/dojo/dojox/data/S3Store.js @@ -0,0 +1,35 @@ +//>>built +define("dojox/data/S3Store", ["dojo/_base/declare", "dojox/data/JsonRestStore", "dojox/rpc/ProxiedPath"], + function(declare, JsonRestStore, ProxiedPath) { + +// S3JsonRestStore is an extension of JsonRestStore to handle +// Amazon's S3 service using JSON data +/*===== var JsonRestStore = dojox.data.JsonRestStore =====*/ +return declare("dojox.data.S3Store", JsonRestStore, + { + _processResults : function(results){ + // unfortunately, S3 returns query results in XML form + var keyElements = results.getElementsByTagName("Key"); + var jsResults = []; + var self = this; + for(var i=0; i <keyElements.length;i++){ + var keyElement = keyElements[i]; + // manually create lazy loaded Deferred items for each item in the result array + var val = { + _loadObject: (function(key,val){ + return function(callback){ + // when a callback is added we will fetch it + delete this._loadObject; + self.service(key).addCallback(callback); + }; + })(keyElement.firstChild.nodeValue,val) + }; + jsResults.push(val); + } + + return {totalCount:jsResults.length, items: jsResults}; + } + } +); + +}); |
