@@ -16,7 +16,7 @@ var OPTIONAL_REGEX = /^optional!/;
1616 */
1717module . exports = function pingppMethod ( spec ) {
1818 var commandPath = typeof spec . path == 'function' ? spec . path
19- : utils . makeURLInterpolator ( spec . path || '' ) ;
19+ : utils . makeURLInterpolator ( spec . path || '' ) ;
2020 var requestMethod = ( spec . method || 'GET' ) . toUpperCase ( ) ;
2121 var urlParams = spec . urlParams || [ ] ;
2222
@@ -29,47 +29,52 @@ module.exports = function pingppMethod(spec) {
2929 var data = utils . isObject ( args [ args . length - 1 ] ) ? args . pop ( ) : { } ;
3030 var urlData = this . createUrlData ( ) ;
3131
32- var deferred = this . createDeferred ( callback ) ;
32+ return this . wrapTimeout ( new Promise ( ( function ( resolve , reject ) {
33+ for ( var i = 0 , l = urlParams . length ; i < l ; ++ i ) {
34+ var err ;
3335
34- for ( var i = 0 , l = urlParams . length ; i < l ; ++ i ) {
36+ var arg = args [ 0 ] ;
37+ var param = urlParams [ i ] ;
3538
36- var arg = args [ 0 ] ;
37- var param = urlParams [ i ] ;
39+ var isOptional = OPTIONAL_REGEX . test ( param ) ;
40+ param = param . replace ( OPTIONAL_REGEX , '' ) ;
3841
39- var isOptional = OPTIONAL_REGEX . test ( param ) ;
40- param = param . replace ( OPTIONAL_REGEX , '' ) ;
41-
42- if ( ! arg ) {
43- if ( isOptional ) {
44- urlData [ param ] = '' ;
45- continue ;
42+ if ( ! arg ) {
43+ if ( isOptional ) {
44+ urlData [ param ] = '' ;
45+ continue ;
46+ }
47+ err = new Error ( 'Pingpp: I require argument "' + urlParams [ i ] + '", but I got: ' + arg ) ;
48+ reject ( err ) ;
49+ return ;
4650 }
47- throw new Error ( 'Pingpp: I require argument "' + urlParams [ i ] + '", but I got: ' + arg ) ;
48- }
4951
50- urlData [ param ] = args . shift ( ) ;
51- }
52+ urlData [ param ] = args . shift ( ) ;
53+ }
5254
53- if ( args . length ) {
54- throw new Error (
55- 'Pingpp: Unknown arguments (' + args + '). Did you mean to pass an options object?'
56- ) ;
57- }
55+ if ( args . length ) {
56+ err = new Error (
57+ 'Pingpp: Unknown arguments (' + args + '). Did you mean to pass an options object?'
58+ ) ;
59+ reject ( err ) ;
60+ return ;
61+ }
5862
59- var requestPath = this . createFullPath ( commandPath , urlData ) ;
63+ var requestPath = this . createFullPath ( commandPath , urlData ) ;
6064
61- self . _request ( requestMethod , requestPath , data , auth , function ( err , response ) {
62- if ( err ) {
63- deferred . reject ( err ) ;
64- } else {
65- deferred . resolve (
66- spec . transformResponseData ?
67- spec . transformResponseData ( response ) :
68- response
69- ) ;
65+ function requestCallback ( err , response ) {
66+ if ( err ) {
67+ reject ( err ) ;
68+ } else {
69+ resolve (
70+ spec . transformResponseData ?
71+ spec . transformResponseData ( response ) :
72+ response
73+ ) ;
74+ }
7075 }
71- } ) ;
7276
73- return deferred . promise ;
77+ self . _request ( requestMethod , requestPath , data , auth , requestCallback ) ;
78+ } ) . bind ( this ) ) , callback ) ;
7479 } ;
7580} ;
0 commit comments