totov / laravel-cap-hpi
Laravel 实现的 Cap HPI UK API - https://api.cap-hpi.co.uk/docs/index.html
v1.1.0
2023-06-02 10:02 UTC
Requires
- php: ^8.0
- guzzlehttp/guzzle: ^7.3
- illuminate/contracts: ^8.37|^9.0|^10.0
- illuminate/http: ^8.46|^9.0|^10.0
- spatie/laravel-package-tools: ^1.4.3
Requires (Dev)
- brianium/paratest: ^6.2|^7.0
- nunomaduro/collision: ^5.3|^6.0|^7.0
- orchestra/testbench: ^6.15|^7.0|^8.0
- phpunit/phpunit: ^9.3|^10.0
- spatie/laravel-ray: ^1.9
- vimeo/psalm: ^4.4
README
要求
- PHP ^8.0
- PHP ext-json
- Composer ^2.0
安装
您可以通过 composer 安装此包
composer require totov/laravel-cap-hpi
您可以使用以下命令发布配置文件
php artisan vendor:publish --provider="Totov\Cap\CapServiceProvider" --tag="laravel-cap-hpi-config"
这是发布配置文件的内容
return [ 'client_id' => env('CAP_CLIENT_ID', 'null'), 'secret' => env('CAP_SECRET', 'null'), ];
使用方法
use Totov\Cap\Cap; use Totov\Cap\Subsets\CurrentValuations\CurrentValuationOptions; use Totov\Cap\Subsets\FutureValuations\FutureValuationOptions; use Totov\Cap\Subsets\FullVehicleData\Options; // Initialise cap with client ID and secret $clientId = config('cap.client_id'); $secret = config('cap.secret'); $cap = new Cap($clientId, $secret); // Or grab from the container which automatically grabs the config and creates a singleton $cap = app(Cap::class); // Get current API version and status $version = $cap->version(); $status = Cap::status(); // Get full vehicle data by VRM $currentPoints = new CurrentValuationOptions(['TradeClean'], [['mileage' => 20000]]); $futurePoints = new FutureValuationOptions(['TradeClean'], [['mileage' => 25000, 'valuationDate' => '2021-09-19']]); $options = new Options($currentPoints, $futurePoints); $cap->fullVehicleData->byVrm('AB12CDE', $options); // Look up current valuation by VRM $options = new CurrentValuationOptions(['TradeClean'], [['mileage' => 20000]]); $cap->currentValuations->byVrm('AB12CDE', $options); // Look up equipment by VRM $cap->equipment->byVrm('AB12CDE'); // Look up derivative details by VRM $cap->derivativeDetails->byVrm('AB12CDE'); // Get vehicle details by VRM $cap->vehicleDetails->byVrm('AB12CDE'); // Get vehicle SMMT data by VRM $cap->smmtData->byVrm('AB12CDE'); // Get previous keepers of vehicle by VRM $cap->vehicleKeepers->byVrm('AB12CDE'); // Look up DVLA data for vehicle by VRM $cap->dvlaData->byVrm('AB12CDE'); // Perform flag check lookup by VRM $cap->checkFlags->byVrm('AB12CDE'); // Get future valuation for vehicle by VRM $options = new FutureValuationOptions(['TradeClean'], [['mileage' => 25000, 'valuationDate' => '2021-09-19']]); $cap->futureValuations->byVrm('AB12CDE', $options); // Get derivative image for vehicle by VRM $response = $cap->derivativeImages->byVrm('AB12CDE'); if ($response->ok()) { $imageContent = $response->body(); // ... } // Get latest MOT details for vehicle by VRM $cap->motHistory->byVrm('AB12CDE', true); // Or all MOT history for vehicle by VRM $cap->motHistory->byVrm('AB12CDE'); // Get brands info $cap->derivativeHierarchy->brands->byDerivativeType('cars'); $cap->derivativeHierarchy->brands->byDerivativeTypeAndBrandId('cars', 25545); // Get ranges info $cap->derivativeHierarchy->ranges->byDerivativeTypeAndBrandId('cars', 25545); $cap->derivativeHierarchy->ranges->byDerivativeTypeAndRangeId('cars', 89); // Get model info $cap->derivativeHierarchy->models->byDerivativeTypeAndBrandId('cars', 25545); $cap->derivativeHierarchy->models->byDerivativeTypeAndRangeId('cars', 89); $cap->derivativeHierarchy->models->byDerivativeTypeAndModelId('cars', 25547); // Get trim info $cap->derivativeHierarchy->trims->byDerivativeTypeAndModelId('cars', 25547); // Get derivatives $cap->derivativeHierarchy->derivatives->byDerivativeTypeAndModelId('cars', 25547); $cap->derivativeHierarchy->derivatives->byDerivativeTypeAndTrimId('cars', 10619); // Get technical spec categories $cap->technicalSpecification->categories->byDerivativeType('cars'); $cap->technicalSpecification->categories->byDerivativeTypeAndCategoryId('cars', 8); // Get technical specs for vehicle by VRM $cap->technicalSpecification->byVrm('AB12CDE'); // Get technical specs for vehicle by VRM with filter on returned items (category IDs and item IDs) $cap->technicalSpecification->byVrm('AB12CDE', [6, 7], [33, 34, 24]);
上面的示例使用 VRM,但可以根据文档使用 VIN(或 VIN 与 VRM 的组合)进行查找,只需使用 ->byVin() 或 ->byVinAndVRM() 代替。
测试
composer test
变更日志
请参阅 CHANGELOG 以获取有关最近更改的更多信息。
路线图
- 针对每个端点的更深入测试
- 使用 DataTransferObjects 而不是返回 JSON
- 自动将令牌注入相关请求
贡献
请参阅 CONTRIBUTING 以获取详细信息。
安全漏洞
请查看 我们的安全策略 了解如何报告安全漏洞。
鸣谢
许可
MIT 许可证 (MIT)。请参阅 许可文件 了解更多信息。