@@ -3,6 +3,7 @@ var cookieHandler = require(pluginId + '.cookie-handler');
3
3
var messages = require ( pluginId + '.messages' ) ;
4
4
5
5
var validSerializers = [ 'urlencoded' , 'json' , 'utf8' ] ;
6
+ var validHttpMethods = [ 'get' , 'put' , 'post' , 'patch' , 'head' , 'delete' ] ;
6
7
7
8
module . exports = {
8
9
b64EncodeUnicode : b64EncodeUnicode ,
@@ -62,15 +63,60 @@ function onInvalidHeader(handler) {
62
63
} ) ;
63
64
}
64
65
66
+ function checkForValidStringValue ( list , value , onInvalidValueMessage ) {
67
+ if ( getTypeOf ( value ) !== 'String' ) {
68
+ throw new Error ( onInvalidValueMessage + ' ' + list . join ( ', ' ) ) ;
69
+ }
70
+
71
+ value = value . trim ( ) . toLowerCase ( ) ;
72
+
73
+ if ( list . indexOf ( value ) > - 1 ) {
74
+ return value ;
75
+ }
76
+
77
+ throw new Error ( onInvalidValueMessage + ' ' + list . join ( ', ' ) ) ;
78
+ }
79
+
80
+ function checkKeyValuePairObject ( obj , onInvalidValueMessage ) {
81
+ if ( getTypeOf ( obj ) !== 'Object' ) {
82
+ throw new Error ( onInvalidValueMessage ) ;
83
+ }
84
+
85
+ var keys = Object . keys ( obj ) ;
86
+
87
+ for ( var i = 0 ; i < keys . length ; i ++ ) {
88
+ var key = keys [ i ] ;
89
+
90
+ if ( getTypeOf ( obj [ key ] ) !== 'String' ) {
91
+ throw new Error ( onInvalidValueMessage ) ;
92
+ }
93
+ }
94
+
95
+ return obj ;
96
+ }
97
+
98
+ function checkHttpMethod ( method ) {
99
+ return checkForValidStringValue ( validHttpMethods , method , messages . INVALID_HTTP_METHOD ) ;
100
+ }
101
+
65
102
function checkSerializer ( serializer ) {
66
- serializer = serializer || '' ;
67
- serializer = serializer . trim ( ) . toLowerCase ( ) ;
103
+ return checkForValidStringValue ( validSerializers , serializer , messages . INVALID_DATA_SERIALIZER ) ;
104
+ }
68
105
69
- if ( validSerializers . indexOf ( serializer ) > - 1 ) {
70
- return serializer ;
106
+ function checkTimeoutValue ( timeout ) {
107
+ if ( getTypeOf ( timeout ) !== 'Number' || timeout < 0 ) {
108
+ throw new Error ( messages . INVALID_TIMEOUT_VALUE ) ;
71
109
}
72
110
73
- return serializer [ 0 ] ;
111
+ return timeout ;
112
+ }
113
+
114
+ function checkHeadersObject ( headers ) {
115
+ checkKeyValuePairObject ( headers , messages . INVALID_HEADERS_VALUE ) ;
116
+ }
117
+
118
+ function checkParamsObject ( params ) {
119
+ checkKeyValuePairObject ( params , messages . INVALID_PARAMS_VALUE ) ;
74
120
}
75
121
76
122
function resolveCookieString ( headers ) {
@@ -194,3 +240,16 @@ function handleMissingCallbacks(successFn, failFn) {
194
240
throw new Error ( messages . MANDATORY_FAIL ) ;
195
241
}
196
242
}
243
+
244
+ function handleMissingOptions ( options , globals ) {
245
+ options = options || { } ;
246
+
247
+ return {
248
+ method : checkHttpMethod ( options . method || validHttpMethods [ 0 ] ) ;
249
+ serializer: checkSerializer ( options . serializer || globals . dataSerializer ) ;
250
+ timeout: checkTimeoutValue ( options . timeout || globals . timeoutInSeconds ) ;
251
+ headers: checkHeadersObject ( options . headers || { } ) ;
252
+ params: checkParamsObject ( options . params || { } ) ;
253
+ data: options . data || null ;
254
+ } ;
255
+ }
0 commit comments