lostisland / sawyer

Secret User Agent of HTTP
MIT License
248 stars 75 forks source link

Add `dig` and `fetch` to `Sawyer::Resource` #74

Closed mrpinsky closed 2 years ago

mrpinsky commented 2 years ago

These convenience methods make it easier to work with Resources as a consumer, especially when they come from APIs that have a lot of nesting. My particular motivation comes from using Octokit, which returns Sawyer::Resources, and I routinely try to dig or fetch from them, at which point my code blows up, and I don't want to convert the whole thing to a hash to get just the one bit of data I need.

Supporting these methods, in addition to [], []=, each, and all the other enumerable methods, allows consumers to treat a Sawyer::Resource effectively as a Hash for the attributes without having to convert it to one and lose the extra behavior that the Resource provides.