]> git.proxmox.com Git - ceph.git/blame - ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/services/url-builder.service.ts
import 14.2.4 nautilus point release
[ceph.git] / ceph / src / pybind / mgr / dashboard / frontend / src / app / shared / services / url-builder.service.ts
CommitLineData
11fdf7f2
TL
1import { Location } from '@angular/common';
2
3import { URLVerbs } from '../constants/app.constants';
4
5export class URLBuilderService {
6 constructor(readonly base: string) {}
7
8 private static concatURLSegments(segments: string[]): string {
9 return segments.reduce(Location.joinWithSlash);
10 }
11
12 static buildURL(absolute: boolean, ...segments: string[]): string {
13 return URLBuilderService.concatURLSegments([...(absolute ? ['/'] : []), ...segments]);
14 }
15
16 private getURL(verb: URLVerbs, absolute = true, ...segments: string[]): string {
17 return URLBuilderService.buildURL(absolute, this.base, verb, ...segments);
18 }
19
20 getCreate(absolute = true): string {
21 return this.getURL(URLVerbs.CREATE, absolute);
22 }
494da23a
TL
23
24 getCreateFrom(item: string, absolute = true): string {
25 return this.getURL(URLVerbs.CREATE, absolute, item);
26 }
27
11fdf7f2
TL
28 getDelete(absolute = true): string {
29 return this.getURL(URLVerbs.DELETE, absolute);
30 }
31
32 getEdit(item: string, absolute = true): string {
33 return this.getURL(URLVerbs.EDIT, absolute, item);
34 }
35 getUpdate(item: string, absolute = true): string {
36 return this.getURL(URLVerbs.UPDATE, absolute, item);
37 }
38
39 getAdd(absolute = true): string {
40 return this.getURL(URLVerbs.ADD, absolute);
41 }
42 getRemove(absolute = true): string {
43 return this.getURL(URLVerbs.REMOVE, absolute);
44 }
494da23a
TL
45
46 // Prometheus wording
47 getRecreate(item: string, absolute = true): string {
48 return this.getURL(URLVerbs.RECREATE, absolute, item);
49 }
11fdf7f2 50}