Compare commits

..

11 Commits

4 changed files with 65 additions and 48 deletions

View File

@ -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})`)
return undefined
}
const response = await resp.json()
this.response = response
this.fetched = now
return response
} catch (e) {
console.error(e)
throw new Error('An error occured')
}
}
}

View File

@ -3,9 +3,12 @@ import { List } from "./General";
import LangList from "./LangList";
import Expansion from "./Expansion";
export type SetRequest = SetSingle
export interface SetSingleRaw extends SetSingle {
releaseDate: string
}
export type SetSingle = {
name: string
code: string

View File

@ -1,9 +1,9 @@
{
"name": "@tcgdex/sdk",
"version": "1.4.2",
"version": "1.6.1",
"main": "./tcgdex.js",
"types": "./tcgdex.d.ts",
"repository": "https://git.delta-wings.net/tcgdex/javascript-sdk.git",
"repository": "https://github.com/tcgdex/javascript-sdk.git",
"license": "MIT",
"devDependencies": {
"@types/node-fetch": "2.5.7",

View File

@ -1,8 +1,8 @@
import { Langs } from './interfaces/Langs'
import { SetSingle, SetSimple, SetList } from './interfaces/Set'
import { SetSingle, SetSimple, SetList, SetSingleRaw } from './interfaces/Set'
import { CardSingle, CardList, CardSimple } from './interfaces/Card'
import { ExpansionSingle, ExpansionList } from './interfaces/Expansion'
import RequestWrapper from './Request'
import { Langs } from './interfaces/LangList'
export default class TCGdex {
public static defaultLang: Langs = "en"
@ -25,48 +25,67 @@ 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): Promise<SetSingle> {
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
}