amattu2 / golo365-wrapper
这是一个用于与Golo365.com和X431.com的隐藏诊断API交互的API包装类。
This package is auto-updated.
Last update: 2024-09-09 17:27:56 UTC
README
什么是Golo365?
Golo365是许多汽车诊断计算机和设备的底层数据连接服务。设备制造商,如Launch Tech LTD和Matco Tools,依赖于它们提供各种服务。此API包装的目标是简化对Golo365的极其未文档化 API端点的访问,并允许个人或公司将其与自己的专有服务之间集成关键数据连接。
如何使用此包装器?
此包装器的最终目标是消除对手持式诊断计算机的依赖,以及与车辆的物理连接,以便检索车辆的诊断历史。这是可能的,因为Golo365(即AIT / DBSCAR / X431)将扫描历史存储在云端。以下是您可以使用此API包装器促进您服务(例如,商店管理系统)与Golo365之间连接的一些方法
- 通过车牌号或VIN号码获取诊断扫描历史报告
- 执行VIN到车牌号的解码
- 执行车牌到VIN的解码
- ... 更多集成即将推出
需要更多信息?
我在DOCUMENTATION.md文件中进行了大量的Golo365研究。如果您想创建自己的包装器,而不需要逆向工程此包装器,请依赖该文件中的信息。该DOCUMENTATION.md文件还详细说明了尚未实现但已发现的端点。
贡献
许多小时天的研发投入用于发现这些完全未文档化的API端点。如果您有未列出的Golo365端点,或知道本存储库中未列出的事情,请通过GitHub问题或拉取请求联系。
Postman / Thunder Client
此存储库包含一个Golo365 API的Thunder Client集合。要使用它,请访问.vscode/thunder-client并将json导入您的VS Code Thunder Client扩展。
用法
以下为函数文档。或者,查看存储库中包含的example.php
文件,以获取各种功能的实际演示。
安装
composer require amattu2/golo365-wrapper
__construct
类构造函数仅接受可选参数。
/** * Class Constructor * * @param ?string $serial_no reporting device serial number * @param ?string $service Golo365 service ait|aitus * @author Alec M. * @since 1.0.0 */ public function __construct(string $serial_no = "", string $service = "aitus")
如果提供了报告设备serial_no
,则任何使用可选serial_no
参数的搜索/报告查询都将提供此序列号。请参阅类中的变量文档以了解此参数的说明。
service
参数定义了要报告/接收数据的Golo365服务。如果您诊断平板电脑是为美国制造的,那么您所有的设备生成的报告可能都位于AITUS服务中。
setSerialNo
此函数返回类实例,从而启用函数调用链。
/** * Set or Remove the Device Serial Number * * @param ?string $serial_no * @return self * @since 1.0.0 */ public function setSerialNo(string $serial_no = "") : self
空或无效的serial_no
参数将导致serial_no
返回到默认值。
setListSize
对于支持分页的API端点,此指定每页的结果数。此函数支持链式调用。
/** * Set or Remove the Report Listing Size Limit * * @param ?integer $size * @return self * @since 1.0.0 */ public function setListSize(int $size = 0) : self
size
为0或以下的结果将删除大小分页限制。
reportListByVIN
此函数获取提供的VIN的所有报告诊断事件。
/** * Fetch Diagnostic Scan History by VIN * * Note: * (1) If the serial_no variable is not empty, * it will be used to limit results to that * specific device * * @param string $vin VIN to search * @param mixed $page page number to fetch * @return Array of diagnostic scan history * @throws \TypeError * @throws \InvalidArgumentException * @since 1.0.0 */ public function reportListByVIN(string $VIN, $page = "") : array
输出
Array ( [0] => Array ( [record_id] => int [serial_no] => int [date] => Y-m-d H:i:s [VIN] => string [plate_number] => string [url] => string [type] => string [_raw] => Closure [_reportDetail] => Closure ) // ... repeating )
备注
- 要访问原始API数据(杂乱),您可以使用通过
_raw
索引提供的闭包函数。 - 您可以通过
_reportDetail
索引调用reportDetail
函数;它不接受任何参数,因为它们是从当前元素派生出来的。
reportListByPlateNumber
/** * Fetch Diagnostic Scan History by License Plate Number * * Note: * (1) If the serial_no variable is not empty, * it will be used to limit results to that * specific device * * @param string $plate_number License Plate # to search * @param mixed $page page number to fetch * @return Array of diagnostic scan history * @throws \TypeError * @throws \InvalidArgumentException * @since 1.0.0 */ public function reportListByPlateNumber(string $plate_number, $page = "") : array
输出
Array ( [0] => Array ( [record_id] => int [serial_no] => int [date] => Y-m-d H:i:s [VIN] => string [plate_number] => string [url] => string [type] => string [_raw] => Closure [_reportDetail] => Closure ) // ... repeating )
备注
- 此函数的可靠性取决于最终用户在诊断会话期间报告车牌号码。如果没有这样做,这些结果将不包括在返回值中。如果可能,请改用
reportListByVIN
。 - 要访问原始API数据(杂乱),您可以使用通过
_raw
索引提供的闭包函数。 - 您可以通过
_reportDetail
索引调用reportDetail
函数;它不接受任何参数,因为它们是从当前元素派生出来的。
reportList
此函数通过设备序列号检索由设备产生的所有报告。它接受一个可选参数。在类实例化期间提供的序列号(或通过setSerialNo
)将被使用。
/** * Fetch Diagnostic Scan History by Serial Number * * @param mixed $page page number to fetch */ public function reportList($page = "") : array
输出
Array ( [0] => Array ( [record_id] => int [serial_no] => int [date] => Y-m-d H:i:s [VIN] => string [plate_number] => string [url] => string [type] => string [_raw] => Closure [_reportDetail] => Closure ) // ... repeating )
备注
- 要访问原始API数据(杂乱),您可以使用通过
_raw
索引提供的闭包函数。 - 您可以通过
_reportDetail
索引调用reportDetail
函数;它不接受任何参数,因为它们是从当前元素派生出来的。
reportDetail
此端点提供了有关诊断事件记录的额外详细信息,例如哪些系统被扫描,使用了哪些软件等。
/** * Fetch additional details about a diagnostic scan * * @param int $record_id * @param string $type * @return array * @throws \TypeError * @throws \InvalidArgumentException * @since 1.0.0 */ public function reportDetail(int $record_id, string $type) : array
输出
Array ( [software_version] => string [software_package] => string [system_list] => Array ( [0] => Array ( [system_uid] => padded int [system] => string [name_id] => int [is_new_sys] => int ) ) [_raw] => Closure Object )
备注
- 要访问此数组的原始数据,请调用匿名函数(闭包)
_raw
getPlateByVIN
此函数将返回与VIN号码关联的车牌号码。重要请参阅以下关于此端点的说明。
/** * Fetch a License Plate by the VIN Number * * @param string $VIN the vehicle VIN number to search a plate for * @return array * @throws \InvalidArgumentException * @since 1.0.0 */ public function getPlateByVIN(string $VIN) : array
输出
Array ( [VIN] => string [plate_number] => string [_raw] => Closure Object )
备注
- 此端点依赖于用户输入的数据来返回匹配的车牌号码。此端点不依赖于政府数据源,并且可能很容易提供错误信息。
- 要访问原始API数据,只需调用
_raw
闭包对象
getVINByPlateNumber
此函数是getPlateByVIN
的逆函数,当提供车牌号码时返回VIN号码。重要请参阅以下关于此端点的说明。
/** * Fetch the VIN by License Plate * * @param string $plate_number License Plate # to search * @return array * @throws TypeError * @throws InvalidArgumentException * @since 1.0.0 */ public function getVINByPlateNumber(string $plate_number) : array
输出
Array ( [VIN] => string [plate_number] => string [_raw] => Closure Object )
备注
- 此端点不依赖于政府数据源。它依赖于诊断设备提交诊断事件时传递的数据。除非在此诊断事件期间报告了车牌号码,否则不会返回结果。
- 返回的唯一原始数据是
vin
和plate_number
;但为了保持一致性,仍然可以访问用于访问原始API数据的_raw
闭包对象。
待办事项
- upload_report_data
- upload_accessory_info
- mergeMultiReport
需求 & 依赖
- PHP7+
- cURL扩展