islem-kms / riot-api

Riot League of Legends & DataDragon API 的 PHP7 封装器(参考 Daniel Dolejska 的代码,仅作为分支)

1.0 2020-08-27 10:51 UTC

This package is auto-updated.

Last update: 2024-09-22 00:07:56 UTC


README

版本 v4.0.1

Build Status Test Coverage Packagist Packagist Support Project

目录

  1. 可用版本
  2. 简介
  3. 下载
  4. League of Legends API
    1. 资源版本
    2. 初始化库
    3. 使用示例
    4. 缓存提供者
    5. 速率限制
    6. 调用缓存
    7. 异步请求
    8. StaticData 端点
    9. StaticData 链接
    10. 扩展
    11. 回调函数
    12. CLI 支持
  5. DataDragon API

可用版本

简介

欢迎来到 RiotAPI PHP7 库仓库!该库的目的是为可能需要的人提供一个易于使用的库。这是一个完全面向对象的 API 封装器,用于 League of Legends 的 API。还包括一个小的 DataDragon API 封装器。

以下是一些实用的功能

  • 速率限制缓存 和超过限制的预防 - 完全自动。
  • 调用缓存 - 使库能够在给定时间段内重复使用已获取的数据 - 节省时间和密钥的速率限制。
  • StaticData 端点 - 您可以像从未弃用一样处理 StaticData 端点。
  • StaticData 链接 - 库可以自动将相关 StaticData 直接链接到返回的对象中。
  • 自定义回调 - 您可以设置自定义函数,在请求处理之前或之后调用。
  • 对象扩展 - 您可以向获取的 API 对象实现自己的方法,并在以后的工作中使用它们来简化工作。
  • CLI 支持 - 在控制台中使用此库非常简单。
  • 中间模式 支持 - 无论您的密钥是否处于 中间模式,您都可以使用该库(这意味着当您跳转到生产环境时,您不需要做任何更改)。
  • 对象无处不在 - API 调用返回特殊对象中的数据,这允许现代 IDE 提示现有属性和方法。

API method hint and documentation API object hint (LeagueEntry) API object hint (LeagueEntry.miniSeries)

请主要参考 wiki 页面。此文件仅包含对库功能的简要介绍。

下载

下载并使用此库的最简单方法是使用 Composer。如果您还没有使用 Composer,您应该立即开始使用它!

在您的机器上安装 Composer 后,只需运行 composer require "dolejska-daniel/riot-api:^4" 命令即可将库准备好使用!

有关下载和初始设置的更多信息,请参阅 wiki 页面

League of Legends API

资源版本

以下您可以找到已实现的API资源及其当前实现的版本。有关端点和资源的更多信息,请参阅维基页面

初始化库

如何开始?

//  Include all required files (installation via Composer is required)
require_once __DIR__  . "/vendor/autoload.php";

use RiotAPI\LeagueAPI\LeagueAPI;
use RiotAPI\LeagueAPI\Definitions\Region;

//  Initialize the library
$api = new LeagueAPI([
	//  Your API key, you can get one at https://developer.riotgames.com/
	LeagueAPI::SET_KEY    => 'YOUR_RIOT_API_KEY',
	//  Target region (you can change it during lifetime of the library instance)
	LeagueAPI::SET_REGION => Region::EUROPE_EAST,
]);

//  And now you are ready to rock!
$ch = $api->getStaticChampion(61); // Orianna <3

在初始化库时,您可以设置很多其他设置 - 主要是为了启用特殊功能或修改库的默认行为。请参阅维基页面以获取库设置的全列表。

使用示例

使用LeagueAPI非常简单,只需看看如何根据召唤师名称获取召唤师信息。

//  ...initialization...

//  this fetches the summoner data and returns SummonerDto object
$summoner = $api->getSummonerByName('I am TheKronnY');

echo $summoner->id;             //  KnNZNuEVZ5rZry3I...
echo $summoner->puuid;          //  rNmb6Rq8CQUqOHzM...
echo $summoner->name;           //  I am TheKronnY
echo $summoner->summonerLevel;  //  69

