2 Play around with S3Ajax!
4 TODO: Remove Dojo dependency
8 // dojo.setModulePrefix("dojo", "js/dojo");
9 // dojo.require("dojo.io.*");
10 // dojo.require("dojo.crypto.SHA1");
11 dojo.require("dojo.storage.*");
17 Initialize the play app.
24 // HACK: Wait for the storage flash to become available.
25 // TODO: Look for an official Dojo event to make this happen.
27 this._storage_wait = setInterval(function() {
28 if ($('dojo-storeContainer')) {
29 clearInterval(_this._storage_wait);
30 _this._storage_wait = null;
38 Make an attempt to recall S3 credentials.
41 if (window.dojo && dojo.storage.get('key_id', '/S3Ajax')) {
42 S3Ajax.KEY_ID = dojo.storage.get('key_id', '/S3Ajax');
43 S3Ajax.SECRET_KEY = dojo.storage.get('secret_key', '/S3Ajax');
44 $('key_id').value = S3Ajax.KEY_ID;
45 $('update_msg').innerHTML = 'Credentials fetched from local storage: '+(new Date());
47 // this.listbuckets();
53 Accept new credentials from the form in the page.
56 S3Ajax.KEY_ID = $('key_id').value;
57 S3Ajax.SECRET_KEY = $('secret_key').value;
59 // Try to stash the credentials away for next time.
61 dojo.storage.set('key_id', S3Ajax.KEY_ID, '/S3Ajax');
62 dojo.storage.set('secret_key', S3Ajax.SECRET_KEY, '/S3Ajax');
65 $('update_msg').innerHTML = 'Last updated: '+(new Date());
69 Download the specified resource.
71 download: function() {
72 var bucket = $('list_bucket').value;
73 var key = $('key').value;
75 $('content').value = "Loading...";
77 S3Ajax.get(bucket, key,
78 function(req, content) {
79 $('content').value = content;
80 $('xfer_msg').innerHTML = "Download succeeded at "+(new Date());
83 $('xfer_msg').innerHTML = "Download failed at "+(new Date());
89 Upload the specified resource.
92 var bucket = $('list_bucket').value;
93 var key = $('key').value;
94 var content = $('content').value;
96 S3Ajax.put(bucket, key, content,
98 $('xfer_msg').innerHTML = "Upload succeeded at "+(new Date());
101 $('xfer_msg').innerHTML = "Upload failed at "+(new Date());
106 S3Ajax.put(bucket, key, content,
108 content_type: "text/plain",
109 meta: {'posted-by':'S3Ajax'},
113 $('xfer_msg').innerHTML = "Upload succeeded at "+(new Date());
116 $('xfer_msg').innerHTML = "Upload failed at "+(new Date());
123 List available buckets
125 listbuckets: function() {
128 setList('buckets_list',['Loading...','']);
132 clearList('buckets_list');
133 if (obj.ListAllMyBucketsResult) {
134 var buckets = obj.ListAllMyBucketsResult.Buckets.Bucket;
135 for (var i=0, bucket; bucket=buckets[i]; i++) {
138 bucket.Name + ' ['+bucket.CreationDate+']',
146 setList('buckets_list', ["Buckets list failed at "+(new Date()),'']);
153 Change the current bucket to one selected in list.
155 selectbucket: function() {
156 var sel = getSelected('buckets_list');
157 if (sel.length) $('list_bucket').value = sel[0];
162 deletebucket: function() {
164 var sel = getSelected('buckets_list');
165 if (!sel.length) return;
167 setList('buckets_list',['Deleting...','']);
168 S3Ajax.deleteBucket(sel[0], function() {
175 createbucket: function() {
177 var bucket = $('list_bucket').value;
179 setList('buckets_list',['Creating...','']);
180 S3Ajax.createBucket(bucket, function() {
186 List a bucket's contents.
190 setList('keys_list', ['Loading...','']);
192 var bucket = $('list_bucket').value;
195 if ($('list_prefix').value) params['prefix'] = $('list_prefix').value;
196 if ($('list_maxkeys').value) params['max-keys'] = $('list_maxkeys').value;
197 if ($('list_marker').value) params['marker'] = $('list_marker').value;
199 S3Ajax.listKeys(bucket, params,
201 clearList('keys_list');
202 var contents = obj.ListBucketResult.Contents;
203 for (var i=0, item; item=contents[i]; i++) {
206 /*item.LastModified + ' ' +*/ item.Key + ' (' + item.Size + ')',
212 setList('keys_list', ["Keys list failed at "+(new Date()),'']);
218 Download the selected key.
220 downloadSelectedKey: function() {
221 var sel = getSelected('keys_list');
223 $('key').value = sel[0];
231 deleteSelectedKeys: function() {
233 var sel_keys = getSelected('keys_list');
235 if (!window.confirm("Delete " + sel_keys.length + " selected items?")) return;
237 S3Ajax.deleteKeys($('list_bucket').value, sel_keys,
238 function(key) { /*logFire("Deleted "+key);*/ },
239 function(req, obj) { /*logFire("Deleted all");*/ _this.list(); }
243 /* Help protect against errant end-commas */
246 addLoadEvent(function(){ Play.init() });