utg/epg-client

EPG API 的 HTTP 客户端

2.3+api.0.10 2020-11-09 09:56 UTC

README

安装

$ composer require utg/epg-client ^2.0

然后您需要在项目中实现 \EpgClient\ConfigInterface。这将用于客户端配置变量的持久化存储。

获取特定账户的实体

通过只读 API 密钥初始化客户端

/** @var \EpgClient\ConfigInterface $config */
$config = new YourConfig();
$config->set($config::API_URL, 'https://<api_url>');
$config->set($config::API_KEY, '<your_api_key>');

$client = new EpgClient\Client($config);
$client->setAuthType(EpgClient\Client::AUTH_TYPE_API_KEY);
$client->setAcceptLanguage(EpgClient\Client::LANG_UK); #optional

频道

/** @var EpgClient\Context\AccountChannel[] $channels */
$channels = $client->getAccountChannelResource()
    ->get()
    ->exec()
    ->getArrayResult();

/** @var EpgClient\Context\AccountChannel $channel */
$channel = $client->getAccountChannelResource()
    ->get($channelId)
    ->exec()
    ->getSingleResult();

类别

/** @var EpgClient\Context\AccountCategory[] $categories */
$categories = $client->getAccountCategoryResource()
    ->get()
    ->exec()
    ->getArrayResult();

/** @var EpgClient\Context\AccountCategory $categorie */
$category = $client->getAccountCategoryResource()
    ->get($categoryId)
    ->exec()
    ->getSingleResult();

类型

/** @var EpgClient\Context\AccountGenre[] $genres */
$genres = $client->getAccountGenreResource()
    ->get()
    ->exec()
    ->getArrayResult();

/** @var EpgClient\Context\AccountGenre $genre */
$genre = $client->getAccountGenreResource()
    ->get($genreId)
    ->exec()
    ->getSingleResult();

节目

/**
 * You can get program collection by instance of Channel
 *
 * @var EpgClient\Context\Channel $channel 
 * @var EpgClient\Context\AccountProgram[] $programs 
 */
$programs = $client->getAccountProgramResource()
    ->getByChannel($channel)
    ->setPeriod(AccountProgramResource::PERIOD_NOW)
    ->exec()
    ->getArrayResult();

/**
 * Or you cat get program collection by channel id
 *
 * @var string $channelId 
 * @var EpgClient\Context\AccountProgram[] $programs 
 */
$programs = $client->getAccountProgramResource()
    ->getByChannelId($channelId)
    ->setPeriod(AccountProgramResource::PERIOD_TODAY)
    ->exec()
    ->getArrayResult();

/**
 * Search program by title
 */
$programs = $client->getAccountProgramResource()
   ->getByTitle('Program title')
   ->setPeriod(AccountProgramResource::PERIOD_MONTH)
   ->limit(10)
   ->exec()
   ->getArrayResult();

/**
 * @var string $programId 
 * @var EpgClient\Context\AccountProgram $program 
 */
$program = $client->getAccountProgramResource()
   ->get($programId)
   ->exec()
   ->getSingleResult();

管理实体

通过登录/密码初始化客户端

/** @var \EpgClient\ConfigInterface $config */
$config = new YourConfig();

$config->set($config::API_URL, 'https://<api_url>');
$config->set($config::API_ADMIN, '<your_admin_user>');
$config->set($config::API_PASSWORD, '<your_admin_password>');

$client = new EpgClient\Client($config);

# Optional client settings
$client->setAcceptLanguage(EpgClient\Client::LANG_UK);

频道(完整示例)

/** @var EpgClient\Context\AccountChannel[] $channels */
$channels = $client->getAccountResource()
    ->getChannels()
    ->disablePagination()                                               # optional: pagination disable
    ->withGroup(EpgClient\Resource\ChannelResource::GROUP_TRANSLATIONS) # optional: translations, images, ...
    ->setLanguage(EpgClient\Client::LANG_UK)                            # optional: set language only for one request
    ->exec()
    ->getArrayResult();

类别(简短示例)

/** @var EpgClient\Context\AccountCategory[] $categories */
$categories = $client->getAccountResource()
    ->getCategories()
    ->exec()
    ->getArrayResult();

类型

/** @var EpgClient\Context\AccountGenre[] $genres */
$genres = $client->getAccountResource()
    ->getGenres()
    ->exec()
    ->getArrayResult();

稍后推出,另一个示例请查看 tests/Integration