UNPKG

hkjc-api

Version:

Node.js package for communicating with HKJC GraphQL API

61 lines (60 loc) 2.46 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.HorseRacingAPI = void 0; const client_1 = require("../client"); const horseRacingQuery_1 = require("../query/horseRacingQuery"); class HorseRacingAPI { constructor(client) { this.client = client || client_1.defaultClient; } async getRaceMeetings(options = {}) { const response = await this.client.request(horseRacingQuery_1.horseQuery, options); return { activeMeetings: response.activeMeetings, raceMeetings: response.raceMeetings }; } async getActiveMeetings() { const { activeMeetings } = await this.getRaceMeetings(); return activeMeetings; } async getRace(raceNumber = 1) { const { raceMeetings } = await this.getRaceMeetings(); const meeting = raceMeetings[0]; if (!meeting) return null; const race = meeting.races.find(race => Number(race.no) === raceNumber || race.no === String(raceNumber)); return race || null; } async getAllRaces() { const { raceMeetings } = await this.getRaceMeetings(); return raceMeetings; } /** * Gets the detailed odds information for a specific race * @param raceNumber The race number to get odds for (defaults to 1) * @param oddsTypes Array of odds types to retrieve (defaults to WIN and PLA) * @returns An array of odds details for the specified race and odds types */ async getRaceOdds(raceNumber = 1, oddsTypes = ['WIN', 'PLA']) { const oddsResponse = await this.client.request(horseRacingQuery_1.horseOddsQuery, { raceNo: raceNumber, oddsTypes, }); return oddsResponse.raceMeetings[0]?.pmPools || []; } /** * Gets the pool investment information for a specific race * @param raceNumber The race number to get pool info for (defaults to 1) * @param oddsTypes Array of odds types to retrieve (defaults to WIN and PLA) * @returns An array of pool information for the specified race and odds types */ async getRacePools(raceNumber = 1, oddsTypes = ['WIN', 'PLA']) { const poolResponse = await this.client.request(horseRacingQuery_1.horsePoolQuery, { raceNo: raceNumber, oddsTypes, }); return poolResponse.raceMeetings[0]?.poolInvs || []; } } exports.HorseRacingAPI = HorseRacingAPI;