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

45 lines
1.4 KiB
TypeScript

import {Injectable} from '@angular/core';
import {HttpClient} from '@angular/common/http';
import {BehaviorSubject, Observable} from 'rxjs';
import {Curator} from '../../utils/entities/CuratorInfo';
import {EnvProperties} from '../../utils/properties/env-properties';
import {CustomOptions} from "../../services/servicesUtils/customOptions.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, CustomOptions.getAuthOptions());
}
public getCurator(properties: EnvProperties, url: string): Observable<Curator> {
return this.http.get<Curator>((properties.useCache) ? (properties.cacheUrl + encodeURIComponent(url)) : url);
}
}