From d710fe5a8192b4f03b73f5b5535c31036236cc9a Mon Sep 17 00:00:00 2001 From: Emil Abraham Date: Sun, 10 Mar 2019 14:55:54 -0400 Subject: [PATCH] Added app module and http error interceptor --- src/app/app.module.ts | 11 +++++++++-- src/app/http-error.interceptor.ts | 32 +++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 2 deletions(-) create mode 100644 src/app/http-error.interceptor.ts diff --git a/src/app/app.module.ts b/src/app/app.module.ts index e9dbe99..4ff5eda 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -1,7 +1,7 @@ import { BrowserModule } from '@angular/platform-browser'; import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; -import { HttpClientModule } from '@angular/common/http'; +import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http'; import { AppComponent } from './app.component'; import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; @@ -14,6 +14,7 @@ import { FrontpageComponent } from './frontpage/frontpage.component'; import { GeneratorSearchComponent } from './generator-search/generator-search.component'; import { SignUpComponent } from './sign-up/sign-up.component'; import { VisualizeAllComponent } from './visualize-all/visualize-all.component'; +import { HttpErrorInterceptor } from './http-error.interceptor'; @NgModule({ declarations: [ @@ -46,7 +47,13 @@ import { VisualizeAllComponent } from './visualize-all/visualize-all.component'; ]), ], - providers: [], + providers: [ + { + provide: HTTP_INTERCEPTORS, + useClass: HttpErrorInterceptor, + multi: true + } + ], bootstrap: [AppComponent] }) export class AppModule { } diff --git a/src/app/http-error.interceptor.ts b/src/app/http-error.interceptor.ts new file mode 100644 index 0000000..9e6214a --- /dev/null +++ b/src/app/http-error.interceptor.ts @@ -0,0 +1,32 @@ +import { + HttpEvent, + HttpInterceptor, + HttpHandler, + HttpRequest, + HttpResponse, + HttpErrorResponse +} from '@angular/common/http'; +import { Observable, throwError } from 'rxjs'; +import { retry, catchError } from 'rxjs/operators'; + +export class HttpErrorInterceptor implements HttpInterceptor { + intercept(request: HttpRequest, next: HttpHandler): Observable> { + return next.handle(request) + .pipe( + retry(1), + catchError((error: HttpErrorResponse) => { + let errorMessage = ''; + if (error.error instanceof ErrorEvent) { + // client-side error + errorMessage = `Error: ${error.error.message}`; + } else { + // server-side error + //console.log("poop"); + errorMessage = `Error Code: ${error.status}\nMessage: ${error.message}`; + } + + return throwError(errorMessage); + }) + ) + } +} \ No newline at end of file