redash-loader
Version:
`redash-loader` is command line tool make it possible to fetch redash content(query and dashboard) from your Redash. <br>
54 lines • 1.99 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.RedashClient = void 0;
const axios_1 = __importDefault(require("axios"));
class RedashClient {
constructor(apiKey, url) {
this.apiKey = apiKey;
this.url = url;
this.fetchQueries = async (page = 1, pageSize = 25) => {
try {
const response = await axios_1.default.get(`${this.url}/api/queries?api_key=${this.apiKey}&page=${page}&page_size=${pageSize}`);
return response.data;
}
catch (e) {
console.log(e);
return;
}
};
this.fetchDashboards = async (page = 1, pageSize = 25) => {
try {
const response = await axios_1.default.get(`${this.url}/api/dashboards?api_key=${this.apiKey}&page=${page}&page_size=${pageSize}`);
return response.data;
}
catch (e) {
console.log(e);
return;
}
};
this.paginate = async (resource, page = 1, pageSize = 25) => {
try {
const response = await resource(page, pageSize);
if (!response) {
throw "fetch error";
}
if (response.page * response.page_size >= response.count) {
return response.results;
}
const nextPageResponse = await this.paginate(resource, (page = page + 1), pageSize);
return [...response.results, ...nextPageResponse];
}
catch (e) {
console.log(e);
return [];
}
};
this.apiKey = apiKey;
this.url = url;
}
}
exports.RedashClient = RedashClient;
//# sourceMappingURL=client.js.map