dropsolid / unomi-sdk-php
PHP 客户端用于连接 Unomi API
1.0.0
2023-08-02 16:42 UTC
Requires
- php: ^8.0
- ext-json: *
- php-http/discovery: ^1.0
- psr/http-factory-implementation: *
- psr/http-message: ^2.0
- symfony/serializer: ^3.0|^4.0|^5.0|^6.0
Requires (Dev)
- guzzlehttp/guzzle: ^7.0
Suggests
- dropsolid/oauth2-dropsolid-platform: dev-master
- guzzlehttp/guzzle: ^7.0
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
);