uz-booking-client

Unofficial UZ api client

Usage no npm install needed!

<script type="module">
  import uzBookingClient from 'https://cdn.skypack.dev/uz-booking-client';
</script>

README

NPM version NPM downloads MIT License Build Status

uz-booking-client

Unofficial uz booking API client for Node.js. https://booking.uz.gov.ua/en/

Installation

Using npm:

$ npm i uz-booking-client

Note: add --save if you are using npm < 5.0.0

In Node.js:

import Client from "uz-booking-client";
//  or
const Client = require("uz-booking-client");

Usage

/*
   Data can be retrieved from the API either using callbacks (as in versions < 1.0)
   or using a new promise-based API. The promise-based API returns the raw Axios
   request promise.
 */
import Client from "uz-booking-client";

const ticketsDate = moment().add(10, "days");
const uzClient = new Client.ApiV2("en");

const departureStations = await uzClient.Station.find("Kyiv");
const departureStation = departureStations.data[0];

const targetStations = await uzClient.Station.find("Lviv");
const targetStation = targetStations.data[0];

const trains = await uzClient.Train.find(
  departureStation.value,
  targetStation.value,
  ticketsDate.format("YYYY-MM-DD"),
  "00:00"
);

const train = trains.data.data.trains[0]

if (train.wagon_types.length === 0) {
  console.log("No free places left in this train.");
} else {
  const wagonTypes = train.types.map(type => type.letter);
  const wagons = await uzClient.Wagon.list(
      departureStation.value,
      targetStation.value,
      ticketsDate.format("YYYY-MM-DD"),
      train.number
  );

  const wagon = wagons.data.data.wagons[0];
  const coaches = await uzClient.Coach.list(
      departureStation.value,
      targetStation.value,
      ticketsDate.format("YYYY-MM-DD"),
      train.number,
      wagon.num,
      wagon.type,
      wagon.class
  );

  console.log(coaches.data.data);
  //   {
  //     "scheme_type": "К65",
  //     "model": {
  //         "floor": {
  //         "1": {
  //             "width": 17,
  //             "height": 5
  //         }
  //         }
  //     },
  //     "places": {
  //         "floor": {
  //             "1": [
  //                 {
  //                     "y": 1,
  //                     "x": 2,
  //                     "w": 1,
  //                     "h": 1,
  //                     "num": "4",
  //                     "type": "place",
  //                     "headrest": "left"
  //                 },
  //                 ...
  //             ]
  //             ...
  //         }
  //     }
  //   }
}