11// https://xivapi.com/docs/Welcome#section-4
22const Lib = require ( './Lib' )
3- let { firstCapital , cleanContent, correctCase , getCurrCase } = require ( '../utils' )
3+ let { cleanContent, getCurrCase , makeCSV } = require ( '../utils' )
44
55class Content extends Lib {
66 constructor ( parent ) {
@@ -9,102 +9,48 @@ class Content extends Lib {
99 cleanContent = cleanContent . bind ( parent )
1010 }
1111
12- prices ( id , server , params = { } ) {
12+ get ( ids , params = { } ) {
1313 return new Promise ( ( resolve , reject ) => {
14- if ( typeof ( id ) === 'undefined' )
15- reject ( Error ( 'The id must be defined for market prices.' ) )
16- if ( typeof ( server ) === 'undefined' )
17- reject ( Error ( 'The server must be defined for market prices.' ) )
18- if ( ! this . parent . resources . servers . includes ( firstCapital ( server ) ) )
19- reject ( Error ( 'The server is not valid for market prices.' ) )
14+ if ( typeof ( ids ) === 'undefined' )
15+ reject ( Error ( 'The ids must be defined for market get.' ) )
16+ if ( ! params . servers && ! params . dc )
17+ reject ( Error ( 'The servers or dc params must be defined for market get.' ) )
2018
21- let currCase = getCurrCase ( this . parent . globalParams , params )
22-
23- this . req (
24- `/market/${ server } /items/${ id } ` ,
25- params
26- ) . then ( ( res ) => {
27- let item = correctCase ( 'item' , currCase ) ,
28- prices = correctCase ( 'prices' , currCase ) ,
29- town = correctCase ( 'town' , currCase )
30-
31- res [ item ] = cleanContent ( res [ item ] )
32- for ( let i = 0 ; i < res [ prices ] . length ; i ++ ) {
33- res [ prices ] [ i ] [ town ] = cleanContent ( res [ prices ] [ i ] [ town ] )
34- }
35-
36- resolve ( res )
37- } ) . catch ( ( err ) => {
38- reject ( err )
39- } )
40- } )
41- }
19+ let path = '/market/'
20+ //currCase = getCurrCase(this.parent.globalParams, params)
4221
43- history ( id , server , params = { } ) {
44- return new Promise ( ( resolve , reject ) => {
45- if ( typeof ( id ) === 'undefined' )
46- reject ( Error ( 'The id must be defined for market history.' ) )
47- if ( typeof ( server ) === 'undefined' )
48- reject ( Error ( 'The server must be defined for market history.' ) )
49- if ( ! this . parent . resources . servers . includes ( firstCapital ( server ) ) )
50- reject ( Error ( 'The server is not valid for market history.' ) )
22+ if ( ! getSingle ( ids ) ) { //multiple IDs
23+ path += 'items'
24+ params . ids = makeCSV ( ids )
25+ params . servers = makeCSV ( params . servers )
5126
52- let currCase = getCurrCase ( this . parent . globalParams , params )
27+ } else if ( params . dc || ! getSingle ( params . servers ) ) { //single ID, multiple servers
28+ path += `item/${ getSingle ( ids ) } `
29+ params . servers = makeCSV ( params . servers )
5330
54- this . req (
55- `/market/${ server } /items/${ id } /history` ,
56- params
57- ) . then ( ( res ) => {
58- let item = correctCase ( 'item' , currCase ) ,
59- history = correctCase ( 'history' , currCase ) ,
60- purchase_date = correctCase ( 'purchase_date' , currCase )
31+ } else { //single ID & server
32+ let server = getSingle ( params . servers )
33+ path += `${ server } /item/${ getSingle ( ids ) } `
6134
62- res [ item ] = cleanContent ( res [ item ] )
63- for ( let i = 0 ; i < res [ history ] . length ; i ++ ) {
64- res [ history ] [ i ] [ purchase_date ] = new Date ( res [ history ] [ i ] [ purchase_date ] * 1000 )
65- }
35+ }
6636
37+ this . req ( path , params ) . then ( ( res ) => {
6738 resolve ( res )
6839 } ) . catch ( ( err ) => {
6940 reject ( err )
7041 } )
7142 } )
7243 }
7344
74- stock ( category , server , params = { } ) {
45+ categories ( params = { } ) {
7546 return new Promise ( ( resolve , reject ) => {
76- if ( typeof ( category ) === 'undefined' )
77- reject ( Error ( 'The category must be defined for market stock.' ) )
78- if ( typeof ( server ) === 'undefined' )
79- reject ( Error ( 'The server must be defined for market stock.' ) )
80- if ( ! this . parent . resources . servers . includes ( firstCapital ( server ) ) )
81- reject ( Error ( 'The server is not valid for market stock.' ) )
82-
8347 let currCase = getCurrCase ( this . parent . globalParams , params )
8448
85- this . req (
86- `/market/${ server } /category/${ category } ` ,
87- params
88- ) . then ( ( res ) => {
89- let item = correctCase ( 'item' , currCase )
90- for ( let i = 0 ; i < res . length ; i ++ ) {
91- res [ i ] [ item ] = cleanContent ( res [ i ] [ item ] )
92- }
93-
94- resolve ( res )
95- } ) . catch ( ( err ) => {
96- reject ( err )
97- } )
98- } )
99- }
100-
101- categories ( params = { } ) {
102- return new Promise ( ( resolve , reject ) => {
10349 this . req (
10450 '/market/categories' ,
10551 params
10652 ) . then ( ( res ) => {
107- res = cleanContent ( res )
53+ res = cleanContent ( res , currCase )
10854
10955 resolve ( res )
11056 } ) . catch ( ( err ) => {
@@ -117,3 +63,11 @@ class Content extends Lib {
11763}
11864
11965module . exports = Content
66+
67+ const getSingle = ( x ) => {
68+ if ( typeof x === 'number' || ( typeof x === 'string' && ! x . includes ( ',' ) ) )
69+ return x
70+ if ( x . length === 1 )
71+ return x [ 0 ]
72+ return false
73+ }
0 commit comments