UNPKG

ngx-restangular-jc

Version:
73 lines (61 loc) 1.99 kB
import { HttpRequest, HttpHeaders, HttpParams } from '@angular/common/http'; import { assign } from 'core-js/fn/object'; export class RestangularHelper { static createRequest(options) { const requestQueryParams = RestangularHelper.createRequestQueryParams(options.params); const requestHeaders = RestangularHelper.createRequestHeaders(options.headers); const methodName = options.method.toUpperCase(); const withCredentials = options.withCredentials || false; let request = new HttpRequest( methodName, options.url, options.data, { headers: requestHeaders, params: requestQueryParams, responseType: options.responseType, withCredentials } ); if (['GET', 'DELETE', 'HEAD', 'JSONP', 'OPTIONS'].indexOf(methodName) >= 0) { request = new HttpRequest( methodName, options.url, { headers: requestHeaders, params: requestQueryParams, responseType: options.responseType, withCredentials } ); } return request; } static createRequestQueryParams(queryParams) { const requestQueryParams = assign({}, queryParams); let search: HttpParams = new HttpParams(); for (const key in requestQueryParams) { let value: any = requestQueryParams[key]; if (Array.isArray(value)) { value.forEach(function (val) { search = search.append(key, val); }); } else { if (typeof value === 'object') { value = JSON.stringify(value); } search = search.append(key, value); } } return search; } static createRequestHeaders(headers) { for (const key in headers) { const value: any = headers[key]; if (typeof value === 'undefined') { delete headers[key]; } } return new HttpHeaders(assign({}, headers)); } }