You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

42 lines
1.2 KiB

import { isHasticServerResponse, isSupportedServerVersion, SUPPORTED_SERVER_VERSION } from '../utils';
import { BackendSrv } from 'grafana/app/core/services/backend_srv';
export default class HasticAPI {
private url: string;
constructor(instanceSettings: any, private backendSrv: BackendSrv) {
this.url = instanceSettings.url;
}
async get(url: string, params?: any) {
return this._query('GET', url, params);
}
private async _query(method: string, url: string, data?: any) {
method = method.toUpperCase();
let options: any = {
method,
url: this.url + url
};
if(method === 'GET' || method === 'DELETE') {
options.params = data;
} else {
options.data = data;
}
const response = await this.backendSrv.datasourceRequest(options);
const responseData = response.data;
if(!isHasticServerResponse(responseData)) {
throw new Error(`Something is working at "${url}" but it's not Hastic Server`);
}
if(!isSupportedServerVersion(responseData)) {
throw new Error(`Hastic Server at "${url}" has unsupported version (got ${responseData.packageVersion}, should be ${SUPPORTED_SERVER_VERSION})`);
}
return responseData;
}
}