- Timestamp:
- 03/17/14 21:50:17 (11 years ago)
- Location:
- Dev/trunk
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
Dev/trunk/Gruntfile.js
r520 r522 31 31 ['path-check:foreman' 32 32 ,'compile' 33 ,'foreman: dev']);33 ,'foreman:run-src']); 34 34 grunt.registerTask('build', 35 35 "Compile and make a Dojo build of the client (compress sources).", … … 43 43 ['path-check:foreman' 44 44 ,'build' 45 ,'foreman: build']);45 ,'foreman:run-build']); 46 46 grunt.registerTask('deploy', 47 47 "Make a build and deploy it to Heroku.", … … 50 50 ,'svninfo' 51 51 ,'build' 52 ,'git_deploy:deploy']); 52 ,'git_deploy:deploy-build']); 53 grunt.registerTask('deploy-src', 54 "Deploy sources to Heroku (FOR DEBUGGING ONLY).", 55 ['path-check:svn' 56 ,'path-check:git' 57 ,'svninfo' 58 ,'compile' 59 ,'git_deploy:deploy-src']); 53 60 // database management 54 61 grunt.registerTask('db-backup-cloud-to-dated-local', … … 126 133 }, 127 134 foreman: { 128 dev: {135 'run-src': { 129 136 options: { 130 137 cwd: srcDir 131 138 } 132 139 }, 133 build: {140 'run-build': { 134 141 options: { 135 142 cwd: buildDir … … 138 145 }, 139 146 git_deploy: { 140 deploy: {147 'deploy-build': { 141 148 options: { 142 149 url: 'git@heroku.com:quod-erat.git', 143 150 branch: 'master', 144 message: " Deployment of revision <%= svninfo.rev %> on <%= grunt.template.today() %>."151 message: "Build deployment of revision <%= svninfo.rev %> on <%= grunt.template.today() %>." 145 152 }, 146 153 src: buildDir 154 }, 155 156 'deploy-src': { 157 options: { 158 url: 'git@heroku.com:quod-erat.git', 159 branch: 'master', 160 message: "Source deployment of revision <%= svninfo.rev %> on <%= grunt.template.today() %>." 161 }, 162 src: srcDir 147 163 } 148 164 }, -
Dev/trunk/src/client/qed-client/xhr.js
r487 r522 2 2 "./session", 3 3 "dojo/Deferred", 4 "dojo/_base/array", 4 5 "dojo/_base/lang", 5 "dojo/ on",6 "dojo/ _base/xhr"7 ], function(session, Deferred, lang, on, xhr) {6 "dojo/_base/xhr", 7 "dojo/on" 8 ], function(session, Deferred, array, lang, xhr, on) { 8 9 9 var user = session.get(); 10 10 11 var queue = []; 11 12 on(session, 'change', function(newUser){ 12 var user; 13 var generation = 0; 14 15 on(session, 'change', setUser); 16 setUser(session.get()); 17 18 function setUser(newUser) { 13 19 user = newUser; 14 retry(); 15 }); 16 17 function retry() { 18 if (user && queue.length > 0) { 19 var item = queue.shift(); 20 console.log("Retry",item.options.url); 21 real_request(item); 20 generation += 1; 21 if ( user ) { 22 // we make a local copy, just in case the requests cause 23 // events to happen 24 var q = queue; 25 queue = []; 26 array.forEach(q,real_request); 27 } else { 28 session.restore(); 22 29 } 23 30 } 24 31 25 32 function real_request(item) { 33 var req_generation = generation; 26 34 var req = xhr(item.method,lang.mixin(item.options||{},{ 27 35 failOk: true … … 29 37 item.promise.ioArgs = req.ioArgs; 30 38 31 req.then(function(result){ 39 console.log("Do request",item.options.url); 40 req.then(function(result) { 32 41 item.dfd.resolve(result); 33 retry();34 42 }, function(error){ 35 43 if ( error.response.status === 401 ) { 36 queue.unshift(item); 37 session.restore(); 44 if ( user ) { 45 if ( req_generation === generation ) { 46 console.log("Retry after reauthentication",item.options.url); 47 // we need to reauth 48 queue.push(item); 49 setUser(null); 50 } else { 51 console.log("Retry immediately",item.options.url); 52 // we already did, redo request right away 53 real_request(item); 54 } 55 } else { 56 console.log("Retry when authenticated",item.options.url); 57 queue.push(item); 58 } 38 59 } else { 39 60 item.dfd.reject(error); 40 retry();41 61 } 42 62 }); 43 63 } 44 64 45 var _ request= function(method, options) {65 var _xhr = function(method, options) { 46 66 var item = { 47 67 method: method, … … 50 70 }; 51 71 item.promise = lang.delegate(item.dfd.promise); 52 // only do the request directly if we are authenticated and 53 // there are no earlier requests queued. 54 if ( user && queue.length === 0 ) { 55 console.log("Request",options.url); 72 // only do the request directly if we are authenticated 73 if ( user ) { 74 console.log("Immediate",options.url); 56 75 real_request(item); 57 76 } else { 58 console.log(" Push",options.url);77 console.log("Delay until authenticated",options.url); 59 78 queue.push(item); 60 79 } … … 62 81 }; 63 82 64 return _ request;83 return _xhr; 65 84 }); -
Dev/trunk/src/server/util/couch.js
r494 r522 77 77 }; 78 78 }, function(err) { 79 return Q.reject( err);79 return Q.reject({error:err.message}); 80 80 }); 81 81 return res;
Note: See TracChangeset
for help on using the changeset viewer.