Updating observable on webscoket event
Change-Id: I8325785b8d40b646ea67f28b61b8d603803a571e
diff --git a/src/app/services/rest/auth.service.ts b/src/app/services/rest/auth.service.ts
index c53e3f4..b5b00fb 100644
--- a/src/app/services/rest/auth.service.ts
+++ b/src/app/services/rest/auth.service.ts
@@ -3,7 +3,7 @@
// Imports
import {AppConfig} from '../../config/app.config';
import {Injectable} from '@angular/core';
-import {Http, Response} from '@angular/http';
+import {Http, Response, Headers} from '@angular/http';
import {Observable} from 'rxjs/Rx';
import {IAuthRequest, IAuthResponse} from '../../interfaces/auth.interface';
import {CookieService} from 'angular2-cookie/core';
@@ -24,17 +24,25 @@
isAuthenticated(): string {
this.xosToken = this.cookieService.get('xoscsrftoken');
this.xosSessionId = this.cookieService.get('xossessionid');
- return this.xosToken;
+ return this.xosToken && this.xosSessionId;
+ }
+
+ // get auth info to authenticate API
+ getUserHeaders(): Headers{
+ const headers = new Headers();
+ headers.append('x-csrftoken', this.cookieService.get('xoscsrftoken'));
+ headers.append('x-sessionid', this.cookieService.get('xossessionid'));
+ return headers;
}
// save cookies
- storeAuth(auth: IAuthResponse): void {
+ private storeAuth(auth: IAuthResponse): void {
this.cookieService.put('xoscsrftoken', auth.xoscsrftoken);
this.cookieService.put('xossessionid', auth.xossessionid);
}
// remove cookies
- removeAuth(): void {
+ private removeAuth(): void {
this.cookieService.remove('xoscsrftoken');
this.cookieService.remove('xossessionid');
}
diff --git a/src/app/services/rest/core.service.ts b/src/app/services/rest/core.service.ts
index 04097a6..3890c47 100644
--- a/src/app/services/rest/core.service.ts
+++ b/src/app/services/rest/core.service.ts
@@ -2,9 +2,10 @@
// Imports
import {AppConfig} from '../../config/app.config';
-import { Injectable } from '@angular/core';
-import { Http, Response, Headers, RequestOptions } from '@angular/http';
+import {Injectable} from '@angular/core';
+import {Response} from '@angular/http';
import {Observable} from 'rxjs/Rx';
+import {XosHttp} from './xoshttp.service';
// Import RxJs required methods
import 'rxjs/add/operator/map';
@@ -12,19 +13,22 @@
@Injectable()
export class CoreService {
- // Resolve HTTP using the constructor
- constructor (private http: Http) {}
// private instance variable to hold base url
private baseUrl = AppConfig.apiEndpoint;
+ // Resolve HTTP using the constructor
+ constructor (private http: XosHttp) {}
+
// Fetch all existing comments
getCoreEndpoints() : Observable<any[]> {
+ const search = 'some=param';
+
// ...using get request
- return this.http.get(`${this.baseUrl}/core/`)
+ return this.http.get(`${this.baseUrl}/core/`, {search})
// ...and calling .json() on the response to return data
- .map((res:Response) => res.json())
- //...errors if any
+ .map((res: Response) => res.json())
+ // ...errors if any
.catch((error:any) => Observable.throw(error.json().error || 'Server error'));
}
diff --git a/src/app/services/rest/instance.service.ts b/src/app/services/rest/instance.service.ts
new file mode 100644
index 0000000..c864e54
--- /dev/null
+++ b/src/app/services/rest/instance.service.ts
@@ -0,0 +1,25 @@
+/// <reference path="../../../../typings/index.d.ts"/>
+
+// Imports
+import {AppConfig} from '../../config/app.config';
+import {AuthService} from './auth.service';
+import { Injectable } from '@angular/core';
+import { Http, Response, Headers } from '@angular/http';
+import {XosHttp} from './xoshttp.service';
+import {Observable} from 'rxjs/Rx';
+
+// Import RxJs required methods
+import 'rxjs/add/operator/map';
+import 'rxjs/add/operator/catch';
+
+@Injectable()
+export class InstanceService {
+ private baseUrl = AppConfig.apiEndpoint;
+ constructor (private http: XosHttp, private authService: AuthService) {}
+ // Fetch all existing instances
+ query() : Observable<any[]> {
+ return this.http.get(`${this.baseUrl}/core/instances/`)
+ .map((res: Response) => res.json())
+ .catch((error: any) => Observable.throw(error.response.json().error || 'Server error'));
+ }
+}
diff --git a/src/app/services/rest/xoshttp.service.ts b/src/app/services/rest/xoshttp.service.ts
new file mode 100644
index 0000000..5572683
--- /dev/null
+++ b/src/app/services/rest/xoshttp.service.ts
@@ -0,0 +1,55 @@
+import {Http, RequestOptionsArgs, Response, URLSearchParams} from '@angular/http';
+import {Injectable} from '@angular/core';
+import {Observable} from 'rxjs';
+import {AuthService} from './auth.service';
+/**
+ * Created by teone on 12/6/16.
+ */
+@Injectable()
+export class XosHttp {
+ constructor(
+ private http: Http,
+ private authService: AuthService
+ ) {
+ }
+
+ private checkOptions(options?: RequestOptionsArgs): RequestOptionsArgs {
+ // if options are not there, create them
+ if(!options){
+ options = {};
+ }
+ return options;
+ }
+
+ private getHeaders(options: RequestOptionsArgs): RequestOptionsArgs {
+ // add auth headers
+ options.headers = this.authService.getUserHeaders();
+ return options;
+ }
+
+ private getParams(options: RequestOptionsArgs): RequestOptionsArgs {
+ // add the no_hyperlinks param
+ if (!options.search) {
+ options.search = new URLSearchParams();
+ }
+
+ if (options.search instanceof URLSearchParams) {
+ options.search.set('no_hyperlinks', '1');
+ }
+ else if (typeof options.search === 'string') {
+ options.search += '&no_hyperlinks=1';
+ }
+ return options;
+ }
+
+ get(url: string, options?: RequestOptionsArgs): Observable<Response> {
+
+ options = this.checkOptions(options);
+ options = this.getHeaders(options);
+ options = this.getParams(options);
+
+ return this.http.get(url, options)
+ }
+
+ // TODO add POST, PUT, DELETE declaration
+}