ngx-restangular-jc
Version:
73 lines (61 loc) • 1.99 kB
text/typescript
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));
}
}