2021-12-22 23:06:58 +01:00
|
|
|
import { Injectable } from '@angular/core';
|
2021-12-24 15:21:22 +01:00
|
|
|
import { HttpClient, HttpHeaders, HttpParams } 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;
|
|
|
|
}
|
|
|
|
|
|
|
|
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-29 01:07:37 +01:00
|
|
|
let params = Object.keys(data).reduce(function (params, key) {
|
|
|
|
params.set(key, JSON.stringify(data[key]));
|
|
|
|
return params;
|
|
|
|
}, new URLSearchParams());
|
2021-12-22 23:06:58 +01:00
|
|
|
return new Promise<any>((resolve, reject) => {
|
2021-12-24 15:21:22 +01:00
|
|
|
this.http.post(this.apiEndpoint(endpoint), params.toString(), 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) {
|
|
|
|
let params = new HttpParams({
|
|
|
|
fromObject: data,
|
|
|
|
});
|
2021-12-22 23:06:58 +01:00
|
|
|
return new Promise<any>((resolve, reject) => {
|
2021-12-24 15:21:22 +01:00
|
|
|
this.http.put(this.apiEndpoint(endpoint), params.toString(), 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);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|