Newer
Older
import { Injectable, Inject } from '@angular/core';
import {Observable, of} from 'rxjs';
SysCheckInfo,
AuthData,
WorkspaceData,
BookletData, ApiError, AccessObject
@Injectable({
providedIn: 'root'
})

Martin Mechtel
committed
@Inject('SERVER_URL') private readonly serverUrl: string,
login(name: string, password: string): Observable<AuthData | number> {
.put<AuthData>(this.serverUrl + 'session/admin', {name, password})
catchError((err: ApiError) => {
console.warn(`login Api-Error: ${err.code} ${err.info} `);
}),
switchMap(authData => {
if (typeof authData === 'number') {
const errCode = authData as number;
if (errCode === 400) {

Martin Mechtel
committed
return this.http
.put<AuthData>(this.serverUrl + 'session/login', {name, password})
.pipe(catchError((err: ApiError) => of(err.code)));

Martin Mechtel
committed
} else {

Martin Mechtel
committed
}
} else {

Martin Mechtel
committed
}
})
} else {
return this.nameOnlyLogin(name);
}
}
nameOnlyLogin(name: string): Observable<AuthData | number> {
return this.http
.put<AuthData>(this.serverUrl + 'session/login', {name})
.pipe(
catchError((err: ApiError) => {
console.warn(`nameOnlyLogin Api-Error: ${err.code} ${err.info} `);
})
codeLogin(code: string): Observable<AuthData | number> {
return this.http
.put<AuthData>(this.serverUrl + 'session/person', {code})
.pipe(
catchError((err: ApiError) => {
console.warn(`codeLogin Api-Error: ${err.code} ${err.info} `);
})
getWorkspaceData(workspaceId: string): Observable<WorkspaceData> {
return this.http
.get<WorkspaceData>(this.serverUrl + 'workspace/' + workspaceId)
.pipe(catchError(() => {
console.warn('get workspace data failed for ' + workspaceId);
return of(<WorkspaceData>{
id: workspaceId,
name: workspaceId,
}));
getGroupData(groupName: string): Observable<AccessObject> {
// TODO find consistent terminology. in XSD they are called name & label and likewise (mostly) in newer BE-versions
interface NameAndLabel {
name: string;
label: string;
}
return this.http
.get<NameAndLabel>(this.serverUrl + 'monitor/group/' + groupName)
.pipe(map((r: NameAndLabel): AccessObject => ({id: r.name, name: r.label})))
.pipe(catchError(() => {
console.warn('get group data failed for ' + groupName);
return of(<AccessObject>{
id: groupName,
name: groupName,
});
}));
getSessionData(): Observable<AuthData | number> {
return this.http
.get<AuthData>(this.serverUrl + 'session')
.pipe(
catchError((err: ApiError) => of(err.code))
getBookletData(bookletId: string): Observable<BookletData> {
return this.http
.get<BookletData>(this.serverUrl + 'booklet/' + bookletId + '/data')
.pipe(
map(bData => {
bData.id = bookletId;
console.warn('get booklet data failed for ' + bookletId);
return of(<BookletData>{
startTest(bookletName: string): Observable<string | number> {
.put<number>(this.serverUrl + 'test', {bookletName})
catchError((err: ApiError) => of(err.code))

mechtelm
committed
getSysConfig(): Observable<SysConfig> {
return this.http
.get<SysConfig>(this.serverUrl + `system/config`)

mechtelm
committed
return this.http
.get<SysCheckInfo[]>(this.serverUrl + 'sys-checks')
.pipe(
catchError(() => {

mechtelm
committed
})
);
}