1 import { Location } from '@angular/common';
3 import { URLVerbs } from '../constants/app.constants';
5 export class URLBuilderService {
6 constructor(readonly base: string) {}
8 private static concatURLSegments(segments: string[]): string {
9 return segments.reduce(Location.joinWithSlash);
12 static buildURL(absolute: boolean, ...segments: string[]): string {
13 return URLBuilderService.concatURLSegments([...(absolute ? ['/'] : []), ...segments]);
16 private getURL(verb: URLVerbs, absolute = true, ...segments: string[]): string {
17 return URLBuilderService.buildURL(absolute, this.base, verb, ...segments);
20 getCreate(absolute = true): string {
21 return this.getURL(URLVerbs.CREATE, absolute);
23 getDelete(absolute = true): string {
24 return this.getURL(URLVerbs.DELETE, absolute);
27 getEdit(item: string, absolute = true): string {
28 return this.getURL(URLVerbs.EDIT, absolute, item);
30 getUpdate(item: string, absolute = true): string {
31 return this.getURL(URLVerbs.UPDATE, absolute, item);
34 getAdd(absolute = true): string {
35 return this.getURL(URLVerbs.ADD, absolute);
37 getRemove(absolute = true): string {
38 return this.getURL(URLVerbs.REMOVE, absolute);