public function getPowerEmbedConfig()

in modules/quanthub_core/src/PowerBIEmbedConfigs.php [236:283]


  public function getPowerEmbedConfig($reportId, $extraDatasets = '') {
    $token = $this->getPowerBIAccessToken();
    $powerbiAPIURL = 'https://api.powerbi.com/v1.0/myorg/groups/' . $this->getWorkspaceID() . '/reports/' . $reportId;

    try {
      $request = $this->httpClient->request(
        'GET',
        $powerbiAPIURL,
        [
          'headers' => [
            'Authorization' => 'Bearer ' . $token,
            'Cache-Control' => 'no-cache',
          ],
          'connect_timeout' => 30,
          'allow_redirects' => [
            'max' => 10,
          ],
        ]
      );
    }
    catch (\Exception $e) {
      $this->loggerFactory->error('getPowerEmbedConfig: ' . $e->getMessage());
      return NULL;
    }

    $embedResponse = json_decode($request->getBody(), TRUE);

    if (isset($embedResponse['error'])) {
      $this->loggerFactory->error('error: ' . $embedResponse['error']['message']);
      return NULL;
    }

    $embedUrl = $embedResponse['embedUrl'];
    $datasetId = $embedResponse['datasetId'];

    if (!empty(trim($extraDatasets))) {
      $extraDatasets = preg_replace('/\s+/', ',', $extraDatasets);
      $datasetIds = preg_split('/[,]+/', $extraDatasets);
    }
    $datasetIds[] = $datasetId;

    $embedToken = $this->getPowerBIEmbedToken($token, $reportId, $datasetIds);

    return [
      'embed_url' => $embedUrl,
      'embed_token' => $embedToken,
    ];
  }