1
1
// https://xivapi.com/docs/Welcome#section-4
2
2
const Lib = require ( './Lib' )
3
- let { firstCapital , cleanContent, correctCase , getCurrCase } = require ( '../utils' )
3
+ let { cleanContent, getCurrCase , makeCSV } = require ( '../utils' )
4
4
5
5
class Content extends Lib {
6
6
constructor ( parent ) {
@@ -9,102 +9,48 @@ class Content extends Lib {
9
9
cleanContent = cleanContent . bind ( parent )
10
10
}
11
11
12
- prices ( id , server , params = { } ) {
12
+ get ( ids , params = { } ) {
13
13
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.' ) )
20
18
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)
42
21
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 )
51
26
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 )
53
30
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 ) } `
61
34
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
+ }
66
36
37
+ this . req ( path , params ) . then ( ( res ) => {
67
38
resolve ( res )
68
39
} ) . catch ( ( err ) => {
69
40
reject ( err )
70
41
} )
71
42
} )
72
43
}
73
44
74
- stock ( category , server , params = { } ) {
45
+ categories ( params = { } ) {
75
46
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
-
83
47
let currCase = getCurrCase ( this . parent . globalParams , params )
84
48
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 ) => {
103
49
this . req (
104
50
'/market/categories' ,
105
51
params
106
52
) . then ( ( res ) => {
107
- res = cleanContent ( res )
53
+ res = cleanContent ( res , currCase )
108
54
109
55
resolve ( res )
110
56
} ) . catch ( ( err ) => {
@@ -117,3 +63,11 @@ class Content extends Lib {
117
63
}
118
64
119
65
module . 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