Skip to content

Commit

Permalink
refactor: remove top-level key from response, making it less nested (#16
Browse files Browse the repository at this point in the history
)
  • Loading branch information
Qrzy authored Aug 21, 2023
1 parent 897a32a commit 13ddaef
Show file tree
Hide file tree
Showing 24 changed files with 305 additions and 326 deletions.
4 changes: 3 additions & 1 deletion src/client/getBggApiClient.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,9 @@ export function getBggApiClient(resource: ResourceName, timeout?: number) {
responseType: 'text',
signal: controller.signal,
async onResponse({ response }: FetchContext & { response: FetchResponse<'text'> }) {
response._data = await xmlParser.parse(response._data)
// get rid of the very root element of the response
const parsedResponse: any = await xmlParser.parse(response._data)
response._data = parsedResponse[Object.keys(parsedResponse).shift()!]
},
})

Expand Down
164 changes: 81 additions & 83 deletions src/wrappers/getBggCollection.ts
Original file line number Diff line number Diff line change
Expand Up @@ -45,94 +45,92 @@ export interface BggCollectionParams {
}

export interface BggCollectionResponse {
items: {
item: {
name: {
text: string
sortindex: number
}
originalname: string
yearpublished: number
image: string
thumbnail: string
stats: {
rating: {
usersrated: OfValue<number>
average: OfValue<number>
bayesaverage: OfValue<number>
stddev: OfValue<number>
median: OfValue<number>
ranks: {
rank: {
type: 'subtype' | 'family' | string
id: number
name: string
friendlyname: string
value: number
bayesaverage: number
}[]
}
value: string
}
minplayers: 2
maxplayers: 2
minplaytime: 150
maxplaytime: 150
playingtime: 150
numowned: 4434
}
status: {
own: ZeroOrOne
prevowned: ZeroOrOne
fortrade: ZeroOrOne
want: ZeroOrOne
wanttoplay: ZeroOrOne
wanttobuy: ZeroOrOne
wishlist: ZeroOrOne
wishlistpriority?: 1 | 2 | 3 | 4 | 5
preordered: ZeroOrOne
lastmodified: string
}
numlpays: number
version?: {
item: {
thumbnail: string
image: string
link: {
type:
| 'boardgameversion'
| 'boardgamepublisher'
| 'language'
| string
item: {
name: {
text: string
sortindex: number
}
originalname: string
yearpublished: number
image: string
thumbnail: string
stats: {
rating: {
usersrated: OfValue<number>
average: OfValue<number>
bayesaverage: OfValue<number>
stddev: OfValue<number>
median: OfValue<number>
ranks: {
rank: {
type: 'subtype' | 'family' | string
id: number
value: string
inbound?: boolean
name: string
friendlyname: string
value: number
bayesaverage: number
}[]
name: {
type: 'primary' | string
sortindex: number
value: string
}
yearpublished: OfValue<number>
productcode: OfValue<string>
width: OfValue<number>
length: OfValue<number>
depth: OfValue<number>
weight: OfValue<number>
type: 'boardgameversion' | string
}
value: string
}
minplayers: 2
maxplayers: 2
minplaytime: 150
maxplaytime: 150
playingtime: 150
numowned: 4434
}
status: {
own: ZeroOrOne
prevowned: ZeroOrOne
fortrade: ZeroOrOne
want: ZeroOrOne
wanttoplay: ZeroOrOne
wanttobuy: ZeroOrOne
wishlist: ZeroOrOne
wishlistpriority?: 1 | 2 | 3 | 4 | 5
preordered: ZeroOrOne
lastmodified: string
}
numlpays: number
version?: {
item: {
thumbnail: string
image: string
link: {
type:
| 'boardgameversion'
| 'boardgamepublisher'
| 'language'
| string
id: number
value: string
inbound?: boolean
}[]
name: {
type: 'primary' | string
sortindex: number
value: string
}
yearpublished: OfValue<number>
productcode: OfValue<string>
width: OfValue<number>
length: OfValue<number>
depth: OfValue<number>
weight: OfValue<number>
type: 'boardgameversion' | string
id: number
}
objecttype: 'thing' | string
objectid: number
subtype: string
collid: number
}[]
totalitems: number
termsofuse: string
pubdate: string
[prop: string]: unknown
}
}
objecttype: 'thing' | string
objectid: number
subtype: string
collid: number
}[]
totalitems: number
termsofuse: string
pubdate: string
[prop: string]: unknown
}

export function getBggCollection(
Expand Down
42 changes: 21 additions & 21 deletions src/wrappers/getBggFamily.ts
Original file line number Diff line number Diff line change
@@ -1,34 +1,34 @@
import { bggXmlApiClient } from '../client'
import type { BggFamilyType } from '../types'
import type { BggFamilyType, SingleOrMany } from '../types'

export interface BggFamilyParams {
id?: number | number[] | string
type?: BggFamilyType
}

interface NewType {
type: 'primary' | string
sortindex: number
value: string
}

export interface BggFamilyResponse {
items: {
item: {
thumbnail: string
image: string
name: {
type: 'primary' | string
sortindex: number
value: string
}
description: string
link: {
type: 'boardgamefamily' | string
id: number
value: string
inbound: boolean
}[]
item: SingleOrMany<{
thumbnail: string
image: string
name: NewType
description: string
link: {
type: 'boardgamefamily' | string
[prop: string]: unknown
}
termsofuse: string
id: number
value: string
inbound: boolean
}[]
type: 'boardgamefamily' | string
[prop: string]: unknown
}
}>
termsofuse: string
[prop: string]: unknown
}

export function getBggFamily(params: BggFamilyParams): Promise<BggFamilyResponse> {
Expand Down
35 changes: 16 additions & 19 deletions src/wrappers/getBggForum.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,28 +6,25 @@ export interface BggForumParams {
}

export interface BggForumResponse {
forum: {
threads: {
thread: {
id: number
subject: string
author: string
numarticles: number
postdate: string
lastpostdate: string
[prop: string]: unknown
}[]
threads: {
thread: {
id: number
subject: string
author: string
numarticles: number
postdate: string
lastpostdate: string
[prop: string]: unknown
}
id: number
title: string
numthreads: number
numposts: number
lastpostdate: string
noposting: number
termsofuse: string
}[]
[prop: string]: unknown
}
id: number
title: string
numthreads: number
numposts: number
lastpostdate: string
noposting: number
termsofuse: string
[prop: string]: unknown
}

Expand Down
47 changes: 22 additions & 25 deletions src/wrappers/getBggGeeklist.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,35 +17,32 @@ interface GeeklistItemComment {
}

export interface GeeklistResponse {
geeklist: {
postdate: string
postdate_timestamp: number
editdate: string
editdate_timestamp: number
thumbs: number
numitems: number
username: string
title: string
description: string
item: {
body: string
comment: GeeklistItemComment | GeeklistItemComment[]
id: number
objecttype: 'thing' | string
subtype: 'boardgame' | 'boardgameaccessory' | string
objectid: number
objectname: string
username: string
postdate: string
postdate_timestamp: number
editdate: string
editdate_timestamp: number
thumbs: number
numitems: number
username: string
title: string
description: string
item: {
body: string
comment: GeeklistItemComment | GeeklistItemComment[]
id: number
objecttype: 'thing' | string
subtype: 'boardgame' | 'boardgameaccessory' | string
objectid: number
objectname: string
username: string
postdate: string
editdate: string
thumbs: number
imageid: number
[prop: string]: unknown
}[]
id: number
termsofuse: string
imageid: number
[prop: string]: unknown
}
}[]
id: number
termsofuse: string
[prop: string]: unknown
}

Expand Down
Loading

0 comments on commit 13ddaef

Please sign in to comment.