import {HttpHeaders} from "@angular/common/http"; export interface RequestData { endpoint: string; queryParams: Record | null> | null; httpHeaders: HttpHeaders; data: any; silenceMode: boolean; withCredentials: boolean; needAuth: boolean; } export class RequestBuilder { private endpoint: string = ''; private queryParams: Record | null> | null = null; private httpHeaders: HttpHeaders = new HttpHeaders(); private data: any = null; private silenceMode: boolean = false; private withCredentials: boolean = false; constructor() { } public setEndpoint(endpoint: string): this { this.endpoint = endpoint; return this; } public setQueryParams(queryParams: Record | null>): RequestBuilder { this.queryParams = queryParams; return this; } public addHeaders(headers: Record): RequestBuilder { Object.keys(headers).forEach(key => { this.httpHeaders = this.httpHeaders.set(key, headers[key]); }); return this; } public setData(data: any): RequestBuilder { this.data = data; return this; } public setSilenceMode(silence: boolean = true): RequestBuilder { this.silenceMode = silence; return this; } public setWithCredentials(credentials: boolean = true): RequestBuilder { this.withCredentials = credentials; return this; } public get build(): RequestData { return { endpoint: this.endpoint, queryParams: this.queryParams, httpHeaders: this.httpHeaders, data: this.data, silenceMode: this.silenceMode, withCredentials: this.withCredentials, needAuth: false }; } }