@fightmegg/riot-rate-limiter
Version:
Rate Limiter for Riot Games API
334 lines (333 loc) • 12.5 kB
TypeScript
import Bottleneck from "bottleneck";
import { RequestInfo, RequestInit } from "node-fetch";
export interface ConstructorParams {
debug?: boolean;
redis?: Bottleneck.RedisConnectionOptions;
concurrency?: number;
retryAfterDefault?: number;
retryCount?: number;
datastore?: "local" | "ioredis";
}
export interface ExecuteParameters {
url: RequestInfo;
options: RequestInit;
}
export interface ExecuteRequestParameters {
req: ExecuteParameters;
region: PlatformId;
method: string;
}
export declare enum PlatformId {
EUW1 = "euw1",
EUNE1 = "eun1",
NA1 = "na1",
LA1 = "la1",
LA2 = "la2",
ME1 = "me1",
KR = "kr",
JP1 = "jp1",
BR1 = "br1",
OC1 = "oc1",
RU = "ru",
TR1 = "tr1",
EUROPE = "europe",
ASIA = "asia",
SEA = "sea",
AMERICAS = "americas",
AP = "ap",
BR = "br",
EU = "eu",
NA = "na",
LATAM = "latam",
PH2 = "ph2",
SG2 = "sg2",
TH2 = "th2",
TW2 = "tw2",
VN2 = "vn2",
ESPORTS = "esports",
APAC = "apac"
}
export declare enum LimitType {
APPLICATION = "application",
METHOD = "method",
SERVICE = "service"
}
export interface RateLimits {
appLimits: string;
appCounts: string;
methodLimits: string;
methodCounts: string;
limitType: LimitType | null;
retryAfter: number | null;
}
export declare const HOST = ":platformId.api.riotgames.com";
export interface METHODS {
ACCOUNT: {
GET_BY_PUUID: string;
GET_BY_RIOT_ID: string;
GET_BY_ACCESS_TOKEN: string;
GET_ACTIVE_SHARD_FOR_PLAYER: string;
};
CHAMPION_MASTERY: {
GET_ALL_CHAMPIONS: string;
GET_CHAMPION_MASTERY: string;
GET_TOP_CHAMPIONS: string;
GET_CHAMPION_MASTERY_SCORE: string;
};
CHAMPION: {
GET_CHAMPION_ROTATIONS: string;
};
CLASH: {
GET_PLAYERS_BY_SUMMONER: string;
GET_TEAM: string;
GET_TOURNAMENTS: string;
GET_TOURNAMENT: string;
GET_TOURNAMENT_TEAM: string;
};
LEAGUE_EXP: {
GET_LEAGUE_ENTRIES: string;
};
LEAGUE: {
GET_CHALLENGER_BY_QUEUE: string;
GET_ENTRIES_BY_PUUID: string;
GET_ALL_ENTRIES: string;
GET_GRANDMASTER_BY_QUEUE: string;
GET_LEAGUE_BY_ID: string;
GET_MASTER_BY_QUEUE: string;
};
LOL_CHALLENGES: {
GET_CONFIG: string;
GET_PERCENTILES: string;
GET_CONFIG_BY_ID: string;
GET_LEADERBOARD_BY_ID: string;
GET_PERCENTILES_BY_ID: string;
GET_PLAYER_DATA_BY_PUUID: string;
};
LOL_STATUS: {
GET_PLATFORM_DATA: string;
};
LOR_DECK: {
GET_DECKS_FOR_PLAYER: string;
POST_CREATE_DECK_FOR_PLAYER: string;
};
LOR_INVENTORY: {
GET_CARDS_OWNED_BY_PLAYER: string;
};
LOR_MATCH: {
GET_MATCH_IDS_BY_PUUID: string;
GET_MATCH_BY_ID: string;
};
LOR_RANKED: {
GET_MASTER_TIER: string;
};
LOR_STATUS_V1: {
GET_PLATFORM_DATA: string;
};
MATCH_V5: {
GET_IDS_BY_PUUID: string;
GET_MATCH_BY_ID: string;
GET_MATCH_TIMELINE_BY_ID: string;
};
SPECTATOR_TFT_V5: {
GET_GAME_BY_PUUID: string;
GET_FEATURED_GAMES: string;
};
SPECTATOR: {
GET_GAME_BY_SUMMONER_ID: string;
GET_FEATURED_GAMES: string;
};
SUMMONER: {
GET_BY_RSO_PUUID: string;
GET_BY_ACCOUNT_ID: string;
GET_BY_PUUID: string;
GET_BY_SUMMONER_ID: string;
GET_BY_ACCESS_TOKEN: string;
};
TFT_LEAGUE: {
GET_CHALLENGER: string;
GET_ENTRIES_BY_SUMMONER: string;
GET_ALL_ENTRIES: string;
GET_GRANDMASTER: string;
GET_LEAGUE_BY_ID: string;
GET_MASTER: string;
GET_TOP_RATED_LADDER_BY_QUEUE: string;
};
TFT_MATCH: {
GET_MATCH_IDS_BY_PUUID: string;
GET_MATCH_BY_ID: string;
};
TFT_STATUS_V1: {
GET_PLATFORM_DATA: string;
};
TFT_SUMMONER: {
GET_BY_ACCOUNT_ID: string;
GET_BY_ACCESS_TOKEN: string;
GET_BY_PUUID: string;
GET_BY_SUMMONER_ID: string;
};
TOURNAMENT_STUB_V5: {
POST_CREATE_CODES: string;
GET_TOURNAMENT_BY_CODE: string;
GET_LOBBY_EVENTS_BY_TOURNAMENT_CODE: string;
POST_CREATE_PROVIDER: string;
POST_CREATE_TOURNAMENT: string;
};
TOURNAMENT_V5: {
POST_CREATE_CODES: string;
GET_TOURNAMENT_BY_CODE: string;
PUT_TOURNAMENT_CODE: string;
GET_TOURNAMENT_GAME_DETAILS: string;
GET_LOBBY_EVENTS_BY_TOURNAMENT_CODE: string;
POST_CREATE_PROVIDER: string;
POST_CREATE_TOURNAMENT: string;
};
VAL_CONTENT: {
GET_CONTENT: string;
};
VAL_MATCH: {
GET_MATCH_BY_ID: string;
GET_MATCHLIST_BY_PUUID: string;
GET_RECENT_MATCHES_BY_QUEUE: string;
};
VAL_RANKED: {
GET_LEADERBOARD_BY_QUEUE: string;
};
VAL_STATUS_V1: {
GET_PLATFORM_DATA: string;
};
}
export declare const METHODS: {
readonly ACCOUNT: {
readonly GET_BY_PUUID: "/riot/account/v1/accounts/by-puuid/:puuid";
readonly GET_BY_RIOT_ID: "/riot/account/v1/accounts/by-riot-id/:gameName/:tagLine";
readonly GET_BY_ACCESS_TOKEN: "/riot/account/v1/accounts/me";
readonly GET_ACTIVE_SHARD_FOR_PLAYER: "/riot/account/v1/active-shards/by-game/:game/by-puuid/:puuid";
};
readonly CHAMPION_MASTERY: {
readonly GET_ALL_CHAMPIONS: "/lol/champion-mastery/v4/champion-masteries/by-puuid/:encryptedPUUID";
readonly GET_CHAMPION_MASTERY: "/lol/champion-mastery/v4/champion-masteries/by-puuid/:encryptedPUUID/by-champion/:championId";
readonly GET_TOP_CHAMPIONS: "/lol/champion-mastery/v4/champion-masteries/by-puuid/:encryptedPUUID/top";
readonly GET_CHAMPION_MASTERY_SCORE: "/lol/champion-mastery/v4/scores/by-puuid/:encryptedPUUID";
};
readonly CHAMPION: {
readonly GET_CHAMPION_ROTATIONS: "/lol/platform/v3/champion-rotations";
};
readonly CLASH: {
readonly GET_PLAYERS_BY_SUMMONER: "/lol/clash/v1/players/by-summoner/:summonerId";
readonly GET_TEAM: "/lol/clash/v1/teams/:teamId";
readonly GET_TOURNAMENTS: "/lol/clash/v1/tournaments";
readonly GET_TOURNAMENT: "/lol/clash/v1/tournaments/:tournamentId";
readonly GET_TOURNAMENT_TEAM: "/lol/clash/v1/tournaments/by-team/:teamId";
};
readonly LEAGUE_EXP: {
readonly GET_LEAGUE_ENTRIES: "/lol/league-exp/v4/entries/:queue/:tier/:division";
};
readonly LEAGUE: {
readonly GET_CHALLENGER_BY_QUEUE: "/lol/league/v4/challengerleagues/by-queue/:queue";
readonly GET_ENTRIES_BY_PUUID: "/lol/league/v4/entries/by-puuid/:puuid";
readonly GET_ALL_ENTRIES: "/lol/league/v4/entries/:queue/:tier/:division";
readonly GET_GRANDMASTER_BY_QUEUE: "/lol/league/v4/grandmasterleagues/by-queue/:queue";
readonly GET_LEAGUE_BY_ID: "/lol/league/v4/leagues/:leagueId";
readonly GET_MASTER_BY_QUEUE: "/lol/league/v4/masterleagues/by-queue/:queue";
};
readonly LOL_CHALLENGES: {
readonly GET_CONFIG: "/lol/challenges/v1/challenges/config";
readonly GET_PERCENTILES: "/lol/challenges/v1/challenges/percentiles";
readonly GET_CONFIG_BY_ID: "/lol/challenges/v1/challenges/:challengeId/config";
readonly GET_LEADERBOARD_BY_ID: "/lol/challenges/v1/challenges/:challengeId/leaderboards/by-level/:level";
readonly GET_PERCENTILES_BY_ID: "/lol/challenges/v1/challenges/:challengeId/percentiles";
readonly GET_PLAYER_DATA_BY_PUUID: "/lol/challenges/v1/player-data/:puuid";
};
readonly LOL_STATUS: {
readonly GET_PLATFORM_DATA: "/lol/status/v4/platform-data";
};
readonly LOR_DECK: {
readonly GET_DECKS_FOR_PLAYER: "/lor/deck/v1/decks/me";
readonly POST_CREATE_DECK_FOR_PLAYER: "/lor/deck/v1/decks/me";
};
readonly LOR_INVENTORY: {
readonly GET_CARDS_OWNED_BY_PLAYER: "/lor/inventory/v1/cards/me";
};
readonly LOR_MATCH: {
readonly GET_MATCH_IDS_BY_PUUID: "/lor/match/v1/matches/by-puuid/:puuid/ids";
readonly GET_MATCH_BY_ID: "/lor/match/v1/matches/:matchId";
};
readonly LOR_RANKED: {
readonly GET_MASTER_TIER: "/lor/ranked/v1/leaderboards";
};
readonly LOR_STATUS_V1: {
readonly GET_PLATFORM_DATA: "/lor/status/v1/platform-data";
};
readonly MATCH_V5: {
readonly GET_IDS_BY_PUUID: "/lol/match/v5/matches/by-puuid/:puuid/ids";
readonly GET_MATCH_BY_ID: "/lol/match/v5/matches/:matchId";
readonly GET_MATCH_TIMELINE_BY_ID: "/lol/match/v5/matches/:matchId/timeline";
};
readonly SPECTATOR_TFT_V5: {
readonly GET_GAME_BY_PUUID: "/lol/spectator/tft/v5/active-games/by-puuid/:puuid";
readonly GET_FEATURED_GAMES: "/lol/spectator/tft/v5/featured-games";
};
readonly SPECTATOR: {
readonly GET_GAME_BY_SUMMONER_ID: "/lol/spectator/v5/active-games/by-summoner/:summonerId";
readonly GET_FEATURED_GAMES: "/lol/spectator/v5/featured-games";
};
readonly SUMMONER: {
readonly GET_BY_RSO_PUUID: "/fulfillment/v1/summoners/by-puuid/:rsoPuuid";
readonly GET_BY_ACCESS_TOKEN: "/lol/summoner/v4/summoners/me";
readonly GET_BY_ACCOUNT_ID: "/lol/summoner/v4/summoners/by-account/:accountId";
readonly GET_BY_PUUID: "/lol/summoner/v4/summoners/by-puuid/:puuid";
readonly GET_BY_SUMMONER_ID: "/lol/summoner/v4/summoners/:summonerId";
};
readonly TFT_LEAGUE: {
readonly GET_CHALLENGER: "/tft/league/v1/challenger";
readonly GET_ENTRIES_BY_SUMMONER: "/tft/league/v1/entries/by-summoner/:summonerId";
readonly GET_ALL_ENTRIES: "/tft/league/v1/entries/:tier/:division";
readonly GET_GRANDMASTER: "/tft/league/v1/grandmaster";
readonly GET_LEAGUE_BY_ID: "/tft/league/v1/leagues/:leagueId";
readonly GET_MASTER: "/tft/league/v1/master";
readonly GET_TOP_RATED_LADDER_BY_QUEUE: "/tft/league/v1/rated-ladders/:queue/top";
};
readonly TFT_MATCH: {
readonly GET_MATCH_IDS_BY_PUUID: "/tft/match/v1/matches/by-puuid/:puuid/ids";
readonly GET_MATCH_BY_ID: "/tft/match/v1/matches/:matchId";
};
readonly TFT_STATUS_V1: {
readonly GET_PLATFORM_DATA: "/tft/status/v1/platform-data";
};
readonly TFT_SUMMONER: {
readonly GET_BY_ACCOUNT_ID: "/tft/summoner/v1/summoners/by-account/:accountId";
readonly GET_BY_PUUID: "/tft/summoner/v1/summoners/by-puuid/:puuid";
readonly GET_BY_ACCESS_TOKEN: "/tft/summoner/v1/summoners/me";
readonly GET_BY_SUMMONER_ID: "/tft/summoner/v1/summoners/:summonerId";
};
readonly TOURNAMENT_STUB_V5: {
readonly POST_CREATE_CODES: "/lol/tournament-stub/v5/codes";
readonly GET_TOURNAMENT_BY_CODE: "/lol/tournament-stub/v5/codes/:tournamentCode";
readonly GET_LOBBY_EVENTS_BY_TOURNAMENT_CODE: "/lol/tournament-stub/v5/lobby-events/by-code/:tournamentCode";
readonly POST_CREATE_PROVIDER: "/lol/tournament-stub/v5/providers";
readonly POST_CREATE_TOURNAMENT: "/lol/tournament-stub/v5/tournaments";
};
readonly TOURNAMENT_V5: {
readonly POST_CREATE_CODES: "/lol/tournament/v5/codes";
readonly GET_TOURNAMENT_BY_CODE: "/lol/tournament/v5/codes/:tournamentCode";
readonly PUT_TOURNAMENT_CODE: "/lol/tournament/v5/codes/:tournamentCode";
readonly GET_TOURNAMENT_GAME_DETAILS: "/lol/tournament/v5/games/by-code/:tournamentCode";
readonly GET_LOBBY_EVENTS_BY_TOURNAMENT_CODE: "/lol/tournament/v5/lobby-events/by-code/:tournamentCode";
readonly POST_CREATE_PROVIDER: "/lol/tournament/v5/providers";
readonly POST_CREATE_TOURNAMENT: "/lol/tournament/v5/tournaments";
};
readonly VAL_CONTENT: {
readonly GET_CONTENT: "/val/content/v1/contents";
};
readonly VAL_MATCH: {
readonly GET_MATCH_BY_ID: "/val/match/v1/matches/:matchId";
readonly GET_MATCHLIST_BY_PUUID: "/val/match/v1/matchlists/by-puuid/:puuid";
readonly GET_RECENT_MATCHES_BY_QUEUE: "/val/match/v1/recent-matches/by-queue/:queue";
};
readonly VAL_RANKED: {
readonly GET_LEADERBOARD_BY_QUEUE: "/val/ranked/v1/leaderboards/by-act/:actId";
};
readonly VAL_STATUS_V1: {
readonly GET_PLATFORM_DATA: "/val/status/v1/platform-data";
};
};