-
Notifications
You must be signed in to change notification settings - Fork 119
/
Copy pathapp.service.ts
116 lines (105 loc) · 4.26 KB
/
app.service.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
import {Injectable} from '@angular/core';
import {HttpClient, HttpParams} from '@angular/common/http';
import {HttpUtils} from '../support/http.utils';
import {forkJoin, Observable, throwError} from 'rxjs';
import {App, ApplicationType, AppPage} from '../model/app.model';
import {catchError, map} from 'rxjs/operators';
import {DetailedApp} from '../model/detailed-app.model';
import {ErrorUtils} from '../support/error.utils';
import {UrlUtilities} from '../../url-utilities.service';
@Injectable({
providedIn: 'root'
})
export class AppService {
constructor(protected httpClient: HttpClient) {}
getApps(
page: number,
size: number,
search?: string,
type?: ApplicationType,
sort?: string,
order?: string,
defaultVersion = false
): Observable<AppPage | unknown> {
let params = HttpUtils.getPaginationParams(page, size);
const headers = HttpUtils.getDefaultHttpHeaders();
if (sort && order) {
params = params.append('sort', `${sort},${order}`);
}
if (search) {
params = params.append('search', search);
}
if (type) {
params = params.append('type', type.toString());
}
if (defaultVersion) {
params = params.append('defaultVersion', 'true');
}
return this.httpClient
.get(UrlUtilities.calculateBaseApiUrl() + 'apps', {headers, params})
.pipe(map(AppPage.parse), catchError(ErrorUtils.catchError));
}
getApp(name: string, type: ApplicationType, appVersion?: string): Observable<DetailedApp | unknown> {
const headers = HttpUtils.getDefaultHttpHeaders();
let url = UrlUtilities.calculateBaseApiUrl() + `apps/${type}/${name}`;
if (appVersion) {
url = UrlUtilities.calculateBaseApiUrl() + `apps/${type}/${name}/${appVersion}`;
}
return this.httpClient.get(url, {headers}).pipe(map(DetailedApp.parse), catchError(ErrorUtils.catchError));
}
getAppVersions(name: string, type: ApplicationType): Observable<App[]> {
return this.getApps(0, 10000, name, type).pipe(
map((app: AppPage): App[] =>
app.items.filter(a => a.name === name && a.type === type).sort((a, b) => (a.version < b.version ? -1 : 1))
)
);
}
unregisterApp(app: App): Observable<any> {
const headers = HttpUtils.getDefaultHttpHeaders();
let url = UrlUtilities.calculateBaseApiUrl() + `apps/${app.type}/${app.name}`;
if (app.version) {
url = `${url}/${app.version}`;
}
return this.httpClient.delete(url, {headers}).pipe(catchError(ErrorUtils.catchError));
}
unregisterApps(apps: App[]): Observable<any[]> {
return forkJoin(apps.map(app => this.unregisterApp(app)));
}
defaultVersion(app: App): Observable<any> {
const headers = HttpUtils.getDefaultHttpHeaders();
return this.httpClient
.put(UrlUtilities.calculateBaseApiUrl() + `apps/${app.type}/${app.name}/${app.version}`, {headers})
.pipe(catchError(ErrorUtils.catchError));
}
importUri(uri: string, force: boolean = false): Observable<any> {
const headers = HttpUtils.getDefaultHttpHeaders();
const params = new HttpParams().append('uri', uri).append('force', force ? 'true' : 'false');
return this.httpClient
.post(UrlUtilities.calculateBaseApiUrl() + 'apps', {}, {headers, params})
.pipe(catchError(ErrorUtils.catchError));
}
importProps(properties: string, force: boolean): Observable<any> {
const headers = HttpUtils.getDefaultHttpHeaders();
const params = new HttpParams().append('apps', properties).append('force', force ? 'true' : 'false');
return this.httpClient
.post(UrlUtilities.calculateBaseApiUrl() + 'apps', {}, {headers, params})
.pipe(catchError(ErrorUtils.catchError));
}
registerProp(prop: any): Observable<any> {
let params = new HttpParams().append('uri', prop.uri).append('force', prop.force.toString());
if (prop.metaDataUri) {
params = params.append('metadata-uri', prop.metaDataUri);
}
const headers = HttpUtils.getDefaultHttpHeaders();
return this.httpClient
.post(
UrlUtilities.calculateBaseApiUrl() + `apps/${ApplicationType[prop.type]}/${prop.name}`,
{},
{params, headers}
)
.pipe(catchError(ErrorUtils.catchError));
}
registerProps(props: Array<any>): Observable<any> {
return forkJoin(props.map(prop => this.registerProp(prop)));
}
}