diff options
author | Jacob <gatelyjm@clarkson.edu> | 2019-12-07 03:17:14 -0500 |
---|---|---|
committer | Jacob <gatelyjm@clarkson.edu> | 2019-12-07 03:17:14 -0500 |
commit | c6afa531481b664950406df6cea17794942d8028 (patch) | |
tree | 2c74b9d469a31f5ffbacedb316a0732e4ba2abae /recipeBuddy/src/app/REST_service | |
parent | 0922e7f865d61295adc6807f2776a80ce70fe711 (diff) | |
parent | 5cf3689290666f70cd631d7b3d40a2ed245a3fce (diff) |
Merge branch 'master' into JacobJacob
Diffstat (limited to 'recipeBuddy/src/app/REST_service')
-rw-r--r-- | recipeBuddy/src/app/REST_service/backend.service.spec.ts | 12 | ||||
-rw-r--r-- | recipeBuddy/src/app/REST_service/backend.service.ts | 93 |
2 files changed, 105 insertions, 0 deletions
diff --git a/recipeBuddy/src/app/REST_service/backend.service.spec.ts b/recipeBuddy/src/app/REST_service/backend.service.spec.ts new file mode 100644 index 0000000..2fe8217 --- /dev/null +++ b/recipeBuddy/src/app/REST_service/backend.service.spec.ts @@ -0,0 +1,12 @@ +import { TestBed } from '@angular/core/testing'; + +import { BackendService } from './backend.service'; + +describe('BackendService', () => { + beforeEach(() => TestBed.configureTestingModule({})); + + it('should be created', () => { + const service: BackendService = TestBed.get(BackendService); + expect(service).toBeTruthy(); + }); +}); diff --git a/recipeBuddy/src/app/REST_service/backend.service.ts b/recipeBuddy/src/app/REST_service/backend.service.ts new file mode 100644 index 0000000..1a2d933 --- /dev/null +++ b/recipeBuddy/src/app/REST_service/backend.service.ts @@ -0,0 +1,93 @@ +import { Injectable } from '@angular/core' +import { HttpClient, HttpHeaders } from '@angular/common/http' +import { Observable, throwError } from 'rxjs' +import { retry, catchError, map } from 'rxjs/operators' +import { Recipe } from '../DataModels/recipe' + + +export interface Status { + Code: number; + Msg: string; +} +export interface MsgList { + Status: Status; + Data: number[]; +} + +export interface Msg { + Status: Status; + Data: Recipe; +} + + +@Injectable({ providedIn: 'root' }) + +/* BackendService class based on tutorial at: + * <https://www.positronx.io/angular-8-httpclient-http-tutorial-build-consume-restful-api/> + */ +export class BackendService { + apiURL = 'http://api.recipebuddy.xyz:8888' + + constructor( private http: HttpClient) + { + } + + httpOptions = {headers: new HttpHeaders( + {'Content-Type':'application/json'} + )} + + + getRecipes(): Observable<number[]> + { + return this.http.get<MsgList>(this.apiURL + '/recipes') + .pipe ( + retry(1), + map(msg => msg.Data), + catchError(this.handleError) + ) + } + + + getRecipe(id): Observable<Recipe> + { + return this.http.get<Msg>(this.apiURL + '/recipes/' + id) + .pipe ( + retry(1), + map(msg => msg.Data), + catchError(this.handleError) + ) + } + + createRecipe(data): Observable<Recipe> + { + return this.http.post<Recipe>(this.apiURL + '/recipes', + JSON.stringify(data), this.httpOptions) + } + + updateRecipe(data): Observable<Recipe> + { + return this.http.put<Recipe>(this.apiURL + '/recipes/' + data.id, + JSON.stringify(data), this.httpOptions) + } + + deleteRecipe(id): Observable<Msg> + { + return this.http.delete<Msg>(this.apiURL + '/recipes/' + id) + .pipe ( + retry(1), + catchError(this.handleError) + ) + } + + handleError(error) { + let errMsg = ''; + if (error.error instanceof ErrorEvent) { + errMsg = error.error.message; + } else { + errMsg = 'Error API'; + } + console.log(errMsg) + window.alert(errMsg) + return throwError(errMsg); + } +} |