3
3
import axios from "axios" ;
4
4
import createHmac from "create-hmac" ;
5
5
import OAuth from "oauth-1.0a" ;
6
+ import Url from "url-parse" ;
6
7
7
8
/**
8
9
* WooCommerce REST API wrapper
@@ -61,25 +62,24 @@ export default class WooCommerceRestApi {
61
62
/**
62
63
* Parse params object.
63
64
*
64
- * @param {String } params
65
- * @param {URLSearchParams } searchParams
65
+ * @param {Object } params
66
+ * @param {Object } query
66
67
*/
67
- _parseParamsObject ( params , searchParams ) {
68
+ _parseParamsObject ( params , query ) {
68
69
for ( const key in params ) {
69
70
const value = params [ key ] ;
70
71
71
72
if ( typeof value === "object" ) {
72
- // parseParamsObject(value, searchParams);
73
73
for ( const prop in value ) {
74
- searchParams . set (
75
- key . toString ( ) + "[" + prop . toString ( ) + "]" ,
76
- value [ prop ]
77
- ) ;
74
+ const itemKey = key . toString ( ) + "[" + prop . toString ( ) + "]" ;
75
+ query [ itemKey ] = value [ prop ] ;
78
76
}
79
77
} else {
80
- searchParams . set ( key , value ) ;
78
+ query [ key ] = value ;
81
79
}
82
80
}
81
+
82
+ return query ;
83
83
}
84
84
85
85
/**
@@ -96,17 +96,17 @@ export default class WooCommerceRestApi {
96
96
return url ;
97
97
}
98
98
99
- const query = new URL ( url ) . searchParams ;
99
+ const query = new Url ( url , null , true ) . query ;
100
100
const values = [ ] ;
101
101
102
102
let queryString = "" ;
103
103
104
104
// Include params object into URL.searchParams.
105
105
this . _parseParamsObject ( params , query ) ;
106
106
107
- query . forEach ( ( value , key ) => {
107
+ for ( const key in query ) {
108
108
values . push ( key ) ;
109
- } ) ;
109
+ }
110
110
values . sort ( ) ;
111
111
112
112
for ( const i in values ) {
@@ -118,7 +118,7 @@ export default class WooCommerceRestApi {
118
118
. replace ( / % 5 B / g, "[" )
119
119
. replace ( / % 5 D / g, "]" ) ;
120
120
queryString += "=" ;
121
- queryString += encodeURIComponent ( query . get ( values [ i ] ) ) ;
121
+ queryString += encodeURIComponent ( query [ values [ i ] ] ) ;
122
122
}
123
123
124
124
return url . split ( "?" ) [ 0 ] + "?" + queryString ;
@@ -141,7 +141,7 @@ export default class WooCommerceRestApi {
141
141
142
142
// Include port.
143
143
if ( this . port !== "" ) {
144
- const hostname = new URL ( url ) . hostname ;
144
+ const hostname = new Url ( url ) . hostname ;
145
145
146
146
url = url . replace ( hostname , hostname + ":" + this . port ) ;
147
147
}
0 commit comments