S3Store.js 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. /*
  2. Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved.
  3. Available via Academic Free License >= 2.1 OR the modified BSD license.
  4. see: http://dojotoolkit.org/license for details
  5. */
  6. if(!dojo._hasResource["dojox.data.S3Store"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
  7. dojo._hasResource["dojox.data.S3Store"] = true;
  8. dojo.provide("dojox.data.S3Store");
  9. dojo.require("dojox.data.JsonRestStore");
  10. dojo.require("dojox.rpc.ProxiedPath");
  11. // S3JsonRestStore is an extension of JsonRestStore to handle
  12. // Amazon's S3 service using JSON data
  13. dojo.declare("dojox.data.S3Store",
  14. dojox.data.JsonRestStore,
  15. {
  16. _processResults : function(results){
  17. // unfortunately, S3 returns query results in XML form
  18. var keyElements = results.getElementsByTagName("Key");
  19. var jsResults = [];
  20. var self = this;
  21. for(var i=0; i <keyElements.length;i++){
  22. var keyElement = keyElements[i];
  23. // manually create lazy loaded Deferred items for each item in the result array
  24. var val = {
  25. _loadObject: (function(key,val){
  26. return function(callback){
  27. // when a callback is added we will fetch it
  28. delete this._loadObject;
  29. self.service(key).addCallback(callback);
  30. };
  31. })(keyElement.firstChild.nodeValue,val)
  32. };
  33. jsResults.push(val);
  34. }
  35. return {totalCount:jsResults.length, items: jsResults};
  36. }
  37. }
  38. );
  39. }