groceries-angular-service
Version:
Angular Service to be used with the sample groceries project
65 lines (56 loc) • 1.8 kB
text/typescript
import { Injectable, Inject, forwardRef } from '@angular/core';
import { Http, Headers } from '@angular/http';
import { Config } from './models/config';
import { Grocery } from './models/grocery';
import { Observable } from 'rxjs/Rx';
import 'rxjs/add/operator/map';
()
export class GroceryListService {
constructor((forwardRef(() => Http)) private http: Http) {}
load(): Observable<Grocery[]> {
let headers = new Headers();
headers.append('Authorization', 'Bearer ' + Config.token);
return this.http.get(Config.apiUrl + 'Groceries', {
headers: headers
})
.map(res => res.json())
.map(data => {
let groceryList = [];
data.Result.forEach((grocery) => {
groceryList.push(new Grocery(grocery.Id, grocery.Name));
});
return groceryList;
})
.catch(this.handleErrors);
}
add(name: string): Observable<Grocery> {
let headers = new Headers();
headers.append('Authorization', 'Bearer ' + Config.token);
headers.append('Content-Type', 'application/json');
return this.http.post(
Config.apiUrl + 'Groceries',
JSON.stringify({ Name: name }),
{ headers: headers }
)
.map(res => res.json())
.map(data => {
return new Grocery(data.Result.Id, name);
})
.catch(this.handleErrors);
}
delete(id: string) {
let headers = new Headers();
headers.append('Authorization', 'Bearer ' + Config.token);
headers.append('Content-Type', 'application/json');
return this.http.delete(
Config.apiUrl + 'Groceries/' + id,
{ headers: headers }
)
.map(res => res.json())
.catch(this.handleErrors);
}
handleErrors(error: Response) {
console.log(JSON.stringify(error.json()));
return Observable.throw(error);
}
}