openaire-library/connect/curators/curator.service.ts

54 lines
1.7 KiB
TypeScript

import {Injectable} from '@angular/core';
import {HttpClient, HttpHeaders} from '@angular/common/http';
import {BehaviorSubject, Observable} from 'rxjs';
import {Curator} from '../../utils/entities/CuratorInfo';
import {EnvProperties} from '../../utils/properties/env-properties';
import {COOKIE} from '../../login/utils/helper.class';
@Injectable()
export class CuratorService {
private curatorsSubject: BehaviorSubject<Curator[]> = new BehaviorSubject([]);
constructor(private http: HttpClient) {
}
public initCurators(properties: EnvProperties, url: string): void {
this.http.get<Curator[]>((properties.useCache) ? (properties.cacheUrl + encodeURIComponent(url)) : url).
subscribe((curators) => {
this.curatorsSubject.next(curators);
});
}
public get curators(): Observable<Curator[]> {
return this.curatorsSubject.asObservable();
}
public updateCurators(curator: Curator) {
const curators = this.curatorsSubject.value;
if (curators && curator) {
curator._id = null;
curators.push(curator);
this.curatorsSubject.next(curators);
}
}
public updateCurator(url: string, curator: Curator) {
return this.http.post<Curator>(url, curator, this.getAuthOptions());
}
public getCurator(properties: EnvProperties, url: string): Observable<Curator> {
return this.http.get<Curator>((properties.useCache) ? (properties.cacheUrl + encodeURIComponent(url)) : url);
}
// TODO remove and use CustomOptions.getAuthOptions()
private getAuthOptions(): any {
const httpOptions = {
headers: new HttpHeaders({
'X-XSRF-TOKEN': COOKIE.getCookie(COOKIE.cookieName_id),
}), withCredentials: true
};
return httpOptions;
}
}