diff --git a/lib/cookie.js b/lib/cookie.js index f90d6a71..450ed51a 100644 --- a/lib/cookie.js +++ b/lib/cookie.js @@ -1116,7 +1116,8 @@ class CookieJar { } setCookie(cookie, url, options, cb) { - validators.validate(validators.isNonEmptyString(url), cb, options); + validators.validate(validators.isUrlStringOrObject(url), cb, options); + let err; if (validators.isFunction(url)) { @@ -1314,7 +1315,8 @@ class CookieJar { // RFC6365 S5.4 getCookies(url, options, cb) { - validators.validate(validators.isNonEmptyString(url), cb, url); + validators.validate(validators.isUrlStringOrObject(url), cb, url); + const context = getCookieContext(url); if (validators.isFunction(options)) { cb = options; diff --git a/lib/validators.js b/lib/validators.js index 85581641..a70ad472 100644 --- a/lib/validators.js +++ b/lib/validators.js @@ -59,6 +59,14 @@ function isInstanceStrict(data, prototype) { } } +function isUrlStringOrObject(data) { + return ( + isNonEmptyString(data) || + isObject(data) || // TODO: Check for URL properties that are used. + isInstanceStrict(data, URL) + ); +} + function isInteger(data) { return typeof data === "number" && data % 1 === 0; } @@ -92,4 +100,5 @@ exports.isDate = isDate; exports.isEmptyString = isEmptyString; exports.isString = isString; exports.isObject = isObject; +exports.isUrlStringOrObject = isUrlStringOrObject; exports.validate = validate;