Skip to content

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`);
    }
  }
}
Clone this wiki locally