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.
79 lines
1.9 KiB
79 lines
1.9 KiB
class API {
|
|
_fetch = (...all) => fetch(...all)
|
|
|
|
constructor() {
|
|
this.base_url = typeof window !== 'undefined' ? APP_BASE_PATH.replace('/app/', '/api/v1/') : '/api/v1/'
|
|
}
|
|
|
|
async get_status() {
|
|
return this.get_request('status')
|
|
}
|
|
|
|
async get_standings() {
|
|
return this.get_request('league-standings')
|
|
}
|
|
|
|
async get_matchups() {
|
|
return this.get_request('matchups')
|
|
}
|
|
|
|
async get_available_draft_players() {
|
|
return this.get_request('draft-board/available')
|
|
}
|
|
|
|
async draft_player(player_id) {
|
|
return this.post_request('draft-board/draft-player', { player_id })
|
|
}
|
|
|
|
async save_my_team(team_data) {
|
|
return this.post_request('my-team', team_data)
|
|
}
|
|
|
|
async get_my_team() {
|
|
return this.get_request('my-team')
|
|
}
|
|
|
|
async get_my_team_players() {
|
|
return this.get_request('my-team/players')
|
|
}
|
|
|
|
async get_my_team_current_lineup() {
|
|
return this.get_request('my-team/lineup')
|
|
}
|
|
|
|
async save_my_team_lineup(lineup_data) {
|
|
return this.post_request('my-team/lineup', lineup_data)
|
|
}
|
|
|
|
async post_request(parts, data = {}) {
|
|
if ( !Array.isArray(parts) ) parts = [parts]
|
|
|
|
const url = this.build_url(...parts)
|
|
const result = await this._fetch(url, {
|
|
method: 'POST',
|
|
headers: {
|
|
Accept: 'application/json',
|
|
'Content-Type': 'application/json',
|
|
},
|
|
body: JSON.stringify(data),
|
|
})
|
|
|
|
return (await result.json()).data
|
|
}
|
|
|
|
async get_request(...parts) {
|
|
const url = this.build_url(...parts)
|
|
const result = await this._fetch(url)
|
|
return (await result.json()).data
|
|
}
|
|
|
|
build_url(...parts) {
|
|
let url = parts.join('/')
|
|
if ( url.startsWith('/') ) url = url.slice(1)
|
|
return `${this.base_url}${url}`
|
|
}
|
|
}
|
|
|
|
const api = new API()
|
|
export { api }
|