]>
Commit | Line | Data |
---|---|---|
11fdf7f2 TL |
1 | import { Location } from '@angular/common'; |
2 | ||
3 | import { URLVerbs } from '../constants/app.constants'; | |
4 | ||
5 | export 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 | } |