Newer
Older
import { Injectable, Inject } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Observable, of } from 'rxjs';
import { catchError, map } from 'rxjs/operators';
import {
GetFileResponseData, SysCheckStatistics,
ReviewData, LogData, UnitResponse, ResultData
} from './workspace.interfaces';
import { WorkspaceDataService } from './workspacedata.service';
import { ApiError, WorkspaceData } from '../app.interfaces';
@Injectable({
providedIn: 'root'
})
@Inject('SERVER_URL') private readonly serverUrl: string,
private wds: WorkspaceDataService,
private http: HttpClient
) {
}
getWorkspaceData(workspaceId: string): Observable<WorkspaceData | number> {
return this.http
.get<WorkspaceData>(`${this.serverUrl}workspace/${workspaceId}`)
catchError((err: ApiError) => {
console.warn(`getWorkspaceData Api-Error: ${err.code} ${err.info} `);
})
getFiles(): Observable<GetFileResponseData> {
.get<GetFileResponseData>(`${this.serverUrl}workspace/${this.wds.wsId}/files`)
.pipe(
catchError((err: ApiError) => {
console.warn(`getFiles Api-Error: ${err.code} ${err.info} `);
})
);
deleteFiles(filesToDelete: Array<string>): Observable<FileDeletionReport> {
.request<FileDeletionReport>('delete', `${this.serverUrl}workspace/${this.wds.wsId}/files`, { body: { f: filesToDelete } })
.pipe(
catchError((err: ApiError) => {
console.warn(`deleteFiles Api-Error: ${err.code} ${err.info} `);
return of(<FileDeletionReport> {
deleted: [],
not_allowed: [`deleteFiles Api-Error: ${err.code} ${err.info} `],
did_not_exist: []
})
);
getResultData(): Observable<ResultData[]> {
.get<ResultData[]>(`${this.serverUrl}workspace/${this.wds.wsId}/results`, {})
.pipe(
catchError((err: ApiError) => {
console.warn(`getResultData Api-Error: ${err.code} ${err.info} `);
})
);
getResponses(groups: string[]): Observable<UnitResponse[]> {
.get<UnitResponse[]>(`${this.serverUrl}workspace/${this.wds.wsId}/responses`, { params: { groups: groups.join(',') } })
.pipe(
catchError((err: ApiError) => {
console.warn(`getResponses Api-Error: ${err.code} ${err.info} `);
})
);
getLogs(groups: string[]): Observable<LogData[]> {
.get<LogData[]>(`${this.serverUrl}workspace/${this.wds.wsId}/logs`, { params: { groups: groups.join(',') } })
.pipe(
catchError((err: ApiError) => {
console.warn(`getLogs Api-Error: ${err.code} ${err.info} `);
})
);
getReviews(groups: string[]): Observable<ReviewData[]> {
.get<ReviewData[]>(`${this.serverUrl}workspace/${this.wds.wsId}/reviews`, { params: { groups: groups.join(',') } })
.pipe(
catchError((err: ApiError) => {
console.warn(`getReviews Api-Error: ${err.code} ${err.info} `);
})
);
deleteData(groups: string[]): Observable<boolean> {
.request('delete', `${this.serverUrl}workspace/${this.wds.wsId}/responses`, { body: { groups } })
.pipe(
map(() => true),
catchError((err: ApiError) => {
console.warn(`deleteData Api-Error: ${err.code} ${err.info} `);
})
);
getSysCheckReportList(): Observable<SysCheckStatistics[]> {
.get<ReviewData[]>(`${this.serverUrl}workspace/${this.wds.wsId}/sys-check/reports/overview`)
.pipe(
catchError((err: ApiError) => {
console.warn(`getSysCheckReportList Api-Error: ${err.code} ${err.info} `);
})
);
getSysCheckReport(reports: string[], enclosure: string, delimiter: string, lineEnding: string)
: Observable<Blob | boolean> {
.get(`${this.serverUrl}workspace/${this.wds.wsId}/sys-check/reports`,
{
params: {
checkIds: reports.join(','),
},
responseType: 'blob'
})
.pipe(
catchError((err: ApiError) => {
console.warn(`getSysCheckReport Api-Error: ${err.code} ${err.info} `);
})
);
deleteSysCheckReports(checkIds: string[]): Observable <FileDeletionReport> {
.request<FileDeletionReport>('delete', `${this.serverUrl}workspace/${this.wds.wsId}/sys-check/reports`, { body: { checkIds } })
.pipe(
catchError((err: ApiError) => {
console.warn(`deleteSysCheckReports Api-Error: ${err.code} ${err.info} `);
return of(<FileDeletionReport> {
deleted: [],
not_allowed: [`deleteSysCheckReports Api-Error: ${err.code} ${err.info} `],
did_not_exist: []
})
);
downloadFile(fileType: string, fileName: string): Observable<Blob | boolean> {
.get(`${this.serverUrl}workspace/${this.wds.wsId}/file/${fileType}/${fileName}`, { responseType: 'blob' })
.pipe(
catchError((err: ApiError) => {
console.warn(`downloadFile Api-Error: ${err.code} ${err.info} `);
})
);
}
}
export interface FileDeletionReport {
deleted: string[];
not_allowed: string[];
did_not_exist: string[];