'use strict';

Object.defineProperty(exports, '__esModule', { value: true });

var logger = require('../utils/logger.js');
var restClient = require('./restClient.js');

class DashboardClient {
    restClient;
    constructor(config) {
        this.restClient = new restClient.RestClient('Dashboard API Client', config);
    }
    getDefinition(token, dashboardId, dpdId, definitionsPath, queryData) {
        const query = {
            ...queryData,
            dataProductDefinitionsPath: definitionsPath,
        };
        this.logInfo('Get definition:', { dpdId, dashboardId, ...query });
        return this.restClient
            .get({
            path: `/definitions/${dpdId}/dashboards/${dashboardId}`,
            query,
            token,
        })
            .then((response) => response);
    }
    requestAsyncDashboard(token, reportId, dashboardId, query) {
        this.logInfo('Request dashboard:', { reportId, dashboardId });
        return this.restClient
            .get({
            path: `/async/dashboards/${reportId}/${dashboardId}`,
            token,
            query,
        })
            .then((response) => response);
    }
    getAsyncDashboard(token, reportId, dashboardId, tableId, query) {
        this.logInfo('Get dashboard:', { reportId, dashboardId, tableId });
        return this.restClient
            .get({
            path: `/reports/${reportId}/dashboards/${dashboardId}/tables/${tableId}/result`,
            token,
            query,
        })
            .then((response) => response);
    }
    getAsyncStatus(token, reportId, dashboardId, executionId, tableId, dataProductDefinitionsPath) {
        this.logInfo('Get status:', { reportId, dashboardId, executionId, tableId });
        return this.restClient
            .get({
            path: `/reports/${reportId}/dashboards/${dashboardId}/statements/${executionId}/status`,
            token,
            query: {
                dataProductDefinitionsPath,
                tableId,
            },
        })
            .then((response) => response);
    }
    cancelAsyncRequest(token, reportId, dashboardId, executionId, dataProductDefinitionsPath) {
        this.logInfo('Cancel request:', { reportId, dashboardId, executionId });
        return this.restClient
            .delete({
            path: `/reports/${reportId}/dashboards/${dashboardId}/statements/${executionId}`,
            token,
            query: {
                dataProductDefinitionsPath,
            },
        })
            .then((response) => response);
    }
    getSyncDashboard(token, reportId, dashboardId, query) {
        this.logInfo('Get dashboard:', { reportId, dashboardId });
        return this.restClient
            .get({
            path: `/reports/${reportId}/dashboards/${dashboardId}`,
            token,
            query,
        })
            .then((response) => response);
    }
    logInfo(title, args) {
        logger.default.info(`Dashboard client: ${title}:`);
        if (args && Object.keys(args).length)
            logger.default.info(JSON.stringify(args, null, 2));
    }
}

exports.DashboardClient = DashboardClient;
exports.default = DashboardClient;
//# sourceMappingURL=dashboardClient.js.map
