dropsolid/unomi-sdk-php

PHP 客户端用于连接 Unomi API

1.0.0 2023-08-02 16:42 UTC

This package is auto-updated.

Last update: 2024-08-31 00:32:17 UTC


README

PHP 客户端用于连接 Unomi API.

安装

该软件包可以通过 composer 获取

$ composer require dropsolid/unomi-sdk-php

基本用法

依赖项

此软件包需要支持 PHP-HTTP 的 HTTP 客户端。如果使用 Guzzle (guzzlehttp/guzzle),已提供默认实现。

使用基本认证设置有偏见的 Guzzle 客户端

use Dropsolid\UnomiSdkPhp\Http\Guzzle\GuzzleApiClientFactory;

$apiClient = GuzzleApiClientFactory::createBasicAuth(
    [
        'timeout' => 3.0,
        'base_uri' => 'localhost',
        'auth' => ['karaf', 'karaf']
    ]
);

使用仓库类进行请求

如果您想使用反序列化模型,可以使用 Unomi 类。这充当了 API 的包装器。为此,您需要安装 Symfony 的序列化组件 (symfony/serializer)。

按照以下方式实例化 Unomi 以使用仓库

<?php

use Dropsolid\UnomiSdkPhp\Unomi;

$unomi = Unomi::withDefaultSerializer($apiClient);

// Performing a segment.list request with offset
$offset = [
    'offset' => 0,
];

// Get all itemIds & conditions from all existing segments
$segments = $unomi->segments()->listSegments($offset);
foreach ($segments as $segmentMetadata) {
    $id = $segmentMetadata->getId();
    // Performing a segment.info request
    $segment = $unomi->segments()->getSegment($id);
    var_dump($segment->getItemId());
    var_dump($segment->getCondition());
}

可以使用仓库类从 Unomi 类进行的当前请求

    $unomi->segments()->getSegments($id); // Get segemnt as per id
    $unomi->segments()->listSegments(); // List all available segments

    $unomi->rules()->listRules(); // List all available rules
    $unomi->rules->listRulesStatistics(); // List statistics about the rules

    $unomi->profile()->getProfile($id); // Get profile as per id
    $unomi->profile()->getProfileSegments($id); // Get profile segments as per id
    $unomi->profile()->listProfile(); // List all available profiles
    $unomi->profile()->listProperties(); // List properties of profiles

    $unomi->events()->listEventsUsingEventType($eventType); // Get events as per event type
    $unomi->events()->listEventsUsingProfileId($profileId); // Get events as per profile id

    $unomi->definitions()->listActions(); // Get all available action types
    $unomi->definitions()->listConditions(); // Get all available conditions types
    $unomi->definitions()->listValues(); // Get all available values types

认证

Unomi API 可能有一个带有 OAuth2.0 的中间件,或者使用简单的基本认证。API 允许使用两者,对于 OAuth2 实现我们依赖于 PHP league 的 OAuth2 客户端。这针对与第三方 Dropsolid 平台 OAuth 2.0 提供商 的使用进行了优化。

基本认证示例

<?php

use Dropsolid\UnomiSdkPhp\Http\Guzzle\GuzzleApiClientFactory;
use Dropsolid\UnomiSdkPhp\Unomi;

$apiClient = GuzzleApiClientFactory::createBasicAuth(
    [
        'timeout' => 3.0,
        'base_uri' => 'localhost',
        'auth' => ['karaf', 'karaf']
    ]
);

$unomi = Unomi::withDefaultSerializer($apiClient);

使用 Dropsolid 平台进行 OAuth 示例

<?php

use Dropsolid\UnomiSdkPhp\Http\Guzzle\GuzzleApiClientFactory;
use Dropsolid\OAuth2\Client\Provider\DropsolidPlatform;

$provider = new DropsolidPlatform(
    [
        'clientId' => 'your-client-id',
        'clientSecret' => 'your-client-secret',
        'urlAuthorize'            => 'https://admin.platform.dropsolid.com/oauth/authorize',
        'urlAccessToken'          => 'https://admin.platform.dropsolid.com/oauth/token',
        'urlResourceOwnerDetails' => 'https://admin.platform.dropsolid.com/oauth/user.info',
        'scopes' => 'cdp_admin',
    ]
);
$accessToken = $provider->getAccessToken('client_credentials');

$apiClient = GuzzleApiClientFactory::createOauth(
    $provider,
    $accessToken,
    ['timeout' => 3.0, 'base_uri' => 'https://unomi.poc.qa.dropsolid-sites.com']
);

使用 PSR 兼容的 HttpClients 创建自定义 API 客户端


<?php

use Dropsolid\UnomiSdkPhp\Http\ApiClient\ApiClient;
use GuzzleHttp\Client as GuzzleHttpClient;

$config = [ // Optional extra configuration.
  'timeout' => 3.0, 
  'base_uri' => 'https://unomi.poc.qa.dropsolid-sites.com'
];

// Create a PHP-HTTP compatible client.
$httpClient = new GuzzleHttpClient($config);

// Alternatively, you can use any other PHP-HTTP compatible client of your
// choosing to instantiate the API client.
$apiClient = new ApiClient(
    $provider,
    $httpClient,
    null
);