book_worm 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile.lock +1 -1
- data/README.md +29 -0
- data/lib/book_worm/book.rb +4 -0
- data/lib/book_worm/configuration.rb +11 -0
- data/lib/book_worm/searchable.rb +76 -1
- data/lib/book_worm/version.rb +1 -1
- data/lib/book_worm.rb +3 -0
- metadata +4 -3
data/Gemfile.lock
CHANGED
data/README.md
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
## Usage
|
2
|
+
gem install book_worm
|
3
|
+
|
4
|
+
## Indices
|
5
|
+
|
6
|
+
### Isbn
|
7
|
+
Search on ISBN, value is set the ISBN you are interested in.
|
8
|
+
|
9
|
+
#### Example
|
10
|
+
BookWorm.find(:isbn, "1234567890")
|
11
|
+
|
12
|
+
### Title
|
13
|
+
Keywords search on book title, long title, and latin-ized title for unicode titles.
|
14
|
+
|
15
|
+
#### Example
|
16
|
+
BookWorm.find(:title, "Programming Ruby")
|
17
|
+
|
18
|
+
### Combined
|
19
|
+
Search index that combines titles, authors, and publisher name.
|
20
|
+
|
21
|
+
### Full
|
22
|
+
Search index that includes titles, authors, publisher name, summary, notes, awards information, etc -- practically every bit of textual information ISBNdb.com has about books.
|
23
|
+
|
24
|
+
## Configuration
|
25
|
+
|
26
|
+
BookWorm::Configuration.configure do |settings|
|
27
|
+
settings[:api_key] = "YOUR_ISBNDB_API_KEY"
|
28
|
+
end
|
29
|
+
|
data/lib/book_worm/book.rb
CHANGED
@@ -1,10 +1,21 @@
|
|
1
1
|
module BookWorm
|
2
|
+
|
3
|
+
# == Configuration
|
4
|
+
#
|
5
|
+
# Module for storing configuration settings
|
2
6
|
module Configuration
|
3
7
|
extend self
|
4
8
|
|
5
9
|
attr_accessor :config
|
6
10
|
@config = {}
|
7
11
|
|
12
|
+
# Provides a method client to specify their ISBNDB API key.
|
13
|
+
#
|
14
|
+
# == Example
|
15
|
+
#
|
16
|
+
# BookWorm::Configuration.configure do |c|
|
17
|
+
# c[:api_key] = YOUR_ISBNDB_API_KEY
|
18
|
+
# end
|
8
19
|
def configure
|
9
20
|
yield @config
|
10
21
|
end
|
data/lib/book_worm/searchable.rb
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
module BookWorm
|
2
|
-
require 'book_worm/configuration'
|
3
2
|
require 'book_worm/book'
|
4
3
|
require 'httparty'
|
5
4
|
|
@@ -7,10 +6,32 @@ module BookWorm
|
|
7
6
|
format :xml
|
8
7
|
base_uri 'http://isbndb.com'
|
9
8
|
|
9
|
+
# == Searchable
|
10
|
+
#
|
11
|
+
# A module that implements the basic finder methods for accessing the ISBNdb API
|
12
|
+
#
|
10
13
|
module Searchable
|
11
14
|
|
15
|
+
# == Searchable indices
|
16
|
+
#
|
17
|
+
# These indices represent the BookWorm supported searching methods
|
18
|
+
#
|
12
19
|
INDICES = [:isbn, :title, :combined, :full]
|
13
20
|
|
21
|
+
# Define convenience methods for #find and #find_all.
|
22
|
+
#
|
23
|
+
# == Example Usage
|
24
|
+
#
|
25
|
+
# BookWorm.find_by_isbn("1234567890")
|
26
|
+
# BookWorm.find_by_title("Programming Ruby")
|
27
|
+
# BookWorm.find_by_combined_index("Programming Ruby")
|
28
|
+
# BookWorm.find_by_full_index("Programming Ruby")
|
29
|
+
#
|
30
|
+
# BookWorm.find_all_by_isbn("1234567890")
|
31
|
+
# BookWorm.find_all_by_title("Programming Ruby")
|
32
|
+
# BookWorm.find_all_by_combined_index("Programming Ruby")
|
33
|
+
# BookWorm.find_all_by_full_index("Programming Ruby")
|
34
|
+
#
|
14
35
|
INDICES.each do |index|
|
15
36
|
index_name = (index.to_s =~ /full|combined/ ? "#{index}_index" : index)
|
16
37
|
|
@@ -23,6 +44,32 @@ module BookWorm
|
|
23
44
|
end
|
24
45
|
end
|
25
46
|
|
47
|
+
# Given a valid index and a value, this method returns the first match found
|
48
|
+
# after querying ISBNdb. The default index, :isbn, will be used
|
49
|
+
# in the event that you only supply one argument
|
50
|
+
#
|
51
|
+
# == Example Usage
|
52
|
+
#
|
53
|
+
# Query ISBNdb with an isbn-10
|
54
|
+
# BookWorm.find(:isbn, "1234567890")
|
55
|
+
# BookWorm.find("1234567890")
|
56
|
+
#
|
57
|
+
# Query ISBNdb with an isbn-13
|
58
|
+
# BookWorm.find(:isbn, "1234567890123")
|
59
|
+
# BookWorm.find("1234567890123")
|
60
|
+
#
|
61
|
+
# Query ISBNdb with a title
|
62
|
+
# BookWorm.find(:title, "Programming Ruby")
|
63
|
+
#
|
64
|
+
# Query ISBNdb with a combined index. Search index that combines titles, authors, and
|
65
|
+
# publisher name.
|
66
|
+
# BookWorm.find(:combined, "Programming Ruby")
|
67
|
+
#
|
68
|
+
# Query ISBNdb with a full index. A full index includes titles, authors, publisher
|
69
|
+
# name, summary, notes, awards information, etc -- practically every bit of textual
|
70
|
+
# information ISBNdb.com has about books.
|
71
|
+
# BookWorm.find(:full, "Programming Ruby")
|
72
|
+
#
|
26
73
|
def find(*args)
|
27
74
|
if args.size == 1
|
28
75
|
index = :isbn
|
@@ -34,6 +81,31 @@ module BookWorm
|
|
34
81
|
normalize(query_isbndb(index, value))[0]
|
35
82
|
end
|
36
83
|
|
84
|
+
# Given a valid index and a value, this method returns the all matches found
|
85
|
+
# after querying ISBNdb. The default index, :full, will be used
|
86
|
+
# in the event that you only supply one argument
|
87
|
+
#
|
88
|
+
# == Example Usage
|
89
|
+
#
|
90
|
+
# Query ISBNdb with an isbn-10
|
91
|
+
# BookWorm.find_all(:isbn, "1234567890")
|
92
|
+
#
|
93
|
+
# Query ISBNdb with an isbn-13
|
94
|
+
# BookWorm.find_all(:isbn, "1234567890123")
|
95
|
+
#
|
96
|
+
# Query ISBNdb with a title
|
97
|
+
# BookWorm.find_all(:title, "Programming Ruby")
|
98
|
+
#
|
99
|
+
# Query ISBNdb with a combined index. Search index that combines titles, authors, and
|
100
|
+
# publisher name.
|
101
|
+
# BookWorm.find_all(:combined, "Programming Ruby")
|
102
|
+
#
|
103
|
+
# Query ISBNdb with a full index. A full index includes titles, authors, publisher
|
104
|
+
# name, summary, notes, awards information, etc -- practically every bit of textual
|
105
|
+
# information ISBNdb.com has about books.
|
106
|
+
# BookWorm.find_all(:full, "Programming Ruby")
|
107
|
+
# BookWorm.find("Programming Ruby")
|
108
|
+
#
|
37
109
|
def find_all(*args)
|
38
110
|
if args.size == 1
|
39
111
|
index = :full
|
@@ -47,16 +119,19 @@ module BookWorm
|
|
47
119
|
|
48
120
|
private
|
49
121
|
|
122
|
+
# :nodoc:
|
50
123
|
def query_base
|
51
124
|
"/api/books.xml"
|
52
125
|
end
|
53
126
|
|
127
|
+
# :nodoc:
|
54
128
|
def query_isbndb(index, value)
|
55
129
|
get(query_base, :query => { :index1 => index,
|
56
130
|
:value1 => value,
|
57
131
|
:access_key => Configuration.config[:api_key], })
|
58
132
|
end
|
59
133
|
|
134
|
+
# :nodoc:
|
60
135
|
def normalize(results)
|
61
136
|
begin
|
62
137
|
[results['ISBNdb']['BookList']['BookData']].flatten.collect do |book|
|
data/lib/book_worm/version.rb
CHANGED
data/lib/book_worm.rb
CHANGED
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
version: 0.0.
|
8
|
+
- 4
|
9
|
+
version: 0.0.4
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Tony Schneider
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2011-02-
|
17
|
+
date: 2011-02-14 00:00:00 -05:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -58,6 +58,7 @@ files:
|
|
58
58
|
- .rvmrc
|
59
59
|
- Gemfile
|
60
60
|
- Gemfile.lock
|
61
|
+
- README.md
|
61
62
|
- Rakefile
|
62
63
|
- book_worm.gemspec
|
63
64
|
- lib/book_worm.rb
|