-
Notifications
You must be signed in to change notification settings - Fork 0
Angular HttpDispatcher
Glenn Dierckx edited this page Aug 3, 2017
·
1 revision
Angular HttpDispatcher:
@Injectable()
export class HttpDispatcher implements IRequestDispatcher {
constructor(private http: HttpClient) { }
execute = <TResponse>(request: HttpRequest<TResponse>): Observable<TResponse> => {
let queryString = new HttpParams();
if (typeof request.queryString === 'object') {
for (const key in request.queryString) {
if (!request.queryString.hasOwnProperty(key) || isNullOrUndefined(request.queryString[key])) {
continue;
};
queryString = queryString.append(key, request.queryString[key]);
}
}
if (request.method === 'get') {
return this.http.get<TResponse>(request.route, { params: queryString });
} else if (request.method === 'delete') {
return this.http.delete<TResponse>(request.route, { params: queryString });
}else if (request.method === 'put') {
return this.http.put<TResponse>(request.route, request.body, { params: queryString });
}else if (request.method === 'post') {
return this.http.post<TResponse>(request.route, request.body, { params: queryString });
} else {
throw new Error(`http verb ${request.method} not mapped`);
}
}
}