You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
193 lines
5.9 KiB
TypeScript
193 lines
5.9 KiB
TypeScript
import { Injectable } from '@angular/core';
|
|
import { CONSTANTS } from '../../utils/app.constants';
|
|
import { HttpClient, HttpErrorResponse, HttpHeaders, HttpParams } from '@angular/common/http';
|
|
import { MiscService } from './misc.service';
|
|
import { TranslateService } from '@ngx-translate/core';
|
|
import { environment } from '../../../environments/environment';
|
|
import { APP_URL_KEY } from '../../utils/enums';
|
|
|
|
@Injectable({
|
|
providedIn: 'root'
|
|
})
|
|
export class HttpService {
|
|
|
|
API_PATH = environment.apiPath.get(APP_URL_KEY.API_PATH)
|
|
|
|
constructor(private translateService: TranslateService,
|
|
private miscService: MiscService, private http: HttpClient
|
|
) { }
|
|
|
|
getRequest(url: string, queryParams?: HttpParams, pathParams?: any, showLoader = true, options?: any) {
|
|
|
|
const custId: any = localStorage.getItem("USERKEY");
|
|
let headers = new HttpHeaders().set("Content-Type", "application/json");
|
|
|
|
const authorization = "Bearer " + localStorage.getItem('token');
|
|
headers = headers.set("Authorization", authorization);
|
|
headers = headers.set("cmpUserId", custId);
|
|
let apiUrl = this.API_PATH + url;
|
|
this.miscService.showLoader();
|
|
apiUrl = this.replaceParamsWithValues(apiUrl, pathParams);
|
|
|
|
try {
|
|
let response = this.http.get(apiUrl, { headers: headers });
|
|
|
|
if (!(response instanceof HttpErrorResponse)) {
|
|
if (showLoader) {
|
|
this.miscService.hideLoader();
|
|
}
|
|
return response;
|
|
}
|
|
else {
|
|
this.miscService.handleError(this.translateService.instant('ServerError'));
|
|
return null;
|
|
}
|
|
}
|
|
catch (e) {
|
|
console.log(e);
|
|
return null;
|
|
}
|
|
}
|
|
|
|
postRequest(url: string, data?: any, pathParams?: any, isMultipart = false, showLoader = true) {
|
|
const custId = localStorage.getItem("USERKEY");
|
|
let headers = new HttpHeaders().set("Content-Type", "application/json");
|
|
let apiUrl = this.API_PATH + url;
|
|
this.miscService.showLoader();
|
|
headers = headers.set("Authorization", "Bearer " + localStorage.getItem('token'));
|
|
if (custId != null) {
|
|
headers = headers.set("cmpUserId", custId);
|
|
}
|
|
apiUrl = this.replaceParamsWithValues(apiUrl, pathParams);
|
|
|
|
let formData = data;
|
|
formData = this.setCommonParams(formData);
|
|
if (isMultipart) {
|
|
formData = this.convertToFormData(data);
|
|
}
|
|
try {
|
|
let response = this.http.post(apiUrl, formData, { headers: headers });
|
|
|
|
if (!(response instanceof HttpErrorResponse)) {
|
|
if (showLoader) {
|
|
this.miscService.hideLoader();
|
|
}
|
|
return response;
|
|
}
|
|
else {
|
|
this.miscService.handleError(this.translateService.instant('ServerError'));
|
|
return null;
|
|
}
|
|
}
|
|
catch (e) {
|
|
console.log(e);
|
|
return null;
|
|
}
|
|
}
|
|
|
|
putRequest(url: string, data: any, pathParams?: any, isMultipart = false, showLoader = true) {
|
|
const custId: any = localStorage.getItem("USERKEY");
|
|
let headers = new HttpHeaders().set("Content-Type", "application/json");
|
|
headers = headers.set("cmpUserId", custId);
|
|
headers = headers.set("Authorization", "Bearer " + localStorage.getItem('token'));
|
|
let apiUrl = this.API_PATH + url;
|
|
apiUrl = this.replaceParamsWithValues(apiUrl, pathParams);
|
|
this.miscService.showLoader();
|
|
let formData = data;
|
|
formData = this.setCommonParams(formData);
|
|
if (isMultipart) {
|
|
formData = this.convertToFormData(data);
|
|
}
|
|
|
|
try {
|
|
let response = this.http.put(apiUrl, formData, { headers: headers });
|
|
|
|
if (!(response instanceof HttpErrorResponse)) {
|
|
if (showLoader) {
|
|
this.miscService.hideLoader();
|
|
}
|
|
return response;
|
|
}
|
|
else {
|
|
this.miscService.handleError(this.translateService.instant('ServerError'));
|
|
return null;
|
|
}
|
|
}
|
|
catch (e) {
|
|
console.log(e);
|
|
return null;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
deleteRequest(url: any, data: any, pathParams?: any, isMultipart = false, showLoader = true) {
|
|
const custId: any = localStorage.getItem("USERKEY");
|
|
let apiUrl = this.API_PATH + url;
|
|
let headers = new HttpHeaders().set("Content-Type", "application/json");
|
|
headers = headers.set("Authorization", "Bearer " + localStorage.getItem('token'));
|
|
headers = headers.set("cmpUserId", custId);
|
|
apiUrl = this.replaceParamsWithValues(apiUrl, pathParams);
|
|
|
|
this.miscService.showLoader();
|
|
let formData = data;
|
|
formData = this.setCommonParams(formData);
|
|
if (isMultipart) {
|
|
formData = this.convertToFormData(data);
|
|
}
|
|
|
|
try {
|
|
let response = this.http.delete(apiUrl, { headers: headers, body: formData });
|
|
|
|
if (!(response instanceof HttpErrorResponse)) {
|
|
if (showLoader) {
|
|
this.miscService.hideLoader();
|
|
}
|
|
return response;
|
|
}
|
|
else {
|
|
this.miscService.handleError(this.translateService.instant('ServerError'));
|
|
return null;
|
|
}
|
|
}
|
|
catch (e) {
|
|
console.log(e);
|
|
return null;
|
|
}
|
|
}
|
|
addQueryParamsToUrl(url: any, queryParams: any) {
|
|
if (queryParams && Object.keys(queryParams).length > 0) {
|
|
let toReturn = url + '?';
|
|
Object.keys(queryParams).forEach((key, index, arr) => {
|
|
toReturn += `${key}=${queryParams[key]}`;
|
|
toReturn += index === arr.length - 1 ? '' : '&';
|
|
});
|
|
return toReturn;
|
|
}
|
|
return url;
|
|
}
|
|
convertToFormData(data: any) {
|
|
const formData = new FormData();
|
|
Object.keys(data).forEach((k) => {
|
|
formData.append(k, data[k]);
|
|
});
|
|
return formData;
|
|
}
|
|
replaceParamsWithValues(url: any, data: any) {
|
|
data = data ?? {};
|
|
data['porOrgacode'] = CONSTANTS.POR_ORGACODE;
|
|
if (data && Object.keys(data).length > 0) {
|
|
Object.keys(data).forEach((k) => {
|
|
url = url.replace(`{${k}}`, data[k]);
|
|
});
|
|
}
|
|
return url;
|
|
}
|
|
|
|
setCommonParams(data: any = {}) {
|
|
data = data ?? {};
|
|
data['porOrgacode'] = CONSTANTS.POR_ORGACODE;
|
|
return data;
|
|
}
|
|
}
|