print_r($summoner->getData());  //  Or array of all the data
/* Array
 * (
 *     [id] => KnNZNuEVZ5rZry3IyWwYSVuikRe0y3qTWSkr1wxcmV5CLJ8
 *     [accountId] => tGSPHbasiCOgRM_MuovMKfXw7oh6pfXmGiPDnXcxJDohrQ
 *     [puuid] => rNmb6Rq8CQUqOHzMsFihMCUy4Pd201vDaRW9djAoJ9se7myXrDprvng9neCanq7yGNmz7B3Wri4Elw
 *     [name] => I am TheKronnY
 *     [profileIconId] => 3180
 *     [revisionDate] => 1543438015000
 *     [summonerLevel] => 69
 * )
 */

..或如何获取静态英雄数据

//  ...initialization...

//  this fetches the champion data and returns StaticChampionDto object
$champion = $api->getStaticChampion(61);

echo $champion->name;  //  Orianna
echo $champion->title; //  the Lady of Clockwork

print_r($champion->getData());  //  Or array of all the data
/* Array
 * (
 *    [id] => 61
 *    [name] => "Orianna"
 *    [key] => "Orianna"
 *    [title] => "the Lady of Clockwork"
 * )
 */

更多LeagueAPI的使用示例可以在此处找到。

缓存提供者

缓存提供者负责在库的实例中保持速率限制调用缓存静态数据,以便于重用。当使用上述任何功能时,此功能将自动启用。

使用此功能时,可以将LeagueAPI::SET_CACHE_PROVIDER设置为任何兼容PSR-6标准的类,例如实现Psr\Cache\CacheItemPoolInterface接口的类。通过使用LeagueAPI::SET_CACHE_PROVIDER_PARAMSLeagueAPI::SET_DD_CACHE_PROVIDER_PARAMS选项,您可以将任何数据传递给缓存提供者类。

有关缓存提供者的更多信息,请参阅维基页面

速率限制

此智能功能可以轻松防止超过每个键的调用限制和方法限制。要启用此功能,您必须将LeagueAPI::SET_CACHE_RATELIMIT设置为true。其他一切都是完全自动的,因此您只需启用此功能。

有关速率限制的更多信息,请参阅维基页面

调用缓存

此功能可以通过暂时保存从API获取的数据并将其用作结果数据来防止在短时间内对API进行不必要的调用。要启用此功能,您必须将LeagueAPI::SET_CACHE_CALLS设置为true。您还应提供LeagueAPI::SET_CACHE_CALLS_LENGTH选项来指定缓存数据的生存期,否则将使用默认时间间隔60秒

有关API调用缓存的更多信息,请参阅维基页面

异步请求

此功能允许通过Guzzle进行请求分组和异步发送。请求发送并接收到响应后,将调用用户提供的回调函数。

有关异步请求的更多信息,请参阅维基页面

StaticData 端点

这些端点为您提供了将静态数据转换为对象实例的简单方法,并轻松与之交互。它们也在许多DataDragonAPI函数(显示图片)中得到支持。

有关静态数据端点的更多信息,请参阅维基页面

StaticData 链接

此功能允许您自动链接与请求相关的静态数据,所有数据都通过DataDragonAPI管理。所有静态数据都将本地缓存,这使得在初始请求之后此操作非常快。此外,通过DataDragonAPI发出的任何请求都不计入您的速率限制。

有关静态数据链接的更多信息,请参阅维基页面

扩展

使用扩展功能对于ApiObject来说是非常有用的工具,它允许你在ApiObject中实现自己的方法和逻辑。通过在初始化库时使用设置选项LeagueAPI::SET_EXTENSIONS来启用扩展。

有关API对象扩展的更多信息,请参阅维基页面

回调函数

允许你在实际API请求发送前后提供自定义函数。

在回调函数中,有取消即将到来请求的能力 - 当任何回调函数返回false时,会抛出异常Exceptions\RequestException,并取消请求。

