summaryrefslogtreecommitdiff
path: root/recipeBuddy/src/app/REST_service/backend.service.ts
diff options
context:
space:
mode:
authorJacob <gatelyjm@clarkson.edu>2019-12-07 03:17:14 -0500
committerJacob <gatelyjm@clarkson.edu>2019-12-07 03:17:14 -0500
commitc6afa531481b664950406df6cea17794942d8028 (patch)
tree2c74b9d469a31f5ffbacedb316a0732e4ba2abae /recipeBuddy/src/app/REST_service/backend.service.ts
parent0922e7f865d61295adc6807f2776a80ce70fe711 (diff)
parent5cf3689290666f70cd631d7b3d40a2ed245a3fce (diff)
Merge branch 'master' into JacobJacob
Diffstat (limited to 'recipeBuddy/src/app/REST_service/backend.service.ts')
-rw-r--r--recipeBuddy/src/app/REST_service/backend.service.ts93
1 files changed, 93 insertions, 0 deletions
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);
+ }
+}