alexkart/looker-php-sdk-advanced

Advanced PHP SDK for Looker API

0.2.0 2023-06-02 11:06 UTC

This package is auto-updated.

Last update: 2024-05-01 00:17:23 UTC


README

API version: 4.0

This package is an advanced version of generated Looker PHP SDK. It adds additional functionality and simplifies the work with the Looker API. You can interact with the whole API that Looker provides with just one Looker object and don't worry about anything else. Currently, it provides the following additional functionality:

  • Provides a single wrapper object for various SDK classes
  • Automates authentication process
  • Automatically renews expired access tokens and stores them into the persistent storage
  • ... more will be added later

Installation & Usage

Composer

composer require alexkart/looker-php-sdk-advanced

Manual Installation

Download the files and include autoload.php:

require_once('/path/to/looker-php-sdk-advanced/vendor/autoload.php');

Getting Started

See usage examples in the examples folder. These examples use Looker credentials from the .env file, you can create it by copying .env.example file.

Basic example

In order to start interacting with the API you just need to instantiate Looker object and provide a config with the Looker host and valid credentials (API client id and API client secret):

$config = new \App\CustomLookerConfiguration(
    'https://looker-host:19999/api/4.0',
    'client-id',
    'client-secret',
);
$looker = new \Alexkart\Looker\Looker($config);

Then you can call any API endpoint like this:

$looks = $looker->lookApi->searchLooks(null, 'test');
$dashboards = $looker->dashboardApi->allDashboards(['title']);
$folders = $looker->folderApi->allFolders();

The complete working example you can find here basic.php

This is the simplest way to interact with the API, it will request a new access token each time the Looker object is instantiated. Alternatively you can provide an existing access token and it will be used to authenticate requests to the API.

$config = new \Alexkart\Looker\LookerConfiguration(
    'https://looker-host:19999/api/4.0',
    '',
    '',
    'access-token'
);
$looker = new \Alexkart\Looker\Looker($config);

You can provide both access token and API credentials:

$config = new \Alexkart\Looker\LookerConfiguration(
    'https://looker-host:19999/api/4.0',
    'client-id',
    'client-secret',
    'optional-access-token'
);
$looker = new \Alexkart\Looker\Looker($config);

The access token you provided will be used until it is valid and when it expires a new token will be requested automatically. You can check if the token has been renewed like this:

if ($looker->getLookerConfig()->isAccessTokenRenewed()) {
    $token = $looker->getLookerConfig()->getAccessToken();
}

If you want the access token to be stored into the persistent storage (database, cache, file, etc.) automatically when it is renewed you can extend LookerConfiguration class and provide implementation for the storeAccessToken() method and use this class to instantiate Looker object:

class CustomLookerConfiguration extends \Alexkart\Looker\LookerConfiguration {
    public function storeAccessToken($accessToken): void {
        file_put_contents(__DIR__ . DIRECTORY_SEPARATOR . 'looker_access_token.txt', $accessToken);
    }
}

This method will be called when new access token is requested from the API. Additionally, you can implement loadAccessToken() method and it will be used to get the access token from your storage. You will just need to provide API credentials and it will handle the work with access tokens for you.

class CustomLookerConfiguration extends \Alexkart\Looker\LookerConfiguration {
    public function storeAccessToken($accessToken): void {
        file_put_contents(__DIR__ . DIRECTORY_SEPARATOR . 'looker_access_token.txt', $accessToken);
    }
    public function loadAccessToken(): string {
        return (string)file_get_contents(__DIR__ . DIRECTORY_SEPARATOR . 'looker_access_token.txt');
    }
}

The complete working example you can see here custom_configuration.php