danwrong / restler

REST client library for node.js
MIT License
1.99k stars 391 forks source link

Prevent options object from being mutated. Fixes #230. #232

Open theGrue opened 8 years ago

theGrue commented 8 years ago

Restler freely mutates the contents of the options object, causing issues such as #230. This PR uses the already available mixin function to prevent this from happening, allowing multiple calls utilizing the same options object to function. I added two new tests as well, which did not pass before I made the change.

A possible regression due to this change could be a case where someone calls restler.get(url, options) followed by restler.request(url, options). Before this change was made, .get would have populated the options object and made it usable by the .request function, after this change, options will no longer be mutated by the call to .get so the subsequent .request may fail if the options were not sufficiently set in the first place. But I think the good outweighs the bad here, especially for POST/PUT/PATCH functions.