summaryrefslogtreecommitdiff
path: root/js/dojo/dojox/data/S3Store.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/dojo/dojox/data/S3Store.js')
-rw-r--r--js/dojo/dojox/data/S3Store.js35
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};
+ }
+ }
+);
+
+});