amattu2/golo365-wrapper

这是一个用于与Golo365.com和X431.com的隐藏诊断API交互的API包装类。

v1.0.1b 2022-06-05 16:36 UTC

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

)

备注

  1. 要访问原始API数据(杂乱),您可以使用通过_raw索引提供的闭包函数。
  2. 您可以通过_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

)

备注

  1. 此函数的可靠性取决于最终用户在诊断会话期间报告车牌号码。如果没有这样做,这些结果将不包括在返回值中。如果可能,请改用reportListByVIN
  2. 要访问原始API数据(杂乱),您可以使用通过_raw索引提供的闭包函数。
  3. 您可以通过_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

)

备注

  1. 要访问原始API数据(杂乱),您可以使用通过_raw索引提供的闭包函数。
  2. 您可以通过_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
)

备注

  1. 要访问此数组的原始数据,请调用匿名函数(闭包)_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
)

备注

  1. 此端点依赖于用户输入的数据来返回匹配的车牌号码。此端点不依赖于政府数据源,并且可能很容易提供错误信息。
  2. 要访问原始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
)

备注

  1. 此端点不依赖于政府数据源。它依赖于诊断设备提交诊断事件时传递的数据。除非在此诊断事件期间报告了车牌号码,否则不会返回结果。
  2. 返回的唯一原始数据是vinplate_number;但为了保持一致性,仍然可以访问用于访问原始API数据的_raw闭包对象。

待办事项

  • upload_report_data
  • upload_accessory_info
  • mergeMultiReport

需求 & 依赖

  • PHP7+
  • cURL扩展