Instead of the previous Hash-based scraper outputs, this adds the concept of models and a root object, with scrapers filling in the gaps.
To scrape a profile, you still start with an instance of ProfileScraper. Calling ProfileScraper#scrape returns a BnetScraper::Starcraft2::Profile object now instead of a Hash. In addition to methods instead of hash keys, an additional piece of functionality is the achievements, match_history, and leagues methods. Each of these methods returns an array, however on the first call to these methods it will setup the appropriate scraper object, scrape, and fill in the gaps.
Drilling down even further, for every League object there contains information that can be accessed without scraping beyond the Profile. If you attempt to access additional information, the League object will instantiate a BnetScraper::Starcraft2::LeagueScraper object, grab league information, and map that onto itself.
This fixes #9 although full_scrape still exists, it just eager-loads these scrapers.
Instead of the previous Hash-based scraper outputs, this adds the concept of models and a root object, with scrapers filling in the gaps.
To scrape a profile, you still start with an instance of
ProfileScraper
. CallingProfileScraper#scrape
returns aBnetScraper::Starcraft2::Profile
object now instead of a Hash. In addition to methods instead of hash keys, an additional piece of functionality is theachievements
,match_history
, andleagues
methods. Each of these methods returns an array, however on the first call to these methods it will setup the appropriate scraper object, scrape, and fill in the gaps.Drilling down even further, for every
League
object there contains information that can be accessed without scraping beyond theProfile
. If you attempt to access additional information, theLeague
object will instantiate aBnetScraper::Starcraft2::LeagueScraper
object, grab league information, and map that onto itself.This fixes #9 although full_scrape still exists, it just eager-loads these scrapers.