pwned/pwnedclient

用于访问pwned.no API并处理比赛的应用程序。

dev-master 2015-09-22 18:46 UTC

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>);

用新的注册替换现有的注册需要您首先将新的注册添加到锦标赛中(将其放入等待名单,因为锦标赛可能已满),然后请求进行交换。

signupIdreplaceWithSignupId都引用从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'。