Skip to content

Commit 6972c81

Browse files
committed
Merge pull request #7 from yllieth/fix-error_handler_for_jobs
Fix error handler for jobs
2 parents 8913962 + 3a3c745 commit 6972c81

File tree

5 files changed

+88
-8
lines changed

5 files changed

+88
-8
lines changed

dist/predicsis-jsSDK.js

Lines changed: 43 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ angular.module('predicsis.jsSDK.helpers', []);
44
angular
55
.module('predicsis.jsSDK', ['predicsis.jsSDK.models', 'predicsis.jsSDK.helpers', 'restangular'])
66
.provider('predicsisAPI', function () {
7-
var errorHandler = function(response) { throw Error(response); }
7+
'use strict';
8+
var errorHandler = function(response) { throw Error(response); };
89
var baseURL = 'https://api.predicsis.com';
910
var oauthToken = 'no-token-defined';
1011

@@ -18,13 +19,25 @@ angular
1819
this.setErrorHandler = function(handler) { errorHandler = handler; };
1920

2021
this.$get = function(Restangular,
21-
Datasets, Dictionaries, Jobs, Modalities, Models, OauthTokens, OauthApplications, PreparationRules, Projects, Reports, UserSettings, Sources, Uploads, Users, Variables,
22+
Datasets, Dictionaries, Jobs, Modalities, Models, OauthTokens, OauthApplications,
23+
PreparationRules, Projects, Reports, UserSettings, Sources, Uploads, Users, Variables,
2224
datasetHelper, jobsHelper, modelHelper, projectsHelper, s3FileHelper) {
2325
var self = this;
2426

2527
Restangular.setBaseUrl(this.getBaseUrl());
2628
Restangular.setDefaultHeaders({ accept: 'application/json', Authorization: 'Bearer ' + this.getOauthToken() });
2729
Restangular.setErrorInterceptor(function(response) { errorHandler(response); });
30+
jobsHelper.setErrorHandler(function(err) {
31+
err = {
32+
data: {
33+
message: err.message,
34+
status: err.status,
35+
errors: [err]
36+
},
37+
status: err.status
38+
};
39+
errorHandler(err);
40+
});
2841
Restangular.addResponseInterceptor(function(data, operation, what, url, response) {
2942
//operation is one of 'getList', 'post', 'get', 'patch'
3043
if (['getList', 'post', 'get', 'patch'].indexOf(operation) > -1) {
@@ -2722,7 +2735,7 @@ angular
27222735
.service('jobsHelper', function($q, Jobs) {
27232736
'use strict';
27242737
var self = this;
2725-
2738+
var errorHandler;
27262739

27272740
/**
27282741
* @ngdoc function
@@ -2818,9 +2831,36 @@ angular
28182831
return self.listen(jobId)
28192832
.then(function() {
28202833
return asyncResult;
2834+
})
2835+
.catch(function(err) {
2836+
if(errorHandler) {
2837+
errorHandler(err);
2838+
}
2839+
throw err;
28212840
});
28222841
});
28232842
};
2843+
2844+
/**
2845+
* @ngdoc function
2846+
* @methodOf predicsis.jsSDK.helpers.jobsHelper
2847+
* @name setErrorHandler
2848+
* @description set error handler (errors occuring in a job)
2849+
*
2850+
* Usage example:
2851+
* <pre>
2852+
* return jobsHelper
2853+
* .setErrorHandler(function(error) {
2854+
* // do something with error
2855+
* // ...
2856+
* });
2857+
* </pre>
2858+
*
2859+
* @param {Function} callback called when an error occurs during a Job
2860+
*/
2861+
self.setErrorHandler = function(cb) {
2862+
errorHandler = cb;
2863+
};
28242864
});
28252865

28262866
/**

0 commit comments

Comments
 (0)