@cmru-comsci-66/cmru-api - v0.5.0
    Preparing search index...

    Class Bus

    คลาสสำหรับเรียกใช้ API ของระบบรถประจำทาง CMRU ใช้สำหรับจองรถ ดูตารางเดินทาง และตรวจสอบการจอง

    import { ApiClient, ApiServer } from '@cmru-comsci-66/cmru-api';

    const client = new ApiClient(ApiServer.BUS);
    const busApi = client.api();

    // เข้าสู่ระบบ
    await busApi.login({
    username: '66143000',
    password: 'yourpassword'
    });

    // ดูรถที่มี
    const availableBuses = await busApi.getAvailableBuses();
    console.log(availableBuses);
    // Output: { buses: [{ route: 'CMRU-Central', time: '08:00', ... }] }
    Index

    Methods

    • จองรถประจำทาง

      Parameters

      • scheduleId: number
      • scheduleDate: string
      • destinationType: 1 | 2
      • Optionalcookies: string | string[]
      • oneClick: boolean = false

      Returns Promise<AxiosResponse<number, any, {}>>

      // จองรถไปแม่ริม
      await busApi.bookBus(1450, '2025-11-15', 1);

      // จองรถไปเวียงบัวพร้อมยืนยันอัตโนมัติ
      await busApi.bookBus(1451, '2025-11-16', 2, undefined, true);
      // Output: จองสำเร็จและยืนยันแล้ว
    • ยกเลิกการจองรถประจำทาง

      Parameters

      • reservationId: string | number
      • Optionalcookies: string | string[]

      Returns Promise<AxiosResponse<string, any, {}>>

      const schedule = await busApi.getSchedule();
      const reservation = schedule.reservations[0];

      await busApi.cancelReservation(reservation.actions.reservationId);
      console.log("ยกเลิกการจองสำเร็จ");
    • ยืนยันการจองรถประจำทาง

      Parameters

      • data: string
      • Optionalcookies: string | string[]

      Returns Promise<AxiosResponse<string, any, {}>>

      const schedule = await busApi.getSchedule();
      const reservation = schedule.reservations[0];

      if (reservation.confirmation.canConfirm) {
      await busApi.confirmReservation(reservation.confirmation.confirmData);
      console.log("ยืนยันการจองสำเร็จ");
      }
    • ดึงข้อมูลรถที่มีให้จองในเดือนที่ระบุ

      Parameters

      • Optionalmonth: string
      • Optionalcookies: string | string[]

      Returns Promise<AvailableBusData>

      const availableBuses = await busApi.getAvailableBuses('2025-11');
      console.log(availableBuses);
      // Output:
      // {
      // currentMonth: "2025-11",
      // totalAvailable: 30,
      // availableSchedules: [
      // {
      // id: 1450,
      // title: "( ไปแม่ริม )",
      // destination: "แม่ริม",
      // destinationType: 1,
      // departureDate: "2025-11-15",
      // departureTime: "08:00",
      // canReserve: true,
      // isReserved: false
      // }
      // ]
      // }
    • ดึงข้อมูลตารางการจองรถประจำทาง

      Parameters

      • Optionalcookies: string | string[]
      • page: number = 1
      • perPage: number = 10

      Returns Promise<ParsedScheduleData>

      const schedule = await busApi.getSchedule();
      console.log(schedule);
      // Output:
      // {
      // userInfo: { name: "นายจอห์น โด" },
      // totalReservations: 5,
      // currentPage: 1,
      // totalPages: 1,
      // hasNextPage: false,
      // hasPrevPage: false,
      // reservations: [
      // {
      // id: "12345",
      // route: "CMRU-Central",
      // date: "2025-11-15",
      // time: "08:00",
      // status: "confirmed"
      // }
      // ]
      // }
    • ดึงข้อมูลตั้วขึ้นรถประจำทาง

      Parameters

      • showticketUrl: string
      • Optionalcookies: string | string[]

      Returns Promise<TicketInfo>

      const schedule = await busApi.getSchedule();
      const ticketUrl = schedule.reservations[0].actions.ticketUrl;

      const ticketInfo = await busApi.getTicketInfo(ticketUrl);
      console.log(ticketInfo);
      // Output:
      // {
      // destination: { name: "แม่ริม", type: "แม่ริม" },
      // schedule: {
      // day: "วันจันทร์",
      // date: "15 พฤศจิกายน 2568",
      // time: "08:00",
      // fullSchedule: "วันจันทร์, 15 พฤศจิกายน 2568 เวลา 08:00"
      // },
      // qrCode: { imageUrl: "/qrcode/generate?data=..." },
      // student: { studentId: "66143000", name: "นายจอห์น โด" }
      // }
    • ดาวน์โหลดรูป QR Code ของตั้วรถประจำทาง

      Parameters

      • showticketUrl: string
      • Optionalcookies: string | string[]

      Returns Promise<AxiosResponse<Buffer<ArrayBufferLike>, any, {}>>

      const schedule = await busApi.getSchedule();
      const ticketUrl = schedule.reservations[0].actions.ticketUrl;

      const qrImage = await busApi.getTicketQRCodeImage(ticketUrl);
      const buffer = qrImage.data;

      // บันทึกเป็นไฟล์
      import fs from 'fs';
      fs.writeFileSync('qr-code.png', buffer);
      // Output: ไฟล์ qr-code.png ถูกสร้างขึ้น
    • เข้าสู่ระบบรถประจำทาง CMRU

      Type Parameters

      • T = unknown

      Parameters

      • credentials: SessionCredentials

      Returns Promise<AxiosResponse<T, any, {}>>

      await busApi.login({
      username: '66143000',
      password: 'yourpassword'
      });
    • เข้าสู่ระบบรถประจำทาง CMRU ด้วยประเภทผู้ใช้ที่ระบุ

      Type Parameters

      • T = unknown

      Parameters

      • credentials: SessionCredentials
      • userType: UserType = UserType.STUDENT

      Returns Promise<AxiosResponse<T, any, {}>>

      // เข้าสู่ระบบในฐานะนักศึกษา
      await busApi.loginWith({ username: '66143000', password: 'pass' }, UserType.STUDENT);

      // เข้าสู่ระบบในฐานะเจ้าหน้าที่
      await busApi.loginWith({ username: 'staff001', password: 'pass' }, UserType.STAFF);
    • ยกเลิกการยืนยันการจอง

      Parameters

      • data: string
      • Optionalcookies: string | string[]
      • oneClick: boolean = false

      Returns Promise<AxiosResponse<string, any, {}>>

      const schedule = await busApi.getSchedule();
      const reservation = schedule.reservations[0];

      if (reservation.confirmation.canUnconfirm) {
      await busApi.unconfirmReservation(reservation.confirmation.unconfirmData);
      console.log("ยกเลิกการยืนยันสำเร็จ");
      }
    • ตรวจสอบว่า session ยังใช้งานได้หรือไม่

      Returns Promise<boolean>

      const isValid = await busApi.validateSession();
      console.log(isValid);
      // Output: true (ถ้า session ยังใช้ได้)
      // Output: false (ถ้า session หมดอายุ)