You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
84 lines
2.2 KiB
84 lines
2.2 KiB
import fetch from "node-fetch";
|
|
|
|
// API constants
|
|
const API_KEY = "0c659161aae51ff51a6c0c41c8a591b5";
|
|
const API_HOST = "v3.football.api-sports.io";
|
|
const ROUTE_LIST = {
|
|
LEAGUE: "league",
|
|
PLAYER_LIST: "player-list",
|
|
};
|
|
|
|
/**
|
|
* Get league list
|
|
*
|
|
* @returns - League list
|
|
*/
|
|
async function getLeague(leagueName) {
|
|
return await requestApi(ROUTE_LIST.LEAGUE, { leagueName });
|
|
}
|
|
|
|
/**
|
|
* Get player list
|
|
*
|
|
* @returns - League list
|
|
*/
|
|
async function getPlayerList(leagueId, seasonYear) {
|
|
return await requestApi(ROUTE_LIST.PLAYER_LIST, { leagueId, seasonYear });
|
|
}
|
|
|
|
/**
|
|
* Request api in fonction of route and params
|
|
*
|
|
* @param string route - Route requested
|
|
* @param object paramList - List of params used by route
|
|
*
|
|
* @returns - The API response
|
|
*/
|
|
async function requestApi(route, paramList) {
|
|
var promise = new Promise((resolve, reject) => {
|
|
const { headers, method, url } = getApiParamList(route, paramList);
|
|
fetch(url, { headers, method }).then((response) => {
|
|
response
|
|
.json()
|
|
.then((data) => (response.ok ? resolve(data) : reject(data)));
|
|
});
|
|
});
|
|
|
|
return await promise.then(
|
|
(data) => data.response,
|
|
(err) => console.log(err)
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Get all params used by route
|
|
*
|
|
* @param string route - Route requested
|
|
* @param object paramList - List of params used by route
|
|
*
|
|
* @returns - List of params used to requested API (url, method, headers, apiKeys...)
|
|
*/
|
|
function getApiParamList(route, paramList) {
|
|
let httpOptions = {
|
|
headers: {
|
|
"x-rapidapi-host": API_HOST,
|
|
"x-rapidapi-key": API_KEY,
|
|
"Content-Type": "application/json",
|
|
},
|
|
};
|
|
|
|
switch (route) {
|
|
case ROUTE_LIST.PLAYER_LIST:
|
|
httpOptions.method = "GET";
|
|
httpOptions.url = `https://v3.football.api-sports.io/players?league=${paramList.leagueId}&season=${paramList.seasonYear}`;
|
|
break;
|
|
case ROUTE_LIST.LEAGUE:
|
|
httpOptions.method = "GET";
|
|
httpOptions.url = `https://v3.football.api-sports.io/leagues?name=${paramList.leagueName}`;
|
|
break;
|
|
}
|
|
return httpOptions;
|
|
}
|
|
|
|
|
|
export { getLeague, getPlayerList }; |