var net = {};
- // raises the egAuthExpired event on NO_SESSION
- net.checkResponse = function(resp) {
+ // raises global event handlers when needed.
+ net.checkResponse = function(resp, service, method, params) {
var content = resp.content();
- if (!content) return null;
var evt = egEvent.parse(content);
- if (evt && evt.textcode == 'NO_SESSION') {
- $rootScope.$broadcast('egAuthExpired')
- } else {
- return content;
+
+ if (evt) {
+ switch(evt.textcode) {
+
+ case 'NO_SESSION':
+ $rootScope.$broadcast('egAuthExpired');
+ return {reject : true};
+
+ case 'PERM_FAILURE':
+ $rootScope.$broadcast('egNetPermFailure', {
+ service : service,
+ method : method,
+ params : params,
+ perm_evt : evt
+ });
+ return {reject : true};
+
+ // Add other global event handlers here.
+
+ default:
+ // other event types are passed to the caller.
+ }
}
+
+ return {content : content};
};
net.request = function(service, method) {
deferred.resolve(last);
},
onresponse : function(r) {
- last = net.checkResponse(r.recv());
- deferred.notify(last);
+ var stat =
+ net.checkResponse(r.recv(), service, method, params);
+
+ if (stat.reject) {
+ deferred.reject();
+ } else {
+ last = stat.content;
+ deferred.notify(last);
+ }
},
onerror : function(msg) {
// 'msg' currently tells us very little, so don't