I already configured airbrake to report error but it seems it doesn't report http errors. Hence I'm trying to connfigure it to do so. Here's my factory:
import AirbrakeClient from 'airbrake-js';
export let errorHttpInterceptor = ($q, CONSTANT) => {
'use strict';
let airbrake = new AirbrakeClient({
projectId: CONSTANTS.AIRBRAKE_PROJECT_ID,,
projectKey: CONSTANTS.AIRBRAKE_PROJECT_KEY
});
airbrake.addFilter((notice) => {
console.log(notice);
return notice;
});
return {
requestError: (rejection) => {
console.log(rejection);
// do something on error
airbrake.notify(rejection);
return $q.reject(rejection);
},
responseError: (rejection) => {
console.log(rejection);
airbrake.notify(rejection);
return $q.reject(rejection);
}
};
};
Then in the config:
let httpAuthConfig = /*@ngInject*/ $httpProvider => {
'use strict';
let errorHttp = $injector => { return $injector.get('errorHttpInterceptor'); };
$httpProvider.interceptors.push(['$injector', errorHttp]);
};
It seem to work only that I get [object Object]
as the error on airbrake, no additional error detail or Backtrace. Is there something else I'm missing?
I finally found out that the server response wasn't in the format airbrake wanted it so I passed an error message built from the response into the airbrake notifier.
responseError: (response) => {
console.log(response);
airbrake.notify({
error: {
message: response.status + ': ' + response.data.error.general,
name: 'HttpError: ',
stack: ''
}
});
return $q.reject(response);
}
It doesn't feel like the cleanest of solution but it sure works.