From 3cdc14984567e5e867dd08d099fa341ed05d711e Mon Sep 17 00:00:00 2001 From: Avior Date: Wed, 11 Mar 2020 21:57:40 +0100 Subject: [PATCH] Add new functions Signed-off-by: Avior --- interfaces/Card.ts | 32 +++++++++++++++++--- tcgdex.ts | 75 ++++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 98 insertions(+), 9 deletions(-) diff --git a/interfaces/Card.ts b/interfaces/Card.ts index af10b5f..633bb21 100644 --- a/interfaces/Card.ts +++ b/interfaces/Card.ts @@ -33,10 +33,34 @@ export interface CardSingle { code: string } cardTypes?: { - normal: boolean - reverse: boolean - holo: boolean - firstEd: boolean + /** + * normal card without anything special + * + * + * @type {boolean} consider `undefined` to true + */ + normal?: boolean + /** + * Card which has a holographic background + * but not the picture + * + * @type {boolean} `undefined` === `true` + */ + reverse?: boolean + /** + * Card which has a hologaphic picture + * + * @type {boolean} `undefined` === `false` + */ + holo?: boolean + /** + * Card which can have a `1st ed` icon + * + * only the base expansion should received it + * + * @type {boolean} `undefined` === `false` + */ + firstEd?: boolean } // Pokémon only diff --git a/tcgdex.ts b/tcgdex.ts index 4aab7a5..239e5d4 100644 --- a/tcgdex.ts +++ b/tcgdex.ts @@ -1,8 +1,8 @@ import fetch from 'isomorphic-unfetch' import { Langs } from './interfaces/Langs' -import { SetSingle, SetRequest } from './interfaces/Set' +import { SetSingle, SetRequest, SetList, SetSimple } from './interfaces/Set' import { CardSingle } from './interfaces/Card' -import { ExpansionSingle } from './interfaces/Expansion' +import { ExpansionSingle, ExpansionList } from './interfaces/Expansion' export default class TCGdex { public lang: Langs = "en" @@ -24,7 +24,7 @@ export default class TCGdex { public async getCard(id: string|number, set?: string): Promise { try { const txt = set ? `sets/${set}` : "cards" - const resp = await fetch(`${this.gbu()}/${txt}/${id}`) + const resp = await fetch(`${this.gbu()}/${txt}/${id}/`) if (resp.status !== 200) throw new Error("Card not found") try { return await resp.json() @@ -36,9 +36,34 @@ export default class TCGdex { } } + public async getCards(set?: string) { + if (set) { + try { + const setSingle = await this.getSet(set) + return setSingle.list + } catch (e) { + throw e + } + } + try { + 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 resp = await fetch(`${this.gbu()}/cards/`) + if (resp.status !== 200) { + throw new Error("Could not fetch cards") + } + try { + return resp.json() + } catch (e) { + throw e + } + } catch (e) { + throw e + } + } + public async getSet(set: string): Promise { try { - const resp = await fetch(`${this.gbu()}/sets/${set}`) + const resp = await fetch(`${this.gbu()}/sets/${set}/`) console.log(resp.status) if (resp.status !== 200) throw new Error("Set not found") try { @@ -54,7 +79,7 @@ export default class TCGdex { public async getExpansion(expansion: string): Promise { try { - const resp = await fetch(`${this.gbu()}/expansions/${expansion}`) + const resp = await fetch(`${this.gbu()}/expansions/${expansion}/`) if (resp.status !== 200) throw new Error("Expansion not found") try { return await resp.json() @@ -65,4 +90,44 @@ export default class TCGdex { throw e } } + + public async getExpansions(): Promise { + try { + const resp = await fetch(`${this.gbu()}/expansions/`) + if (resp.status !== 200) throw new Error("Could not fetch expansions") + try { + return await resp.json() + } catch (e) { + throw e + } + } catch (e) { + throw e + } + } + + public async getSets(expansion?: string): Promise> { + if (expansion) { + try { + const expansionSingle = await this.getExpansion(expansion) + return expansionSingle.sets + } catch (e) { + throw e + } + } else { + try { + const resp = await fetch(`${this.gbu()}/sets/`) + if (resp.status !== 200) { + throw new Error("Could not fetch sets") + } + try { + return resp.json() + } catch (e) { + throw e + } + + } catch (e) { + throw e + } + } + } }