frostwire/frostwire-desktop — pull request #376 by bill-auger (2014-11-27 20:36:14+00:00)
Title: integrate btdigg search api (issue #198)

initial btdigg implementation (issue #198)
* depends on frostwire-common search-engines branch
* sends GET request to api.btdigg.org and decodes response
* de-serializes JSON response and passes objects to GUI
* displays search results in the GUI
* added documentation for the call chain initiated by search queries
* added some simple GUI acceptance tests

NOTES:
* this feature appears to be working well but is not quite completed and many breadcrumbs left behind but i offer PR for evaluation and critique
* results were hidden because a valid filename extension is required
for a proper result but this is not enforced and so was not obvious
the source of this bug took some digging to uncover and resulted in the callchain document included
the BtDigg results do not contain any filenames only magnet links so this was kludged for now

TODO:
* assert valid file extension for result
* add '.magnet' MediaType or extension to '.torrent' MediaType
* implement paged queries (capped at 10 results for now)
* connect details page (if it is not yet working) and add string for tooltip? in SearchMediator.java like:
static final String ARCHIVEORG_DETAILS_STRING = I18n.tr("View in Archive.org");
* figure out what is a Crawlable to ensure this is the proper *SearchPreformer class for JSON API paged queries
* dry out AbstractTorrentSearchResult sublasses and move AbstractTorrentSearchResult to outer dir