Advertisement
Guest User

Untitled

a guest
Dec 28th, 2022
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import axios from 'axios'
  2. import format from 'date-fns/format'
  3.  
  4. import { BoxScore, PlayerInjury, TeamStatsWithOpponent, Referee, Player } from 'types'
  5.  
  6. const scoresBase = axios.create({
  7.     baseURL: 'https://api.sportsdata.io/v3/nba/',
  8.     timeout: 30000,
  9.     headers: { 'Content-Type': 'application/json', 'Ocp-Apim-Subscription-Key': process.env.SPORTSDATA_POST_GAME_KEY },
  10. })
  11.  
  12. const projectionsBase = axios.create({
  13.     baseURL: 'https://api.sportsdata.io/v3/nba/',
  14.     timeout: 30000,
  15.     headers: {
  16.         'Content-Type': 'application/json',
  17.         'Ocp-Apim-Subscription-Key': process.env.SPORTSDATA_PROJECTIONS_KEY,
  18.     },
  19. })
  20.  
  21. const apiCall = async (url: string, projection: boolean) => {
  22.     try {
  23.         let response = null
  24.         if (projection) {
  25.             response = await projectionsBase.get(url)
  26.         } else {
  27.             response = await scoresBase.get(url)
  28.         }
  29.         return response
  30.     } catch (err) {
  31.         if (err.response) {
  32.             console.log(err.response.data)
  33.             console.log(err.response.status)
  34.             console.log(err.response.headers)
  35.         } else if (err.request) {
  36.             // The request was made but no response was received
  37.             // `err.request` is an instance of XMLHttpRequest in the browser and an instance of
  38.             // http.ClientRequest in node.js
  39.             console.log(err.request)
  40.         } else {
  41.             // Something happened in setting up the request that triggered an err
  42.             console.log('Error', err.message)
  43.         }
  44.         return null
  45.     }
  46. }
  47.  
  48. const api = {
  49.     getGamesByDate: async () => {
  50.         const date = new Date()
  51.         const dateStr = format(date, 'yyyy-MMM-dd')
  52.         const response = await apiCall(`/scores/json/GamesByDate/${dateStr}`, false)
  53.         return response?.data as any
  54.     },
  55.     getBoxScoreByGameID: async (gameID: number) => {
  56.         const response = await apiCall(`stats/json/BoxScore/${gameID}`, false)
  57.         return response?.data as BoxScore | undefined
  58.     },
  59.     getTeamSeasonStats: async () => {
  60.         const response = await apiCall('/scores/json/TeamSeasonStats/2023', false)
  61.         return response?.data as TeamStatsWithOpponent[] | undefined
  62.     },
  63.     getInjuryList: async () => {
  64.         const response = await apiCall('/projections/json/InjuredPlayers', true)
  65.         return response?.data as PlayerInjury[] | undefined
  66.     },
  67.     getReferees: async () => {
  68.         const response = await apiCall('/scores/json/Referees', false)
  69.         return response?.data as Referee[] | undefined
  70.     },
  71.     getSchedule: async () => {
  72.         const response = await apiCall('/scores/json/Games/2023', false)
  73.         return response?.data as any
  74.     },
  75.     getAllActivePlayers: async () => {
  76.         const response = await apiCall('/scores/json/Players', false)
  77.         return response?.data as Player[] | undefined
  78.     },
  79. }
  80.  
  81. export { api }
  82.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement