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

This package is auto-updated.

Last update: 2024-08-31 00:29:57 UTC


README

Latest Version on Packagist GitHub Tests Action Status GitHub Static Analysis Action Status GitHub Code Style Action Status Total Downloads

要求

  • 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)。请参阅 许可文件 了解更多信息。