hkjc-api
Version:
Node.js package for communicating with HKJC GraphQL API
61 lines (60 loc) • 2.46 kB
JavaScript
;
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;