joebocock/chess-api-php

一个简单的API SDK,用于与公共chess.com API交互。

v0.6.3 2023-02-06 21:33 UTC

This package is auto-updated.

Last update: 2024-09-18 06:52:07 UTC


README

chess.com logo

Chess.com PHP API SDK

一个简单的PHP SDK,用于与公共chess.com API交互。

GitHub Workflow Status GitHub issues GitHub commit activity GitHub code size in bytes


警告:此包仍在积极开发中,处于非常初级的阶段。

目录


介绍

此PHP Composer包提供了一个简单的SDK,用于与Chess.com的“发布数据”API交互。他们的API提供了所有Chess.com公开的数据,无需通过他们的服务进行身份验证。由于此包仍在开发中,并非所有端点都已实现,但最终将包括...

  • 玩家数据
  • 俱乐部
  • 锦标赛
  • 团队比赛
  • 国家
  • 每日谜题
  • 直播
  • 排行榜

此包无需配置即可直接使用。但是,如果您愿意,可以提供一个配置好的HTTP客户端,前提是它遵循PSR-18。


用法

此包尚未完成,但我正在积极开发中。我正在逐步处理各种端点。要开始,请使用Composer安装包。


composer require joebocock/chess-api-php

通用用法简单,您可以在短时间内开始运行。


use JoeBocock\ChessApi\Chess;

$client = new Chess();

/** @var JoeBocock\ChessApi\Entities\PlayerProfile */
$playerProfile = $client->playerProfile('gothamchess');

echo $playerProfile->name;
// 'Levy Rozman'

在内部,将使用Guzzle来发送请求 - 但如果您有自己的PSR-18兼容的HTTP客户端,您可以在构造Chess类时提供它。这在您需要事先配置客户端时非常棒。


use GuzzleHttp\Client;
use JoeBocock\ChessApi\Chess;

$client = new Chess(
    new Client([
        // configuration...
    ])
);

对于所有端点,客户端提供描述性的方法来轻松处理请求构建和随后的响应填充。这些方法还提供了一些基本输入验证,以帮助您在发送请求之前发现问题。

然而,有时您可能希望自行处理请求构建。Chess客户端允许您这样做。


use JoeBocock\ChessApi\Chess;
use JoeBocock\ChessApi\Requests\PlayerProfileRequest;

$client = new Chess();

$request = new PlayerProfileRequest();

$request->setUsername('lud-skywalker');

$response = $client->send($request);

虽然我们希望使用过程中不会出错,但有时Chess.com可能会返回4XX或甚至5XX。在这种情况下,我们的Chess类会抛出三个不同的异常,以帮助确定问题。

无效参数将产生一个InvalidArgumentException,正如预期的那样。每当HTTP客户端出现问题时,都会发生ChessRequestException。最后,当返回的响应无法正确填充到实体时,将发生ChessResponseException。


use JoeBocock\ChessApi\Chess;
use JoeBocock\ChessApi\Exceptions\ChessRequestException;
use JoeBocock\ChessApi\Exceptions\ChessResponseException;

$client = new Chess();

try {
    $playerProfile = $client->playerProfile('gothamchess');
} catch (ChessRequestException|ChessResponseException|\InvalidArgumentException $e) {
    // handle...
}

开发

作为只是一个包,它没有本地Web服务器的需求。开发由一个非常简单的Docker容器提供动力,用于运行所有命令。

要开始,首先克隆存储库。为了方便命令处理,提供了一个Makefile...


# Build the container
make build

# Install Composer Dependencies
make install

# Run the test suite
make test

# Run static analysis
make stan

# Format the codebase
make format

# Lint the codebase
make lint

贡献

由于此包仍在开发中,尚未达到v1版本,我还没有编写任何贡献指南。但不要让这一点阻止您!请随意分支代码库,了解风格并提交PR。