pwned / pwnedclient
用于访问pwned.no API并处理比赛的应用程序。
Requires
- php: >=5.3.3
Requires (Dev)
- phpunit/phpunit: ~3.7
This package is not auto-updated.
Last update: 2024-09-28 15:23:42 UTC
README
用于pwned.no API的PHP客户端
要求
该客户端使用curl php模块进行所有请求。PSR-0兼容的自动加载器应该能够自动加载客户端。
安装
只需将Pwned/Client.php放入自动加载器的基路径之一,然后观看世界焕发生机。
在其当前形式中,您也可以简单地对此文件进行require,因为它没有任何外部依赖项。
使用方法
请参阅ClientTest.php中的单元测试以获取使用库的有用示例。
大多数获取或更新信息的方法都将'type'作为第一个参数。此参数表示我们引用的比赛类型,在下面的示例中,它被设置为'tournament'以避免混淆。将来,API可能支持其他类型的比赛,并且将需要根据您引用的比赛类型在此处使用不同的值。您可以使用从getCompetition()返回的数组中的'type'键来识别代码中应使用的值。
创建Pwned客户端实例
$pwned = new Pwned_Client('<url>', '<publicKey>', '<privateKey>');
创建一个锦标赛
$competitionDefinition = array( 'name' => 'Test Tournament #123', 'gameId' => 3, 'playersOnTeam' => 5, 'template' => 'singleelim16', 'countryId' => 1, ); $competition = $pwned->createTournament($competitionDefinition);
锦标赛将以16支队伍、单淘汰赛的形式创建。
所有比赛所需的关键键
- 'name' => 字符串: 锦标赛的名称
- 'gameId' => 整数: 锦标赛所使用的游戏ID。可以通过调用getGames()检索可用游戏的列表。
- 'playersOnTeam' => 整数: 锦标赛中每队的球员人数(使用1表示玩家对玩家锦标赛)。
- 'countryId' => 整数: 锦标赛所在国家/分配给的国家。通过调用getCountries()检索可能的国家的列表。
锦标赛所需的关键键
- 'template' => 字符串: 用于括号设置的模板 - 要创建的比赛类型。通过调用getTournamentTemplates()检索可能的模板列表。
可选键
- 'language' => 字符串: 在锦标赛中显示的默认语言(当前有效的值是norwegian和english)。
- 'description' => 字符串: 锦标赛的描述;支持子集HTML,并在提交后被净化。
- 'groupCount' => 整数: 初赛阶段的组数。groupCount和groupStage都必须存在才能产生效果。
- 'groupSize' => 整数: 初赛阶段每组的规模。groupCount和groupStage都必须存在才能产生效果。
- 'quickProgress' => 布尔值: 锦标赛是否应使用“快速进度”格式,其中在输入结果后立即将队伍移动到下一轮。
检索关于比赛的信息
$info = $pwned->getCompetition('tournament', <competitionId>);
这将返回一个关联数组,包含由tournamentId(整数)表示的锦标赛信息。
为比赛注册一支或多支队伍
$signups = array( array( 'name' => 'SignupTestVariation One', 'hasServer' => false, 'isAccepted' => true, 'onWaitingList' => true, 'contact' => 'ContactVariation One', 'remoteId' => '1234567', ), array( 'name' => 'SignupTestVariation Two', 'hasServer' => true, 'isAccepted' => false, 'onWaitingList' => false, 'contact' => 'ContactVariation Two', 'remoteId' => '89101113', ), ); $pwned->addSignups('tournament', <competitionId>, $signups);
向比赛中添加注册信息接受注册信息的列表,如果需要,可以一次性通过一个API调用导出完整的注册信息列表。
每个注册所需的关键键
- 'name' => 字符串: 注册的队伍/玩家的名称
每个注册的可选键
- 'hasServer' => boolean: 该注册是否可以访问服务器(默认:true)
- 'isAccepted' => boolean: 该注册是否被接受参加锦标赛(默认:true)
- 'onWaitingList' => boolean: 是否应该将该注册放入等待名单(默认:false)(如果没有可用位置,注册将被放入等待名单)
- 'contact' => string: 注册的联系信息(irc昵称/xbox live名称/psn账号/steam ID)(默认:null)
- 'seeding' => 无符号整数:该注册的种子位置 - 在设置比赛时目前未使用(默认:null)
- 'clanId' => 无符号整数:要将注册分配到的网站上的公会ID(默认:null)
- 'remoteId' => 无符号大整数(64位):将包含在任何包含注册的响应中的ID。使用此ID将注册与本地账户/团队关联。 (默认:null)
获取所有比赛轮次
$pwned->getRounds('tournament', <competitionId>);
比赛轮次是一系列阶段的总和,相当于锦标赛中的“一步”。每一轮可能包含多个阶段(小组轮(单循环)将包含联赛阶段每一轮的一个阶段),尽管它们通常只包含一个阶段和一组比赛(对于所有常规锦标赛淘汰轮次)。
获取特定的比赛轮次
$pwned->getRound('tournament', <competitionId>, <roundNumber>);
返回关于由competitionId指定的特定轮次的比赛信息。roundNumber可以是1到锦标赛中轮次总数之间的任何值(singleelim4将有两个轮次,singleelim8将有三个轮次,依此类推)。
检索锦标赛的注册团队
$signups = $pwned->getSignups('tournament', <competitionId>[, <fetchmode>])
返回一个关联数组数组,描述了已注册参加比赛的团队。
可选参数
- fetchMode: 一个字符串,表示是否只返回接受的条目('normal',默认值),接受和等待名单上的条目('waiting'),未接受的条目('notaccepted')以及所有注册的团队,无论其状态如何('all')
从锦标赛中删除注册
$pwned->removeSignup('tournament', <competitionId>, <signupId>);
从锦标赛中删除由id指定的注册。signupId包含在从getSignups()返回的元素中。
用另一个注册替换注册
$pwned->replaceSignup('tournament', <competitionId>, <signupId>, <replaceWithSignupId>);
用新的注册替换现有的注册需要您首先将新的注册添加到锦标赛中(将其放入等待名单,因为锦标赛可能已满),然后请求进行交换。
signupId和replaceWithSignupId都引用从getSignups()返回的id,并将团队/选手在replaceWithSignupId中的所有未决定的比赛中替换为signupId。
获取特定比赛的信息
$pwned->getMatch('tournament', <competitionId>, <matchId>);
返回一个包含比赛信息的数组。
存储比赛结果
$matchData = array( 'score' => 4, 'scoreOpponent' => 1, ); $pwned->updateMatch('tournament', <competitionId>, <matchId>, $matchData);
存储已进行的比赛结果。score和scoreOpponent指的是从getRound(),getRounds()或getMatch()返回的比赛描述中由"signup"和"signupOpponent"标识的团队的得分。
比赛结果的可选键
- 'score' => int: 主队得分(在比赛元素中通过signup标识)
- 'scoreOpponent' => int: 客队得分(在比赛元素中通过signupOpponent标识)
- 'walkover' => string: 可以是'signup'或'signupOpponent',并将注册的弃权胜利注册给任一注册
ping API端点
$pwned->ping();
测试认证信息是否正确(私钥和公钥)以及端点是否正常。如果成功,则返回'pong'。