maxwkf/barsbank

支持 Barsbank API 的包

v1.01 2022-07-19 10:46 UTC

This package is auto-updated.

Last update: 2024-09-19 16:20:19 UTC


README

此 barsbank API 允许您操作 https://dynamic.barsbank.com/api-docs 中的 API。(预订功能尚未实现)

安装

Composer

您应该已安装 composer,并使用以下命令进行安装。

composer require maxwkf/barsbank

在 Laravel 中运行

复制并添加密钥到配置文件,并将您的 API 密钥添加到其中。

运行以下命令。它将配置文件复制到您的 /config 文件夹

> php artisan vendor:publish --provider="Maxwkf\Barsbank\BarsbankServiceProvider" --tag="config"

更新配置文件中的密钥属性。

return [
  'key' => 'your-own-key'
];

使用方法

无框架的 PHP

$apiKey = "your-api-key";
$parkId = 2; // your park id
$apiClient = new \Maxwkf\Barsbank\ApiClient(apiKey: $apiKey, parkId: $parkId);

$apiClient
    ->setDateFrom('2022-12-01')
    ->setDateTo('2022-12-31')
    ->setNumberAdults(2)
    ->getAvailability()
    ;

Laravel

  1. 将 API 密钥添加到您的配置文件
  2. 创建自己的 Lodge Class 接口,以便您可以稍后连接其他 API 客户端。
// /app/Services/Lodge.php
namespace App\Services;

interface Lodge {

    public function getAvailabilities();

    public function getValidStays();
    
    public function getParkAccommodation();

    public function getTourValidStays();

    public function getExtras();
}
  1. 在 AppServiceProvider.php 中注册 Lodge 类,并使用我们的 API 客户端实例化它
app()->bind(Lodge::class, function () {

    $apiClient = (new \Maxwkf\Barsbank\ApiClient(
        apiKey: config('barsbank.key'),
        parkId: 2,
    ));

    return new BarsbankLodge($apiClient);
});
  1. 创建自己的类以实现 Lodge Class,并将 ApiClient 注入到该类中
namespace App\Services;


use Maxwkf\Barsbank\ApiClient;


class BarsbankLodge implements Lodge {
    
    public function __construct(protected ApiClient $client) {
        
    }
    public function getAvailabilities() {
        $this->client
            ->setNumberAdults(1)
            ->setDateFrom('2022-09-26')
            ->setDateTo('2022-09-30')
            ;

        return $this->client->getAvailabilities();
    }
    public function getValidStays() {
        // your own implementation
    }

    // implement for other functions
}
  1. 创建自己的控制器,并直接从 web.php 使用 LodgeController
//  /routes/web.php
Route::get('/testBarsbankApi', LodgeController::class);
// /app/Http/Controllers/LodgeController.php
namespace App\Http\Controllers;
use App\Services\Lodge;

use Illuminate\Http\Request;

class LodgeController extends Controller
{
    public function __invoke(Lodge $lodge) {// validate
        // $result = $lodge->getAvailabilities();
        

        dd($lodge->getAvailabilities());
    }
}