bluelightco/lever-php

支持Laravel的PHP中非常简单、抽象度最低的Lever DATA API v1包装器。

v1.0.9 2024-08-08 23:32 UTC

This package is auto-updated.

Last update: 2024-09-09 00:24:19 UTC


README

Latest Version on Packagist Total Downloads

支持Laravel的PHP中非常简单、抽象度最低的Lever DATA API v1包装器。

安装

您可以通过composer安装此包

composer require bluelightco/lever-php

用法

PHP

use \Bluelightco\LeverPhp\Http\Client\LeverClient;

$lever = new LeverClient('leverKey');

$lever->opportunities()->fetch();

Laravel

安装后,该包将自动注册其服务提供者。

要发布配置文件到config/lever-php.php,请运行

php artisan vendor:publish --provider="Bluelightco\LeverPhp\Providers\LeverServiceProvider" --tag="config"

在相应地更改您的ENV文件中的API密钥后,您可以按以下方式调用Lever实例

Lever::opportunities()->fetch();

方法

该包基于Lever的数据API文档构建,因此您应该能够找到许多端点的对应方法。

例如,如果您想获取所有机会,只需调用

Lever::opportunities()->fetch();

要检索单个机会,应调用相同的方法,同时传递id作为参数

Lever::opportunities('250d8f03-738a-4bba-a671-8a3d73477145')->fetch();

要创建机会,请使用create方法,同时传递字段数组(使用与Lever相同的名称)

$newOpportunity = [
                   'name' => 'Shane Smith',
                   'headline' => 'Brickly LLC, Vandelay Industries, Inc, Central Perk',
                   'stage' => '00922a60-7c15-422b-b086-f62000824fd7',
                    ...
                  ];

Lever::opportunities()->create($newOpportunity);

当代表候选人向特定职位提交申请时,应使用以下方法

$application = [
                   'customQuestions' => [...],
                   'personalInformation' => [...],
                   'ipAddress' => '184.23.195.146',
                    ...
                  ];

Lever::opportunities('730e37db-93d3-4acf-b9de-7cfc397cef1d')
    ->sendConfirmationEmail()
    ->apply($application);

当更新端点可用时,您可以按以下方式进行操作

$posting = [
             'text' => 'Infrastructure Engineer',
             'state' => 'published',
             ...
           ];

Lever::postings('730e37db-93d3-4acf-b9de-7cfc397cef1d')
    ->performAs('8d49b010-cc6a-4f40-ace5-e86061c677ed')
    ->update($posting);

请注意,某些资源需要一些参数才能工作。例如,创建职位时,需要perform_as参数。您可以使用performAs($userId)方法传递此信息。

当资源依赖于另一个资源才能工作时,您可以简单地链式调用方法(顺序很重要)。例如,要检索机会报价,应执行以下操作

Lever::opportunities('250d8f03-738a-4bba-a671-8a3d73477145')->offers()->fetch();

当Lever请求使用PUT动词时,您可以使用putUpdate()而不是update()(POST)。

参数

有许多辅助方法可用于在请求中包含参数。例如,要包含追随者扩展申请以及阶段,在获取机会时,您可以这样做

Lever::opportunities()
    ->include('followers')
    ->expand(['applications', 'stages'])
    ->expand('posting')
    ->fetch();

请注意,您可以在两种方法中传递字符串或字符串数组,并且如果您愿意,可以多次链式调用相同的方法。

并非所有参数都有对应的方法,但您可以使用addParameter($field, $value)方法。此方法可以链式调用而不会覆盖先前值。例如

Lever::opportunities()
    ->addParameter('origin', 'applied')
    ->addParameter('posting_id', 'f2f01e16-27f8-4711-a728-7d49499795a0')
    ->fetch();

请注意,当使用相同的字段名称时,新值将被附加而不是覆盖。

上传文件和简历

LeverPhp允许您在可用时包含简历或文件。为此,您必须将文件包含在字段数组中(请参阅示例)并链式调用hasFiles()方法(在createupdate方法之前!)例如,在创建机会时可以附加简历

$newOpportunity = [
                   'name' => 'Shane Smith',
                   'headline' => 'Brickly LLC, Vandelay Industries, Inc, Central Perk',
                   'resumeFile' => [
                        'file' => file_get_contents('path/to/resume.pdf'),
                        'name' => 'resume.pdf' 
                        'type' => mime_content_type('path/to/resume.pdf'), // application/pdf
                        ] 
                  ];

Lever::opportunities()->hasFiles()->create($newOpportunity);

目前,不支持在一次调用中上传多个文件。

分页

所有具有列表端点(候选人、用户、职位)的Lever资源都具有分页功能,每页最多100个结果。LeverPhp通过利用Laravel LazyCollection类自动处理此功能。例如,您可以遍历整个机会集,而无需担心分页

$opportunities = Lever::opportunities()->fetch();

foreach ($opportunities as $opportunity) {
    echo $opportunity['name];
}

当达到第100个项目时,将向API发出另一个调用,请求下一批100个项目,直到没有更多为止。

当然,您可以充分利用LazyCollection类上所有可用的方法。

速率限制和指数退避

默认情况下,Lever API允许每个API密钥每秒10个请求的稳定状态。

为了遵守这一规定,LeverPhp自动将向Lever Data API的请求数量限制为每秒10个,并在收到429或500响应时使用指数退避来降低重试率。请相应地规划您的代码,因为请求可能比预期耗时更长。建议使用某种类型的队列。

默认情况下,速率限制器在内存中工作。这意味着如果您有第二个PHP进程(或Guzzle客户端)正在消耗相同的API,您仍然可能遇到速率限制。

LeverPhp()构造函数接受一个自定义存储作为其第三个参数以克服内存问题。如果您正在使用Laravel,使用您的缓存驱动程序的自定义存储已经配置好了。如果您需要更多信息,请参阅GuzzleRateLimiterMiddleware的文档。

客户端

如果您尝试访问的资源没有可用方法,您可以通过调用Lever::client()直接获取Guzzle客户端的实例。请随意将其添加到源代码中。有关详细信息,请参阅CONTRIBUTING

测试

composer test

变更日志

请参阅CHANGELOG以获取有关最近更改的更多信息。

贡献

请参阅CONTRIBUTING以获取详细信息。

安全

如果您发现任何安全相关的问题,请通过电子邮件dev@via.work而不是使用问题跟踪器。

鸣谢

许可证

MIT许可证(MIT)。有关更多信息,请参阅许可证文件