vikingsmaster/tampere-journeys-api-sdk

Tampere Journeys API 的 PHP SDK

0.1.2 2019-11-05 17:05 UTC

README

这是 Tampere Journeys API 的非官方 SDK 发布。

安装

使用 composer 安装: composer require vikingmaster/tampere-journeys-api-sdk

使用

创建 API 客户端实例。可用的配置参数

  • baseUri 请求的基础 URI
  • timeout (可选) Http 请求超时(秒)
  • userAgent (可选) User-Agent 头
$api = new \Vikingmaster\TampereJourneysApiSdk\TampereJourneysApiClient([
    'baseUri' => 'http://data.itsfactory.fi/journeys/api'
]);

获取线路

//Fetch lines
$request = $api->makeGetLinesRequest()
    ->setIndent(true)
    ->setDescription('Description')
;
$response = $request->send();
$lines = $response->getLines();

获取旅程模式

$request = $api->makeGetJourneyPatternsRequest()
    ->setFirstStopPointId(1)
    ->setLastStopPointId(2)
    ->setLineId(17)
    ->setName("Nokian asema C - Keho")
;
$response = $request->send();
$patterns = $response->getJourneyPatterns();

异常处理

当有请求错误时,将抛出 TampereJourneyApiException

use \Vikingmaster\TampereJourneysApiSdk\Exceptions\TampereJourneyApiException;

try {
    $response = $request->send();
} catch (TampereJourneyApiException $e) {
    //These methods are available for problem tracing
    $apiError  = $e->getApiError();
    $request   = $e->getRequest();
    $response  = $e->getResponse();
    $apiClient = $e->getApiClient();
} catch (\Exception $e) {
    //Any other errors such as network or configuration error
}

分页

一些响应可能很长,因此可能需要多次请求才能获取所有内容

/** @var array|\Vikingmaster\TampereJourneysApiSdk\Dto\Line[] $entries */
$entries = [];

$fetch      = true;
$startIndex = 0;
while ($fetch) {
    try {
        $response = $request->setStartIndex($startIndex)->send();
        $entries  = array_merge($entries, $response->getLines());
    } catch (\Exception $e) {
         //Handle exception / resend the request
        break;
    }

    $fetch      = $response->getPaging()->hasMoreData();
    $startIndex = $response->getPaging()->getPageSize();
}