Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import axios from 'axios'
- import format from 'date-fns/format'
- import { BoxScore, PlayerInjury, TeamStatsWithOpponent, Referee, Player } from 'types'
- const scoresBase = axios.create({
- baseURL: 'https://api.sportsdata.io/v3/nba/',
- timeout: 30000,
- headers: { 'Content-Type': 'application/json', 'Ocp-Apim-Subscription-Key': process.env.SPORTSDATA_POST_GAME_KEY },
- })
- const projectionsBase = axios.create({
- baseURL: 'https://api.sportsdata.io/v3/nba/',
- timeout: 30000,
- headers: {
- 'Content-Type': 'application/json',
- 'Ocp-Apim-Subscription-Key': process.env.SPORTSDATA_PROJECTIONS_KEY,
- },
- })
- const apiCall = async (url: string, projection: boolean) => {
- try {
- let response = null
- if (projection) {
- response = await projectionsBase.get(url)
- } else {
- response = await scoresBase.get(url)
- }
- return response
- } catch (err) {
- if (err.response) {
- console.log(err.response.data)
- console.log(err.response.status)
- console.log(err.response.headers)
- } else if (err.request) {
- // The request was made but no response was received
- // `err.request` is an instance of XMLHttpRequest in the browser and an instance of
- // http.ClientRequest in node.js
- console.log(err.request)
- } else {
- // Something happened in setting up the request that triggered an err
- console.log('Error', err.message)
- }
- return null
- }
- }
- const api = {
- getGamesByDate: async () => {
- const date = new Date()
- const dateStr = format(date, 'yyyy-MMM-dd')
- const response = await apiCall(`/scores/json/GamesByDate/${dateStr}`, false)
- return response?.data as any
- },
- getBoxScoreByGameID: async (gameID: number) => {
- const response = await apiCall(`stats/json/BoxScore/${gameID}`, false)
- return response?.data as BoxScore | undefined
- },
- getTeamSeasonStats: async () => {
- const response = await apiCall('/scores/json/TeamSeasonStats/2023', false)
- return response?.data as TeamStatsWithOpponent[] | undefined
- },
- getInjuryList: async () => {
- const response = await apiCall('/projections/json/InjuredPlayers', true)
- return response?.data as PlayerInjury[] | undefined
- },
- getReferees: async () => {
- const response = await apiCall('/scores/json/Referees', false)
- return response?.data as Referee[] | undefined
- },
- getSchedule: async () => {
- const response = await apiCall('/scores/json/Games/2023', false)
- return response?.data as any
- },
- getAllActivePlayers: async () => {
- const response = await apiCall('/scores/json/Players', false)
- return response?.data as Player[] | undefined
- },
- }
- export { api }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement