allerta-vvf/frontend/src/app/_services/api-client.service.ts

82 lines
2.1 KiB
TypeScript
Raw Normal View History

2021-12-22 23:06:58 +01:00
import { Injectable } from '@angular/core';
2022-01-04 00:19:55 +01:00
import { HttpClient, HttpHeaders } from '@angular/common/http';
2021-12-22 23:06:58 +01:00
@Injectable({
providedIn: 'root'
})
export class ApiClientService {
2021-12-24 17:54:17 +01:00
private apiRoot = 'api/';
2021-12-22 23:06:58 +01:00
public requestOptions = {};
2021-12-24 15:21:22 +01:00
constructor(private http: HttpClient) {
this.requestOptions = {
headers: new HttpHeaders({
'Content-Type': 'application/x-www-form-urlencoded'
})
}
}
2021-12-22 23:06:58 +01:00
public setToken(token: string) {
this.requestOptions = {
2021-12-24 15:21:22 +01:00
headers: new HttpHeaders({
'Authorization': `Bearer ${token}`,
'Content-Type': 'application/x-www-form-urlencoded'
})
2021-12-22 23:06:58 +01:00
}
}
public apiEndpoint(endpoint: string): string {
return this.apiRoot + endpoint;
}
2021-12-29 14:23:45 +01:00
public dataToParams(data: any): string {
return Object.keys(data).reduce(function (params, key) {
if(typeof data[key] === 'object') {
data[key] = JSON.stringify(data[key]);
}
params.set(key, data[key]);
return params;
}, new URLSearchParams()).toString();
}
2021-12-22 23:06:58 +01:00
public get(endpoint: string) {
return new Promise<any>((resolve, reject) => {
this.http.get(this.apiEndpoint(endpoint), this.requestOptions).subscribe((data: any) => {
resolve(data);
}, (err) => {
reject(err);
});
});
}
2021-12-24 15:21:22 +01:00
public post(endpoint: string, data: any) {
2021-12-22 23:06:58 +01:00
return new Promise<any>((resolve, reject) => {
2021-12-29 14:23:45 +01:00
this.http.post(this.apiEndpoint(endpoint), this.dataToParams(data), this.requestOptions).subscribe((data: any) => {
2021-12-22 23:06:58 +01:00
resolve(data);
}, (err) => {
reject(err);
});
});
}
2021-12-24 15:21:22 +01:00
public put(endpoint: string, data: any) {
2021-12-22 23:06:58 +01:00
return new Promise<any>((resolve, reject) => {
2021-12-29 14:23:45 +01:00
this.http.put(this.apiEndpoint(endpoint), this.dataToParams(data), this.requestOptions).subscribe((data: any) => {
2021-12-22 23:06:58 +01:00
resolve(data);
}, (err) => {
reject(err);
});
});
}
public delete(endpoint: string) {
return new Promise<any>((resolve, reject) => {
this.http.delete(this.apiEndpoint(endpoint), this.requestOptions).subscribe((data: any) => {
resolve(data);
}, (err) => {
reject(err);
});
});
}
2022-01-04 00:08:13 +01:00
}