有关回调函数的更多信息,请参阅维基页面

CLI 支持

你还可以在命令行环境中使用这个库。

root@localhost:~/riot-api/src/LeagueAPICLI# leagueapicli summoner:get-by-name "I am TheKronnY" --pretty --config ~/config.json
{
    "id": "Y0ac04pquunxrtvEtxWsG8hX0EBYSFfVuuL6JsR5AaWOoLo",
    "accountId": "UIctwb-75CS_vCHe494r-cDO9zlvGzu4JVdWIb_ox7xqmg",
    "puuid": "XYPInPFGOn1mqOmkzZEtf9jzNCUTK5KviHWxNfNnmWZ_4EovMV-q02qY5rXtRGWl1Nb_oK-2D1m4Bg",
    "name": "I am TheKronnY",
    "profileIconId": 540,
    "revisionDate": 1566761498000,
    "summonerLevel": 111
}

有关CLI支持的更多信息,请参阅维基页面。更多LeagueAPICLI的使用示例可以在这里找到。

DataDragon API

处理静态图像有多容易?例如,获取奥莉安娜的加载屏幕艺术效果?

源代码:

echo DataDragonAPI::getChampionLoading('Orianna');
echo DataDragonAPI::getChampionLoading('Orianna', 7);

输出:

<img alt="Orianna" class="dd-icon dd-loading" src="http://ddragon.leagueoflegends.com/cdn/img/champion/loading/Orianna_0.jpg">
<img alt="Orianna" class="dd-icon dd-loading" src="http://ddragon.leagueoflegends.com/cdn/img/champion/loading/Orianna_7.jpg">

渲染:

Orianna Dark Star Orianna

...有些怀旧的感觉?

源代码:

DataDragonAPI::iniByVersion('0.151.2');
echo DataDragonAPI::getItemIcon(3132);
echo DataDragonAPI::getItemIcon(3126);
echo DataDragonAPI::getItemIcon(3138);

输出:

<img alt="3132" class="dd-icon dd-item" src="http://ddragon.leagueoflegends.com/cdn/0.151.2/img/item/3132.png">
<img alt="3126" class="dd-icon dd-item" src="http://ddragon.leagueoflegends.com/cdn/0.151.2/img/item/3126.png">
<img alt="3138" class="dd-icon dd-item" src="http://ddragon.leagueoflegends.com/cdn/0.151.2/img/item/3138.png">

渲染:

Heart of Gold Madred's Bloodrazor Leviathan

...或者根据API对象显示英雄及其技能的图标?

源代码:

// ...

$orianna = $api->getStaticChampion(61, true);
echo DataDragonAPI::getChampionSplashO($orianna);

foreach($orianna->spells as $spell)
    echo DataDragonAPI::getChampionSpellIconO($spell);

输出:

<img alt="Orianna" class="dd-icon dd-icon-champ" src="https://ddragon.leagueoflegends.com/cdn/8.24.1/img/champion/Orianna.png">

<img alt="OrianaIzunaCommand" class="dd-icon dd-spell" src="http://ddragon.leagueoflegends.com/cdn/8.24.1/img/spell/OrianaIzunaCommand.png">
<img alt="OrianaDissonanceCommand" class="dd-icon dd-spell" src="http://ddragon.leagueoflegends.com/cdn/8.24.1/img/spell/OrianaDissonanceCommand.png">
<img alt="OrianaRedactCommand" class="dd-icon dd-spell" src="http://ddragon.leagueoflegends.com/cdn/8.24.1/img/spell/OrianaRedactCommand.png">
<img alt="OrianaDetonateCommand" class="dd-icon dd-spell" src="http://ddragon.leagueoflegends.com/cdn/8.24.1/img/spell/OrianaDetonateCommand.png">

渲染:

Orianna OrianaIzunaCommand OrianaDissonanceCommand OrianaRedactCommand OrianaDetonateCommand

更多内容请参阅维基页面。更多DataDragonAPI的使用示例可以在这里找到。