123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- import { Injectable } from '@angular/core';
- import { Http, Headers, Response, RequestOptions } from '@angular/http';
- import { Observable } from 'rxjs/Observable';
- import { PreferencesProvider } from './preferences-provider';
- import 'rxjs/add/operator/toPromise'
- import 'rxjs/add/operator/map';
- import 'rxjs/add/operator/catch';
- import 'rxjs/add/observable/throw';
- import 'rxjs/add/observable/forkJoin';
- @Injectable()
- export class OdooProvider {
- private url: string;
- constructor(
- private http: Http,
- private preferencesProvider: PreferencesProvider
- ) {
- this.url = preferencesProvider.getHost();
- this.normalizeUrl();
- }
- /**
- *
- */
- private normalizeUrl(): void {
- this.url = (this.url.startsWith('http://') ? this.url : 'http://' + this.url) + '/api/';
- }
- /**
- *
- */
- post(resource: string, data: Array<any>): Promise<any> {
- let headers = new Headers({
- 'Content-Type': 'application/x-www-form-urlencoded',
- 'Authorization': 'JWT ' + this.preferencesProvider.getToken()
- });
- let options = new RequestOptions({ headers: headers });
- let toSend: Array<Observable<Response>> = [];
- for (let i = 0; i < data.length; i++) {
- this.encodeData(data[i]);
- toSend.push(this.http.post(this.url + resource, this.encodeData(data[i]), options));
- }
- return new Promise((resolve, reject) => {
- Observable.forkJoin(toSend).subscribe(r => {
- resolve(r);
- }, e => {
- reject(e);
- });
- });
- }
- /**
- *
- */
- private encodeData(data: any) {
- let body = [];
- for (let field in data) {
- if (['doc_state', "remote_id", "rev"].indexOf(field) == -1) {
- continue;
- }
- body.push(field + "=" + data[field]);
- }
- return body.join("&");
- }
-
- /**
- *
- */
- get(resource: string, id?: number, filter?: Array<[string, string]>): Promise<any> {
- this.url = this.url + resource;
- let headers = new Headers({
- 'Authorization': 'JWT ' + this.preferencesProvider.getToken()
- });
-
- let options = new RequestOptions({ headers: headers });
- return new Promise((resolve, reject) => {
- this.http.get(this.url, options).toPromise().then(r => {
- resolve(r);
- }).catch(e => {
- reject(e);
- });
- });
- }
- /**
- *
- */
- put(resource: string, data: Array<any>) {
- }
- /**
- *
- */
- delete(resource: string, data: Array<any>) {
- }
- /**
- *
- */
- private extractData(response: Response): any {
- return response.json() || [];
- }
- /**
- *
- */
- private handleError(error: any) {
- let msg = error._body;
- return Observable.throw(msg);
- }
- }
|