src/services/rest.service.ts
Properties |
|
Methods |
|
constructor(http: Http)
|
||||||||
Defined in src/services/rest.service.ts:14
|
||||||||
Parameters :
|
Public add | ||||||||
add(item: any)
|
||||||||
Defined in src/services/rest.service.ts:89
|
||||||||
Parameters :
Returns :
Observable<number>
|
Public addAll | ||||||||
addAll(tab: Array
|
||||||||
Defined in src/services/rest.service.ts:97
|
||||||||
Parameters :
Returns :
Observable<>
|
Public delete | ||||||||
delete(id: number)
|
||||||||
Defined in src/services/rest.service.ts:111
|
||||||||
Parameters :
Returns :
Observable<>
|
Public get | ||||||||
get(id: number)
|
||||||||
Defined in src/services/rest.service.ts:79
|
||||||||
Parameters :
Returns :
Observable<any>
|
Private getActionUrl |
getActionUrl()
|
Defined in src/services/rest.service.ts:48
|
Returns :
string
|
Public getAll |
getAll()
|
Defined in src/services/rest.service.ts:54
|
Returns :
Observable<[]>
|
Public getAllFromLS | ||||||||
getAllFromLS(maxtime: )
|
||||||||
Defined in src/services/rest.service.ts:29
|
||||||||
Parameters :
Returns :
Array<any>
|
Public getFromCache | ||||||||
getFromCache(id: )
|
||||||||
Defined in src/services/rest.service.ts:40
|
||||||||
Parameters :
Returns :
any
|
Private handleError | ||||||||
handleError(error: Response)
|
||||||||
Defined in src/services/rest.service.ts:116
|
||||||||
Parameters :
Returns :
any
|
Public setApiUrl | ||||||||
setApiUrl(url: string)
|
||||||||
Defined in src/services/rest.service.ts:24
|
||||||||
Parameters :
Returns :
void
|
Public update |
update(id: number, itemToUpdate: any)
|
Defined in src/services/rest.service.ts:105
|
Returns :
Observable<number>
|
Public headers |
headers:
|
Type : Headers
|
Defined in src/services/rest.service.ts:9
|
Public lastGet |
lastGet:
|
Type : any
|
Defined in src/services/rest.service.ts:14
|
Public lastGetAll |
lastGetAll:
|
Type : Array<any>
|
Defined in src/services/rest.service.ts:13
|
Public modelName |
modelName:
|
Type : string
|
Defined in src/services/rest.service.ts:8
|
Private serverWithApiUrl |
serverWithApiUrl:
|
Type : string
|
Defined in src/services/rest.service.ts:10
|
import { Injectable } from '@angular/core';
import { Http, Response, Headers } from '@angular/http';
import 'rxjs/add/operator/map';
import { Observable } from 'rxjs/Observable';
@Injectable()
export class RestService {
public modelName: string;
public headers: Headers;
private serverWithApiUrl: string;
// cache data
public lastGetAll: Array<any>;
public lastGet: any;
constructor(private http: Http) {
this.modelName = 'to-configure';
this.headers = new Headers();
this.headers.append('Content-Type', 'application/json');
this.headers.append('Accept', 'application/json');
}
public setApiUrl( url: string) {
this.serverWithApiUrl = url;
}
// HELPERS
public getAllFromLS(maxtime = 0): Array<any> {
const json = localStorage.getItem( 'rest_all_' + this.modelName );
if ( json ) {
const obj = JSON.parse(json);
if ( obj && (obj.date < (Date.now() - maxtime) ) ) {
return obj;
}
}
}
public getFromCache(id): any {
if (this.lastGetAll) {
return this.lastGetAll.find((unit) => unit.id === id);
} else {
return null;
}
}
private getActionUrl() {
return this.serverWithApiUrl + this.modelName + '/';
}
// REST functions
public getAll(): Observable<any[]> {
return this.http.get(this.getActionUrl(), { headers: this.headers })
.map((response: Response) => {
// getting an array having the same name as the model
const data = response.json()[this.modelName];
// transforming the array from indexed to associative
const tab = data.records.map((elem) => {
const unit = {};
// using the columns order and number to rebuild the object
data.columns.forEach( (champ, index) => {
unit[champ] = elem[index];
});
return unit;
});
this.lastGetAll = tab;
const obj = {
data: tab,
date: Date.now()
};
localStorage.setItem( 'rest_all_' + this.modelName, JSON.stringify(obj) );
return tab;
})
.catch(this.handleError);
}
public get(id: number): Observable<any> {
return this.http.get(this.getActionUrl() + id, { headers: this.headers })
.map((response: Response) => {
const data = response.json();
this.lastGet = data;
return data;
})
.catch(this.handleError);
}
public add(item: any): Observable<number> {
const toAdd = JSON.stringify(item);
return this.http.post(this.getActionUrl(), toAdd, { headers: this.headers })
.map((response: Response) => response.json())
.catch(this.handleError);
}
public addAll(tab: Array<any>): Observable<Array<number>> {
const toAdd = JSON.stringify(tab);
return this.http.post(this.getActionUrl(), toAdd, { headers: this.headers })
.map((response: Response) => response.json())
.catch(this.handleError);
}
public update(id: number, itemToUpdate: any): Observable<number> {
return this.http.put(this.getActionUrl() + id, JSON.stringify(itemToUpdate), { headers: this.headers })
.map((response: Response) => response.json())
.catch(this.handleError);
}
public delete(id: number): Observable<Response> {
return this.http.delete(this.getActionUrl() + id, { headers: this.headers })
.catch(this.handleError);
}
private handleError(error: Response) {
console.error(error);
return Observable.throw(error.json().error || 'Server error');
}
}