bookle 0.0.1 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/bookle.rb +7 -2
- data/lib/bookle/google_books_access_info.rb +10 -12
- data/lib/bookle/google_books_api.rb +25 -12
- data/lib/bookle/google_books_epub.rb +2 -4
- data/lib/bookle/google_books_image_links.rb +3 -5
- data/lib/bookle/google_books_industry_identifier.rb +1 -1
- data/lib/bookle/google_books_item.rb +1 -1
- data/lib/bookle/google_books_list_price.rb +0 -1
- data/lib/bookle/google_books_pdf.rb +2 -4
- data/lib/bookle/google_books_price.rb +3 -5
- data/lib/bookle/google_books_retail_price.rb +0 -1
- data/lib/bookle/google_books_sale_info.rb +7 -9
- data/lib/bookle/google_books_search_info.rb +2 -3
- data/lib/bookle/google_books_volume_info.rb +21 -23
- metadata +17 -17
data/lib/bookle.rb
CHANGED
@@ -1,8 +1,13 @@
|
|
1
1
|
require 'bookle/google_books_api'
|
2
2
|
|
3
|
+
# Enables Ruby code interact with the Google Books API.
|
3
4
|
class Bookle
|
4
|
-
|
5
|
-
|
5
|
+
|
6
|
+
# Returns an instance of the class that interacts with the Google Books API.
|
7
|
+
#
|
8
|
+
# @return [Google::Books::API] -- An instance of the class that interacts with the Google Books API.
|
9
|
+
def self.api(google_books_api_key)
|
6
10
|
Google::Books::API.new(google_books_api_key)
|
7
11
|
end
|
12
|
+
|
8
13
|
end
|
@@ -8,19 +8,17 @@ module Google
|
|
8
8
|
:access_view_status
|
9
9
|
|
10
10
|
def initialize(access_info)
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
end
|
11
|
+
access_info = {} unless access_info
|
12
|
+
@access_country = access_info["country"]
|
13
|
+
@viewability = access_info["viewability"]
|
14
|
+
@embeddable = access_info["embeddable"]
|
15
|
+
@public_domain = access_info["publicDomain"]
|
16
|
+
@text_to_speech_permission = access_info["textToSpeechPermission"]
|
17
|
+
@epub = Google::Books::Epub.new(access_info["epub"])
|
18
|
+
@pdf = Google::Books::Pdf.new(access_info["pdf"])
|
19
|
+
@web_reader_link = access_info["webReaderLink"]
|
20
|
+
@access_view_status = access_info["accessViewStatus"]
|
22
21
|
end
|
23
|
-
|
24
22
|
end
|
25
23
|
end
|
26
24
|
end
|
@@ -31,16 +31,24 @@ module Google
|
|
31
31
|
|
32
32
|
attr_accessor *(GOOGLE_QUERY_KEYWORDS.keys + GOOGLE_OPTIONAL_PARAMETERS.keys).map{|method_name| method_name.to_sym} << :google_books_api_key
|
33
33
|
|
34
|
+
# Instantiates the API for a given Google key.
|
35
|
+
#
|
36
|
+
# @param [String, #read] -- Google API key.
|
37
|
+
# @return [Google::Books::API] -- An API to interact with the Google Books API.
|
34
38
|
def initialize(google_books_api_key)
|
35
39
|
@google_books_api_key = google_books_api_key
|
36
40
|
@total_volumes = 0
|
37
41
|
@volumes = []
|
38
42
|
end
|
39
43
|
|
44
|
+
# Returns a list of accessors that can be used to set the search criteria.
|
45
|
+
#
|
46
|
+
# @return [Array] -- A list of accessors that can be used to set the search criteria.
|
40
47
|
def search_accessors
|
41
48
|
GOOGLE_QUERY_KEYWORDS.keys + GOOGLE_OPTIONAL_PARAMETERS.keys
|
42
49
|
end
|
43
50
|
|
51
|
+
# Clears the search criteria.
|
44
52
|
def clear_search_options
|
45
53
|
search_accessors.each do |method_name|
|
46
54
|
__send__ "#{method_name}=".to_sym, nil
|
@@ -49,21 +57,14 @@ module Google
|
|
49
57
|
nil
|
50
58
|
end
|
51
59
|
|
52
|
-
#
|
53
|
-
# schema = https
|
54
|
-
# host = www.googleapis.com`
|
55
|
-
# path = books/v1/volumes
|
56
|
-
# key marker = key
|
57
|
-
# query marker = q
|
58
|
-
# keyword separator = + (used in build_query_options())
|
60
|
+
# Builds and also lets users query the URI string used to interact with the Google API.
|
59
61
|
def uri_string
|
60
62
|
"https://www.googleapis.com/books/v1/volumes?key=#{@google_books_api_key}#{build_optional_parameters}&q=#{build_query_options}"
|
61
63
|
end
|
62
64
|
|
63
|
-
#
|
64
|
-
#
|
65
|
-
|
66
|
-
# def search(isbn='9780140196092')
|
65
|
+
# Runs the search against the Google API.
|
66
|
+
#
|
67
|
+
# @return [Array] -- An array of volumes (or what the Google API calls "items").
|
67
68
|
def search
|
68
69
|
google_response = nil
|
69
70
|
uri = URI(uri_string)
|
@@ -83,8 +84,11 @@ module Google
|
|
83
84
|
end
|
84
85
|
|
85
86
|
|
86
|
-
#
|
87
|
+
# Updates the SSL certificates file.
|
88
|
+
#
|
89
|
+
# @return [String] -- Either a successful message or an error explanation.
|
87
90
|
def update_cacert_file
|
91
|
+
# cacert = certification authority certificates
|
88
92
|
file_path = cacert_path
|
89
93
|
|
90
94
|
Net::HTTP.start("curl.haxx.se") do |http|
|
@@ -119,6 +123,9 @@ module Google
|
|
119
123
|
|
120
124
|
private
|
121
125
|
|
126
|
+
# Returns a string with optional parameters that the URI string uses to query the Google API.
|
127
|
+
#
|
128
|
+
# @return [String] -- A string with optional parameters that the URI string uses to query the Google API.
|
122
129
|
def build_optional_parameters
|
123
130
|
string = ''
|
124
131
|
|
@@ -132,6 +139,9 @@ module Google
|
|
132
139
|
string
|
133
140
|
end
|
134
141
|
|
142
|
+
# Returns a string with the query string that the URI string uses to query the Google API.
|
143
|
+
#
|
144
|
+
# @return [String] -- A string with the query string that the URI string uses to query the Google API.
|
135
145
|
def build_query_options
|
136
146
|
string = ''
|
137
147
|
|
@@ -146,6 +156,9 @@ module Google
|
|
146
156
|
string.chop
|
147
157
|
end
|
148
158
|
|
159
|
+
# Returns the full path of where the cacert file lives.
|
160
|
+
#
|
161
|
+
# @return [String] -- The full path of where the cacert file lives.
|
149
162
|
def cacert_path
|
150
163
|
File.dirname(`gem which bookle`.chomp) + '/cacert/cacert.pem'
|
151
164
|
end
|
@@ -4,15 +4,13 @@ module Google
|
|
4
4
|
attr_reader :is_available
|
5
5
|
|
6
6
|
def initialize(epub)
|
7
|
-
|
8
|
-
|
9
|
-
end
|
7
|
+
epub = {} unless epub
|
8
|
+
@is_available = epub["isAvailable"]
|
10
9
|
end
|
11
10
|
|
12
11
|
def to_hash
|
13
12
|
{"is_epub_available" => self.is_available}
|
14
13
|
end
|
15
|
-
|
16
14
|
end
|
17
15
|
end
|
18
16
|
end
|
@@ -4,12 +4,10 @@ module Google
|
|
4
4
|
attr_reader :small_thumbnail, :thumbnail
|
5
5
|
|
6
6
|
def initialize(image_links)
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
end
|
7
|
+
image_links = {} unless image_links
|
8
|
+
@small_thumbnail = image_links["smallThumbnail"]
|
9
|
+
@thumbnail = image_links["thumbnail"]
|
11
10
|
end
|
12
|
-
|
13
11
|
end
|
14
12
|
end
|
15
13
|
end
|
@@ -4,6 +4,7 @@ module Google
|
|
4
4
|
attr_reader :type, :identifier
|
5
5
|
|
6
6
|
def initialize(identifier)
|
7
|
+
identifier = {} unless identifier
|
7
8
|
@type = identifier["type"]
|
8
9
|
@identifier = identifier["identifier"]
|
9
10
|
end
|
@@ -11,7 +12,6 @@ module Google
|
|
11
12
|
def to_hash
|
12
13
|
{self.type.downcase => self.identifier}
|
13
14
|
end
|
14
|
-
|
15
15
|
end
|
16
16
|
end
|
17
17
|
end
|
@@ -10,6 +10,7 @@ module Google
|
|
10
10
|
attr_reader :kind, :id, :etag, :self_link, :volume_info, :sale_info, :access_info, :search_info
|
11
11
|
|
12
12
|
def initialize(item)
|
13
|
+
item = {} unless item
|
13
14
|
@kind = item["kind"]
|
14
15
|
@id = item["id"]
|
15
16
|
@etag = item["etag"]
|
@@ -23,7 +24,6 @@ module Google
|
|
23
24
|
def hash
|
24
25
|
Hasherizer.to_hash(self)
|
25
26
|
end
|
26
|
-
|
27
27
|
end
|
28
28
|
end
|
29
29
|
end
|
@@ -4,15 +4,13 @@ module Google
|
|
4
4
|
attr_reader :is_available
|
5
5
|
|
6
6
|
def initialize(pdf)
|
7
|
-
|
8
|
-
|
9
|
-
end
|
7
|
+
pdf = {} unless pdf
|
8
|
+
@is_available = pdf["isAvailable"]
|
10
9
|
end
|
11
10
|
|
12
11
|
def to_hash
|
13
12
|
{"is_pdf_available" => self.is_available}
|
14
13
|
end
|
15
|
-
|
16
14
|
end
|
17
15
|
end
|
18
16
|
end
|
@@ -4,12 +4,10 @@ module Google
|
|
4
4
|
attr_reader :amount, :currency_code
|
5
5
|
|
6
6
|
def initialize(price)
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
end
|
7
|
+
price = {} unless price
|
8
|
+
@amount = price["amount"]
|
9
|
+
@currency_code = price["currencyCode"]
|
11
10
|
end
|
12
|
-
|
13
11
|
end
|
14
12
|
end
|
15
13
|
end
|
@@ -7,16 +7,14 @@ module Google
|
|
7
7
|
attr_reader :sale_country, :saleability, :is_ebook, :list_price, :retail_price, :buy_link
|
8
8
|
|
9
9
|
def initialize(sale_info)
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
end
|
10
|
+
sale_info = {} unless sale_info
|
11
|
+
@sale_country = sale_info["country"]
|
12
|
+
@saleability = sale_info["saleability"]
|
13
|
+
@is_ebook = sale_info["isEbook"]
|
14
|
+
@list_price = Google::Books::ListPrice.new(sale_info["listPrice"])
|
15
|
+
@retail_price = Google::Books::RetailPrice.new(sale_info["retailPrice"])
|
16
|
+
@buy_link = sale_info["buyLink"]
|
18
17
|
end
|
19
|
-
|
20
18
|
end
|
21
19
|
end
|
22
20
|
end
|
@@ -9,30 +9,28 @@ module Google
|
|
9
9
|
:info_link, :canonical_volume_link
|
10
10
|
|
11
11
|
def initialize(volume_info)
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
end
|
12
|
+
volume_info = {} unless volume_info
|
13
|
+
@title = volume_info["title"]
|
14
|
+
@subtitle = volume_info["subtitle"]
|
15
|
+
@authors = volume_info["authors"]
|
16
|
+
@publisher = volume_info["publisher"]
|
17
|
+
@published_date = volume_info["published_date"]
|
18
|
+
@description = volume_info["description"]
|
19
|
+
@industry_identifiers = volume_info["industryIdentifiers"].collect do
|
20
|
+
|i| Google::Books::IndustryIdentifier.new(i)
|
21
|
+
end if volume_info["industryIdentifiers"]
|
22
|
+
@page_count = volume_info["pageCount"]
|
23
|
+
@print_type = volume_info["printType"]
|
24
|
+
@categories = volume_info["categories"]
|
25
|
+
@average_rating = volume_info["averageRating"]
|
26
|
+
@ratings_count = volume_info["ratingsCount"]
|
27
|
+
@content_version = volume_info["contentVersion"]
|
28
|
+
@image_links = Google::Books::ImageLinks.new(volume_info["imageLinks"])
|
29
|
+
@language = volume_info["language"]
|
30
|
+
@preview_link = volume_info["previewLink"]
|
31
|
+
@info_link = volume_info["infoLink"]
|
32
|
+
@canonical_volume_link = volume_info["canonicalVolumeLink"]
|
34
33
|
end
|
35
|
-
|
36
34
|
end
|
37
35
|
end
|
38
36
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bookle
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-03-04 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: json
|
16
|
-
requirement: &
|
16
|
+
requirement: &76971900 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '1.1'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *76971900
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: hasherizer
|
27
|
-
requirement: &
|
27
|
+
requirement: &76970760 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,7 +32,7 @@ dependencies:
|
|
32
32
|
version: '0.0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *76970760
|
36
36
|
description: Allows to search for books within Google Books. This is basically an
|
37
37
|
adapter for the Google Books API for volume searches.
|
38
38
|
email: pepe.hipolito@gmail.com
|
@@ -40,23 +40,23 @@ executables: []
|
|
40
40
|
extensions: []
|
41
41
|
extra_rdoc_files: []
|
42
42
|
files:
|
43
|
-
- lib/bookle/
|
43
|
+
- lib/bookle/google_books_retail_price.rb
|
44
|
+
- lib/bookle/google_books_list_price.rb
|
45
|
+
- lib/bookle/google_books_item.rb
|
46
|
+
- lib/bookle/google_books_price.rb
|
47
|
+
- lib/bookle/google_books_items.rb
|
44
48
|
- lib/bookle/google_books_api.rb
|
45
49
|
- lib/bookle/google_books_epub.rb
|
50
|
+
- lib/bookle/google_books_access_info.rb
|
51
|
+
- lib/bookle/google_books_search_info.rb
|
52
|
+
- lib/bookle/google_books_sale_info.rb
|
46
53
|
- lib/bookle/google_books_image_links.rb
|
47
|
-
- lib/bookle/google_books_industry_identifier.rb
|
48
|
-
- lib/bookle/google_books_item.rb
|
49
|
-
- lib/bookle/google_books_items.rb
|
50
|
-
- lib/bookle/google_books_list_price.rb
|
51
54
|
- lib/bookle/google_books_pdf.rb
|
52
|
-
- lib/bookle/
|
53
|
-
- lib/bookle/google_books_retail_price.rb
|
54
|
-
- lib/bookle/google_books_sale_info.rb
|
55
|
-
- lib/bookle/google_books_search_info.rb
|
55
|
+
- lib/bookle/google_books_industry_identifier.rb
|
56
56
|
- lib/bookle/google_books_volume_info.rb
|
57
57
|
- lib/bookle.rb
|
58
58
|
- lib/cacert/cacert.pem
|
59
|
-
homepage:
|
59
|
+
homepage: https://github.com/pepehipolito/bookle
|
60
60
|
licenses: []
|
61
61
|
post_install_message:
|
62
62
|
rdoc_options: []
|
@@ -76,7 +76,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
76
76
|
version: '0'
|
77
77
|
requirements: []
|
78
78
|
rubyforge_project:
|
79
|
-
rubygems_version: 1.8.
|
79
|
+
rubygems_version: 1.8.17
|
80
80
|
signing_key:
|
81
81
|
specification_version: 3
|
82
82
|
summary: Google Books API volume search.
|