mirror of
https://github.com/tcgdex/javascript-sdk.git
synced 2025-04-22 10:42:10 +00:00
Let the enduser handle not found errors
Signed-off-by: Avior <florian.bouillon@delta-wings.net>
This commit is contained in:
parent
b180369514
commit
c4fff9b370
27
Request.ts
27
Request.ts
@ -23,7 +23,7 @@ export class Request<T = any> {
|
||||
this.url = url
|
||||
}
|
||||
|
||||
public async get(): Promise<T> {
|
||||
public async get(): Promise<T | undefined> {
|
||||
const now = new Date()
|
||||
if (
|
||||
this.fetched &&
|
||||
@ -34,22 +34,17 @@ export class Request<T = any> {
|
||||
}
|
||||
|
||||
// Fetch Response
|
||||
try {
|
||||
const resp = await fetch(this.url, {
|
||||
headers: {
|
||||
"Content-Type": "text/plain"
|
||||
}
|
||||
})
|
||||
if (resp.status !== 200) {
|
||||
throw new Error(`Error request ended with the code (${resp.status})`)
|
||||
const resp = await fetch(this.url, {
|
||||
headers: {
|
||||
"Content-Type": "text/plain"
|
||||
}
|
||||
const response = await resp.json()
|
||||
this.response = response
|
||||
this.fetched = now
|
||||
return response
|
||||
} catch (e) {
|
||||
console.error(e)
|
||||
throw new Error('An error occured')
|
||||
})
|
||||
if (resp.status !== 200) {
|
||||
return undefined
|
||||
}
|
||||
const response = await resp.json()
|
||||
this.response = response
|
||||
this.fetched = now
|
||||
return response
|
||||
}
|
||||
}
|
||||
|
35
tcgdex.ts
35
tcgdex.ts
@ -25,53 +25,68 @@ export default class TCGdex {
|
||||
return this.getBaseUrl()
|
||||
}
|
||||
|
||||
public async getCard(id: string|number, set: string): Promise<CardSingle>;
|
||||
public async getCard(id: string): Promise<CardSingle>;
|
||||
public async getCard(id: string|number, set?: string): Promise<CardSingle> {
|
||||
public async getCard(id: string|number, set: string): Promise<CardSingle | undefined>
|
||||
public async getCard(id: string): Promise<CardSingle | undefined>
|
||||
public async getCard(id: string|number, set?: string): Promise<CardSingle | undefined> {
|
||||
const txt = set ? `sets/${set}` : "cards"
|
||||
const req = this.rwgr<CardSingle>(`${this.gbu()}/${txt}/${id}/`)
|
||||
return req.get()
|
||||
}
|
||||
|
||||
public async getCards(set?: string): Promise<Array<CardSimple>> {
|
||||
public async getCards(set?: string): Promise<Array<CardSimple> | undefined> {
|
||||
if (set) {
|
||||
const setSingle = await this.getSet(set)
|
||||
if (!setSingle) {
|
||||
return undefined
|
||||
}
|
||||
return setSingle.list
|
||||
}
|
||||
console.warn("note: while it's possible to fetch every cards at once it's not recommended as it take much more time than any other requests")
|
||||
const req = this.rwgr<CardList>(`${this.gbu()}/cards/`)
|
||||
const resp = await req.get()
|
||||
if (!resp) {
|
||||
return undefined
|
||||
}
|
||||
return resp.list
|
||||
}
|
||||
|
||||
public async getSet(set: string, transformDate: false): Promise<SetSingleRaw>
|
||||
public async getSet(set: string, transformDate?: true): Promise<SetSingle>
|
||||
public async getSet(set: string, transformDate?: boolean): Promise<SetSingle | SetSingleRaw> {
|
||||
public async getSet(set: string, transformDate: false): Promise<SetSingleRaw | undefined>
|
||||
public async getSet(set: string, transformDate?: true): Promise<SetSingle | undefined>
|
||||
public async getSet(set: string, transformDate?: boolean): Promise<SetSingle | SetSingleRaw | undefined> {
|
||||
const req = this.rwgr<SetSingle>(`${this.gbu()}/sets/${set}/`)
|
||||
const resp = await req.get()
|
||||
if (!resp) {
|
||||
return undefined
|
||||
}
|
||||
if (!transformDate) {
|
||||
return resp as SetSingleRaw
|
||||
}
|
||||
return Object.assign(resp, {releaseDate: new Date(resp.releaseDate)}) as SetSingle
|
||||
}
|
||||
|
||||
public async getExpansion(expansion: string): Promise<ExpansionSingle> {
|
||||
public async getExpansion(expansion: string): Promise<ExpansionSingle | undefined> {
|
||||
const req = this.rwgr<ExpansionSingle>(`${this.gbu()}/expansions/${expansion}/`)
|
||||
return req.get()
|
||||
}
|
||||
|
||||
public async getExpansions(): Promise<ExpansionList> {
|
||||
public async getExpansions(): Promise<ExpansionList | undefined> {
|
||||
const req = this.rwgr<ExpansionList>(`${this.gbu()}/expansions/`)
|
||||
return req.get()
|
||||
}
|
||||
|
||||
public async getSets(expansion?: string): Promise<Array<SetSimple>> {
|
||||
public async getSets(expansion?: string): Promise<Array<SetSimple> | undefined> {
|
||||
if (expansion) {
|
||||
const expansionSingle = await this.getExpansion(expansion)
|
||||
if (!expansionSingle) {
|
||||
return undefined
|
||||
}
|
||||
return expansionSingle.sets
|
||||
}
|
||||
const req = this.rwgr<SetList>(`${this.gbu()}/sets/`)
|
||||
const list = await req.get()
|
||||
if (!list) {
|
||||
return undefined
|
||||
}
|
||||
return list.list
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user