diff --git a/dist/ngRestAdapter.d.ts b/dist/ngRestAdapter.d.ts index a07e323..4195398 100644 --- a/dist/ngRestAdapter.d.ts +++ b/dist/ngRestAdapter.d.ts @@ -26,6 +26,8 @@ declare module NgRestAdapter { remove(url: string, data?: any, headers?: IHeaderConfig, configOverrides?: ng.IRequestShortcutConfig): ng.IHttpPromise; api(url: string): NgRestAdapter.NgRestAdapterService; skipInterceptor(): NgRestAdapter.NgRestAdapterService; + setSkipInterceptorRoutes(excludedRoutes: RegExp[]): NgRestAdapter.NgRestAdapterService; + getSkipInterceptorRoutes(): Array; uuid(): string; isUuid(uuid: string): boolean; getConfig(): INgRestAdapterServiceConfig; @@ -52,6 +54,7 @@ declare module NgRestAdapter { private $http; private uuid4; private apiErrorHandler; + private skipInterceptorRoutes; /** * Construct the service with dependencies injected * @param config @@ -74,6 +77,8 @@ declare module NgRestAdapter { getConfig(): NgRestAdapter.INgRestAdapterServiceConfig; registerApiErrorHandler(apiErrorHandler: IApiErrorHandler): NgRestAdapterService; getErrorHandler(): IApiErrorHandler; + getSkipInterceptorRoutes(): Array; + setSkipInterceptorRoutes(excludedRoutes: Array): NgRestAdapter.NgRestAdapterService; } } declare module NgRestAdapter { diff --git a/dist/ngRestAdapter.js b/dist/ngRestAdapter.js index 0f864bc..281752a 100644 --- a/dist/ngRestAdapter.js +++ b/dist/ngRestAdapter.js @@ -18,6 +18,21 @@ var NgRestAdapter; if (skipInterceptor === true) { return _this.$q.reject(rejection); //exit early } + var skipInterceptorRoutes = ngRestAdapter.getSkipInterceptorRoutes(); + var routeUrl = rejection.config.url; + if (!_.isEmpty(skipInterceptorRoutes)) { + var routeMatches = _.any(skipInterceptorRoutes, function (routeMatch) { + if (_.isRegExp(routeMatch)) { + return routeMatch.test(routeUrl); + } + else { + return routeMatch === routeUrl; + } + }); + if (routeMatches) { + return _this.$q.reject(rejection); //exit early + } + } try { var errorHandler = ngRestAdapter.getErrorHandler(); errorHandler(rejection.config, rejection); @@ -136,6 +151,13 @@ var NgRestAdapter; } throw new NgRestAdapter.NgRestAdapterErrorHandlerNotFoundException("API Error handler is not set"); }; + NgRestAdapterService.prototype.getSkipInterceptorRoutes = function () { + return this.skipInterceptorRoutes; + }; + NgRestAdapterService.prototype.setSkipInterceptorRoutes = function (excludedRoutes) { + this.skipInterceptorRoutes = excludedRoutes; + return this; + }; return NgRestAdapterService; })(); NgRestAdapter.NgRestAdapterService = NgRestAdapterService; diff --git a/dist/ngRestAdapter.js.map b/dist/ngRestAdapter.js.map index e61a191..f9266ec 100644 --- a/dist/ngRestAdapter.js.map +++ b/dist/ngRestAdapter.js.map @@ -1 +1 @@ -{"version":3,"sources":["ngRestAdapterInterceptor.ts","ngRestAdapterInterfaces.ts","ngRestAdapterService.ts","ngRestAdapterServiceProvider.ts"],"names":["NgRestAdapter","NgRestAdapter.NgRestAdapterInterceptor","NgRestAdapter.NgRestAdapterInterceptor.constructor","NgRestAdapter.NgRestAdapterService","NgRestAdapter.NgRestAdapterService.constructor","NgRestAdapter.NgRestAdapterService.sendRequest","NgRestAdapter.NgRestAdapterService.options","NgRestAdapter.NgRestAdapterService.get","NgRestAdapter.NgRestAdapterService.head","NgRestAdapter.NgRestAdapterService.put","NgRestAdapter.NgRestAdapterService.post","NgRestAdapter.NgRestAdapterService.patch","NgRestAdapter.NgRestAdapterService.remove","NgRestAdapter.NgRestAdapterService.api","NgRestAdapter.NgRestAdapterService.skipInterceptor","NgRestAdapter.NgRestAdapterService.uuid","NgRestAdapter.NgRestAdapterService.isUuid","NgRestAdapter.NgRestAdapterService.getConfig","NgRestAdapter.NgRestAdapterService.registerApiErrorHandler","NgRestAdapter.NgRestAdapterService.getErrorHandler","NgRestAdapter.NgRestAdapterException","NgRestAdapter.NgRestAdapterException.constructor","NgRestAdapter.NgRestAdapterException.toString","NgRestAdapter.NgRestAdapterErrorHandlerNotFoundException","NgRestAdapter.NgRestAdapterErrorHandlerNotFoundException.constructor","NgRestAdapter.NgRestAdapterServiceProvider","NgRestAdapter.NgRestAdapterServiceProvider.constructor","NgRestAdapter.NgRestAdapterServiceProvider.constructor.NgRestAdapterServiceFactory","NgRestAdapter.NgRestAdapterServiceProvider.configure"],"mappings":"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","file":"ngRestAdapter.js","sourceRoot":"../src/"} \ No newline at end of file +{"version":3,"sources":["ngRestAdapterInterceptor.ts","ngRestAdapterInterfaces.ts","ngRestAdapterService.ts","ngRestAdapterServiceProvider.ts"],"names":["NgRestAdapter","NgRestAdapter.NgRestAdapterInterceptor","NgRestAdapter.NgRestAdapterInterceptor.constructor","NgRestAdapter.NgRestAdapterService","NgRestAdapter.NgRestAdapterService.constructor","NgRestAdapter.NgRestAdapterService.sendRequest","NgRestAdapter.NgRestAdapterService.options","NgRestAdapter.NgRestAdapterService.get","NgRestAdapter.NgRestAdapterService.head","NgRestAdapter.NgRestAdapterService.put","NgRestAdapter.NgRestAdapterService.post","NgRestAdapter.NgRestAdapterService.patch","NgRestAdapter.NgRestAdapterService.remove","NgRestAdapter.NgRestAdapterService.api","NgRestAdapter.NgRestAdapterService.skipInterceptor","NgRestAdapter.NgRestAdapterService.uuid","NgRestAdapter.NgRestAdapterService.isUuid","NgRestAdapter.NgRestAdapterService.getConfig","NgRestAdapter.NgRestAdapterService.registerApiErrorHandler","NgRestAdapter.NgRestAdapterService.getErrorHandler","NgRestAdapter.NgRestAdapterService.getSkipInterceptorRoutes","NgRestAdapter.NgRestAdapterService.setSkipInterceptorRoutes","NgRestAdapter.NgRestAdapterException","NgRestAdapter.NgRestAdapterException.constructor","NgRestAdapter.NgRestAdapterException.toString","NgRestAdapter.NgRestAdapterErrorHandlerNotFoundException","NgRestAdapter.NgRestAdapterErrorHandlerNotFoundException.constructor","NgRestAdapter.NgRestAdapterServiceProvider","NgRestAdapter.NgRestAdapterServiceProvider.constructor","NgRestAdapter.NgRestAdapterServiceProvider.constructor.NgRestAdapterServiceFactory","NgRestAdapter.NgRestAdapterServiceProvider.configure"],"mappings":"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","file":"ngRestAdapter.js","sourceRoot":"../src/"} \ No newline at end of file diff --git a/src/ngRestAdapterInterceptor.ts b/src/ngRestAdapterInterceptor.ts index 1acad5d..708a962 100644 --- a/src/ngRestAdapterInterceptor.ts +++ b/src/ngRestAdapterInterceptor.ts @@ -28,13 +28,33 @@ module NgRestAdapter { public responseError = (rejection:ng.IHttpPromiseCallbackArg):any => { let ngRestAdapter = this.getNgRestAdapterService(); - + let skipInterceptor = _.get(rejection.config, 'ngRestAdapterServiceConfig.skipInterceptor', false); if (skipInterceptor === true){ return this.$q.reject(rejection); //exit early } + let skipInterceptorRoutes = ngRestAdapter.getSkipInterceptorRoutes(); + let routeUrl = rejection.config.url; + if (!_.isEmpty(skipInterceptorRoutes)){ + + let routeMatches = _.any(skipInterceptorRoutes, (routeMatch:RegExp|string) => { + + if (_.isRegExp(routeMatch)){ + return (routeMatch).test(routeUrl); + }else{ + return routeMatch === routeUrl; + } + + }); + + if (routeMatches){ + return this.$q.reject(rejection); //exit early + } + + } + try { let errorHandler = ngRestAdapter.getErrorHandler(); diff --git a/src/ngRestAdapterInterfaces.ts b/src/ngRestAdapterInterfaces.ts index 0c8c051..55e032e 100644 --- a/src/ngRestAdapterInterfaces.ts +++ b/src/ngRestAdapterInterfaces.ts @@ -13,6 +13,8 @@ module NgRestAdapter { api(url:string):NgRestAdapter.NgRestAdapterService; skipInterceptor():NgRestAdapter.NgRestAdapterService; + setSkipInterceptorRoutes(excludedRoutes:RegExp[]):NgRestAdapter.NgRestAdapterService; + getSkipInterceptorRoutes():Array; uuid():string; isUuid(uuid:string):boolean; diff --git a/src/ngRestAdapterService.ts b/src/ngRestAdapterService.ts index 1dc9b99..9e0ab03 100644 --- a/src/ngRestAdapterService.ts +++ b/src/ngRestAdapterService.ts @@ -4,7 +4,8 @@ module NgRestAdapter { export class NgRestAdapterService implements INgRestAdapterService { - private apiErrorHandler; + private apiErrorHandler:IApiErrorHandler; + private skipInterceptorRoutes:Array; /** * Construct the service with dependencies injected @@ -130,6 +131,18 @@ module NgRestAdapter { throw new NgRestAdapterErrorHandlerNotFoundException("API Error handler is not set"); } + public getSkipInterceptorRoutes():Array{ + return this.skipInterceptorRoutes; + } + + + public setSkipInterceptorRoutes(excludedRoutes:Array):NgRestAdapter.NgRestAdapterService { + + this.skipInterceptorRoutes = excludedRoutes; + + return this; + } + } } diff --git a/test/test.ts b/test/test.ts index c4fe785..cdbed36 100644 --- a/test/test.ts +++ b/test/test.ts @@ -410,13 +410,20 @@ describe('Service tests', () => { describe('Base $http usage', () => { + let spiedHandler; beforeEach(() => { $exceptionHandler.errors = []; //clear errors + }); it('should allow the $http service to be used as normal (success)', () => { + (ngRestAdapterService).apiErrorHandler = null; //unset the error handler (normally not allowed) + + spiedHandler = sinon.spy(); //spy on (private) error handler + ngRestAdapterService.registerApiErrorHandler(spiedHandler); + $httpBackend.expectGET('/any').respond('ok'); //the original base let httpPromise = $http.get('/any'); @@ -429,7 +436,45 @@ describe('Service tests', () => { }); - it('should allow the $http service to be used as normal (error)', () => { + it ('should be able to set interceptor routes', () => { + + let routeRegex = /\/excluded\/regex.*/; + let stringMatch = '/excluded/string/example'; + + ngRestAdapterService.setSkipInterceptorRoutes([routeRegex, stringMatch]); + + expect(ngRestAdapterService.getSkipInterceptorRoutes()[0]).to.equal(routeRegex); + expect(ngRestAdapterService.getSkipInterceptorRoutes()[1]).to.equal(stringMatch); + + }); + + it('should not intercept excluded (by regex) domains', () => { + + $httpBackend.expectGET('/excluded/regex/example').respond(500, 'error'); + + let httpPromise = $http.get('/excluded/regex/example'); + + expect(httpPromise).eventually.to.be.rejected.and.have.deep.property('data', 'error'); + + $httpBackend.flush(); + + expect(spiedHandler).not.to.have.been.called; + }); + + it('should not intercept excluded (by string match) domains', () => { + + $httpBackend.expectGET('/excluded/string/example').respond(500, 'error'); + + let httpPromise = $http.get('/excluded/string/example'); + + expect(httpPromise).eventually.to.be.rejected.and.have.deep.property('data', 'error'); + + $httpBackend.flush(); + + expect(spiedHandler).not.to.have.been.called; + }); + + it('should allow the $http service to be used as normal (error intercepted)', () => { $httpBackend.expectGET('/any').respond(500, 'error'); //the original base @@ -440,9 +485,11 @@ describe('Service tests', () => { $httpBackend.flush(); + expect(spiedHandler).to.have.been.calledOnce; //interceptor should have been called + expect($exceptionHandler.errors).to.be.empty; //no errors after the fact - }) + }); });