Class: Alexandria::BookProviders::WorldCatProvider
- Inherits:
-
WebsiteBasedProvider
- Object
- AbstractProvider
- GenericProvider
- WebsiteBasedProvider
- Alexandria::BookProviders::WorldCatProvider
- Includes:
- Logging
- Defined in:
- lib/alexandria/book_providers/worldcat.rb
Constant Summary collapse
- SITE =
'http://www.worldcat.org'
- BASE_SEARCH_URL =
type, term
"#{SITE}/search?q=%s%s&qt=advanced"
Instance Attribute Summary
Attributes inherited from AbstractProvider
Instance Method Summary collapse
-
#initialize ⇒ WorldCatProvider
constructor
A new instance of WorldCatProvider.
- #search(criterion, type) ⇒ Object
- #url(book) ⇒ Object
Methods included from Logging
Methods inherited from WebsiteBasedProvider
Methods inherited from AbstractProvider
#<=>, abstract?, #abstract?, #action_name, #enabled, #reinitialize, #remove, #toggle_enabled, #transport, unabstract, #variable_name
Constructor Details
#initialize ⇒ WorldCatProvider
Returns a new instance of WorldCatProvider.
45 46 47 48 49 |
# File 'lib/alexandria/book_providers/worldcat.rb', line 45 def initialize super('WorldCat', 'WorldCat') # prefs.add("enabled", _("Enabled"), true, [true,false]) prefs.read end |
Instance Method Details
#search(criterion, type) ⇒ Object
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/alexandria/book_providers/worldcat.rb', line 51 def search(criterion, type) # puts create_search_uri(type, criterion) req = create_search_uri(type, criterion) puts req if $DEBUG html_data = transport.get_response(URI.parse(req)) # Note: I tried to use Alexandria::WWWAgent, # but this caused failures here (empty pages...) # find out how the requests differ # puts html_data.class if type == SEARCH_BY_ISBN parse_result_data(html_data.body, criterion) else results = parse_search_result_data(html_data.body) raise NoResultsError if results.empty? results.map { |result| get_book_from_search_result(result) } end end |
#url(book) ⇒ Object
71 72 73 74 75 76 |
# File 'lib/alexandria/book_providers/worldcat.rb', line 71 def url(book) create_search_uri(SEARCH_BY_ISBN, book.isbn) rescue => ex log.warn { "Cannot create url for book #{book}; #{ex.}" } nil end |