gogoodreads 0.0.4 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +7 -3
- data/Rakefile +9 -12
- data/VERSION +1 -1
- data/gogoodreads.gemspec +20 -18
- data/lib/go_goodreads.rb +9 -0
- data/lib/go_goodreads/attributes.rb +12 -9
- data/lib/go_goodreads/book.rb +19 -6
- data/lib/go_goodreads/request.rb +19 -3
- data/test/attribute_test.rb +30 -0
- data/test/bad_api_key_test.rb +15 -0
- data/test/book_test.rb +33 -0
- data/test/config_test.rb +13 -0
- data/test/fixtures/vcr_cassettes/book_by_isbn.yml +306 -0
- data/test/fixtures/vcr_cassettes/book_by_isbn_bad_api_key.yml +34 -0
- data/test/test_helper.rb +13 -0
- metadata +23 -21
- data/.rspec +0 -1
- data/spec/attribute_spec.rb +0 -32
- data/spec/book_spec.rb +0 -32
- data/spec/config_spec.rb +0 -13
- data/spec/fixtures/vcr_cassettes/book_by_isbn.yml +0 -109
- data/spec/spec_helper.rb +0 -21
data/Gemfile
CHANGED
@@ -1,15 +1,19 @@
|
|
1
1
|
source :rubygems
|
2
2
|
|
3
3
|
gem 'nokogiri'
|
4
|
+
gem 'rest-client'
|
4
5
|
|
5
6
|
group :development do
|
6
|
-
gem 'rspec', '~> 2.3.0'
|
7
7
|
gem 'yard', '~> 0.6.0'
|
8
8
|
gem 'bundler', '~> 1.0.0'
|
9
9
|
gem 'jeweler', '~> 1.5.2'
|
10
|
+
gem 'rcov', '>= 0'
|
10
11
|
gem 'vcr'
|
11
12
|
gem 'webmock'
|
12
|
-
gem 'rcov', '>= 0'
|
13
13
|
end
|
14
14
|
|
15
|
-
gem 'ruby-debug19'
|
15
|
+
gem 'ruby-debug19', :platforms => :mri_19
|
16
|
+
|
17
|
+
platforms :mri_19 do
|
18
|
+
gem 'test-unit', :group => :test
|
19
|
+
end
|
data/Rakefile
CHANGED
@@ -8,6 +8,7 @@ rescue Bundler::BundlerError => e
|
|
8
8
|
exit e.status_code
|
9
9
|
end
|
10
10
|
require 'rake'
|
11
|
+
require 'rake/testtask'
|
11
12
|
|
12
13
|
require 'jeweler'
|
13
14
|
Jeweler::Tasks.new do |gem|
|
@@ -25,18 +26,14 @@ Jeweler::Tasks.new do |gem|
|
|
25
26
|
end
|
26
27
|
Jeweler::RubygemsDotOrgTasks.new
|
27
28
|
|
28
|
-
require '
|
29
|
-
|
30
|
-
RSpec::Core::RakeTask.new(:spec) do |spec|
|
31
|
-
spec.pattern = FileList['spec/**/*_spec.rb']
|
32
|
-
end
|
29
|
+
require 'yard'
|
30
|
+
YARD::Rake::YardocTask.new
|
33
31
|
|
34
|
-
|
35
|
-
|
36
|
-
|
32
|
+
desc "Run test suite."
|
33
|
+
Rake::TestTask.new do |t|
|
34
|
+
t.libs << "test"
|
35
|
+
t.test_files = FileList['test/**/*_test.rb']
|
36
|
+
t.verbose = true
|
37
37
|
end
|
38
38
|
|
39
|
-
task :default => :
|
40
|
-
|
41
|
-
require 'yard'
|
42
|
-
YARD::Rake::YardocTask.new
|
39
|
+
task :default => :test
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.5
|
data/gogoodreads.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{gogoodreads}
|
8
|
-
s.version = "0.0.
|
8
|
+
s.version = "0.0.5"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Tim Medina"]
|
12
|
-
s.date = %q{2011-03-
|
12
|
+
s.date = %q{2011-03-31}
|
13
13
|
s.description = %q{Allows you to progammatically pull book reviews from Goodreads using its API.}
|
14
14
|
s.email = %q{iamteem@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -19,7 +19,6 @@ Gem::Specification.new do |s|
|
|
19
19
|
]
|
20
20
|
s.files = [
|
21
21
|
".document",
|
22
|
-
".rspec",
|
23
22
|
"Gemfile",
|
24
23
|
"LICENSE.txt",
|
25
24
|
"README.rdoc",
|
@@ -44,11 +43,13 @@ Gem::Specification.new do |s|
|
|
44
43
|
"lib/go_goodreads/user.rb",
|
45
44
|
"lib/go_goodreads/user_status.rb",
|
46
45
|
"lib/gogoodreads.rb",
|
47
|
-
"
|
48
|
-
"
|
49
|
-
"
|
50
|
-
"
|
51
|
-
"
|
46
|
+
"test/attribute_test.rb",
|
47
|
+
"test/bad_api_key_test.rb",
|
48
|
+
"test/book_test.rb",
|
49
|
+
"test/config_test.rb",
|
50
|
+
"test/fixtures/vcr_cassettes/book_by_isbn.yml",
|
51
|
+
"test/fixtures/vcr_cassettes/book_by_isbn_bad_api_key.yml",
|
52
|
+
"test/test_helper.rb"
|
52
53
|
]
|
53
54
|
s.homepage = %q{http://github.com/iamteem/gogoodreads}
|
54
55
|
s.licenses = ["MIT"]
|
@@ -56,10 +57,11 @@ Gem::Specification.new do |s|
|
|
56
57
|
s.rubygems_version = %q{1.6.2}
|
57
58
|
s.summary = %q{Goodreads API Ruby Interface}
|
58
59
|
s.test_files = [
|
59
|
-
"
|
60
|
-
"
|
61
|
-
"
|
62
|
-
"
|
60
|
+
"test/attribute_test.rb",
|
61
|
+
"test/bad_api_key_test.rb",
|
62
|
+
"test/book_test.rb",
|
63
|
+
"test/config_test.rb",
|
64
|
+
"test/test_helper.rb"
|
63
65
|
]
|
64
66
|
|
65
67
|
if s.respond_to? :specification_version then
|
@@ -67,37 +69,37 @@ Gem::Specification.new do |s|
|
|
67
69
|
|
68
70
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
69
71
|
s.add_runtime_dependency(%q<nokogiri>, [">= 0"])
|
72
|
+
s.add_runtime_dependency(%q<rest-client>, [">= 0"])
|
70
73
|
s.add_runtime_dependency(%q<ruby-debug19>, [">= 0"])
|
71
|
-
s.add_development_dependency(%q<rspec>, ["~> 2.3.0"])
|
72
74
|
s.add_development_dependency(%q<yard>, ["~> 0.6.0"])
|
73
75
|
s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
|
74
76
|
s.add_development_dependency(%q<jeweler>, ["~> 1.5.2"])
|
77
|
+
s.add_development_dependency(%q<rcov>, [">= 0"])
|
75
78
|
s.add_development_dependency(%q<vcr>, [">= 0"])
|
76
79
|
s.add_development_dependency(%q<webmock>, [">= 0"])
|
77
|
-
s.add_development_dependency(%q<rcov>, [">= 0"])
|
78
80
|
s.add_runtime_dependency(%q<nokogiri>, [">= 0"])
|
79
81
|
else
|
80
82
|
s.add_dependency(%q<nokogiri>, [">= 0"])
|
83
|
+
s.add_dependency(%q<rest-client>, [">= 0"])
|
81
84
|
s.add_dependency(%q<ruby-debug19>, [">= 0"])
|
82
|
-
s.add_dependency(%q<rspec>, ["~> 2.3.0"])
|
83
85
|
s.add_dependency(%q<yard>, ["~> 0.6.0"])
|
84
86
|
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
85
87
|
s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
|
88
|
+
s.add_dependency(%q<rcov>, [">= 0"])
|
86
89
|
s.add_dependency(%q<vcr>, [">= 0"])
|
87
90
|
s.add_dependency(%q<webmock>, [">= 0"])
|
88
|
-
s.add_dependency(%q<rcov>, [">= 0"])
|
89
91
|
s.add_dependency(%q<nokogiri>, [">= 0"])
|
90
92
|
end
|
91
93
|
else
|
92
94
|
s.add_dependency(%q<nokogiri>, [">= 0"])
|
95
|
+
s.add_dependency(%q<rest-client>, [">= 0"])
|
93
96
|
s.add_dependency(%q<ruby-debug19>, [">= 0"])
|
94
|
-
s.add_dependency(%q<rspec>, ["~> 2.3.0"])
|
95
97
|
s.add_dependency(%q<yard>, ["~> 0.6.0"])
|
96
98
|
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
97
99
|
s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
|
100
|
+
s.add_dependency(%q<rcov>, [">= 0"])
|
98
101
|
s.add_dependency(%q<vcr>, [">= 0"])
|
99
102
|
s.add_dependency(%q<webmock>, [">= 0"])
|
100
|
-
s.add_dependency(%q<rcov>, [">= 0"])
|
101
103
|
s.add_dependency(%q<nokogiri>, [">= 0"])
|
102
104
|
end
|
103
105
|
end
|
data/lib/go_goodreads.rb
CHANGED
@@ -9,7 +9,16 @@ module GoGoodreads
|
|
9
9
|
autoload :User, 'go_goodreads/user'
|
10
10
|
autoload :Attributes, 'go_goodreads/attributes'
|
11
11
|
|
12
|
+
# Allows you to set the Goodreads API key to be used when using the API.
|
13
|
+
# @yield [config] Block that setups the configuration of GoGoodreads.
|
14
|
+
# @example
|
15
|
+
# GoGoodreads.configure do |config|
|
16
|
+
# config.api_key = "somesecretapikey"
|
17
|
+
# end
|
12
18
|
def self.configure(&block)
|
13
19
|
yield GoGoodreads::Config
|
14
20
|
end
|
21
|
+
|
22
|
+
|
23
|
+
class BadApiKey < Exception; end
|
15
24
|
end
|
@@ -7,16 +7,16 @@ module GoGoodreads
|
|
7
7
|
module ClassMethods
|
8
8
|
|
9
9
|
# @param [Symbol] name the name of the attribute
|
10
|
-
# @param [Hash]
|
11
|
-
# @option
|
12
|
-
# @option
|
13
|
-
# @option
|
14
|
-
def attribute(name,
|
10
|
+
# @param [Hash] opts the options to configure the attribute
|
11
|
+
# @option opts [Class] :type the class of the parsed value of the attribute
|
12
|
+
# @option opts [Proc] :using a proc object to be used when finding the value in an xml node
|
13
|
+
# @option opts [Symbol] :map_from a symbol where the value is placed when calling to_attributes!
|
14
|
+
def attribute(name, opts = {})
|
15
15
|
default_options = { :type => String, :map_from => name }
|
16
|
-
|
17
|
-
|
16
|
+
setting = default_options.merge(opts)
|
17
|
+
setting[:using] ||= lambda {|xml, from| (xml > from.to_s).text }
|
18
18
|
@attributes ||= {}
|
19
|
-
@attributes[name] =
|
19
|
+
@attributes[name] = setting
|
20
20
|
attr name
|
21
21
|
end
|
22
22
|
|
@@ -30,7 +30,9 @@ module GoGoodreads
|
|
30
30
|
map_from = opts[:map_from]
|
31
31
|
callable = opts[:using]
|
32
32
|
val = callable.call(xml, map_from)
|
33
|
-
|
33
|
+
unless val.to_s.empty?
|
34
|
+
attrs[attr] = _convert(val, opts[:type]) rescue val
|
35
|
+
end
|
34
36
|
end
|
35
37
|
|
36
38
|
attrs
|
@@ -40,6 +42,7 @@ module GoGoodreads
|
|
40
42
|
{"true" => true, "false" => false}[val]
|
41
43
|
end
|
42
44
|
|
45
|
+
private
|
43
46
|
def _convert(val, type)
|
44
47
|
if type == ::GoGoodreads::Attributes::Boolean
|
45
48
|
Boolean(val)
|
data/lib/go_goodreads/book.rb
CHANGED
@@ -15,18 +15,24 @@ module GoGoodreads
|
|
15
15
|
attribute :num_pages, :type => Integer
|
16
16
|
attribute :text_reviews_count, :type => Integer
|
17
17
|
attribute :average_rating, :type => Float
|
18
|
+
attribute :data
|
19
|
+
attribute :language_code
|
20
|
+
attribute :publisher
|
21
|
+
attribute :publication_day, :type => Integer
|
22
|
+
attribute :publication_month, :type => Integer
|
23
|
+
attribute :publication_year, :type => Integer
|
18
24
|
|
19
25
|
attr :authors, :reviews
|
20
26
|
|
21
27
|
attr_accessor :current_page
|
22
28
|
|
23
|
-
# @param String isbn ISBN of the book
|
24
|
-
# @param Hash
|
25
|
-
# @option
|
26
|
-
# @
|
27
|
-
def self.show_by_isbn(isbn,
|
29
|
+
# @param [String] isbn ISBN of the book
|
30
|
+
# @param [Hash] opts Option passed to the API call, except the ISBN.
|
31
|
+
# @option opts [Integer] :page (1) Page number
|
32
|
+
# @return [GoGoodreads::Book]
|
33
|
+
def self.show_by_isbn(isbn, opts = {})
|
28
34
|
params = { :isbn => isbn }
|
29
|
-
params.merge!(
|
35
|
+
params.merge!(opts)
|
30
36
|
|
31
37
|
request('/book/isbn', params) do |xml|
|
32
38
|
book = initialize_with_node(xml.root.at('book'))
|
@@ -52,5 +58,12 @@ module GoGoodreads
|
|
52
58
|
def initialize_reviews_with_nodeset(xml)
|
53
59
|
@reviews = xml.map {|n| GoGoodreads::Review.initialize_with_node(n) }
|
54
60
|
end
|
61
|
+
|
62
|
+
|
63
|
+
def publication_date
|
64
|
+
if publication_day && publication_year && publication_month
|
65
|
+
Date.new(publication_year, publication_month, publication_day)
|
66
|
+
end
|
67
|
+
end
|
55
68
|
end
|
56
69
|
end
|
data/lib/go_goodreads/request.rb
CHANGED
@@ -1,24 +1,40 @@
|
|
1
1
|
require 'open-uri'
|
2
2
|
require 'cgi'
|
3
3
|
require 'nokogiri'
|
4
|
+
require 'rest-client'
|
4
5
|
|
5
6
|
module GoGoodreads
|
6
7
|
module Request
|
7
8
|
BASE_URL = "http://www.goodreads.com"
|
8
9
|
|
9
|
-
|
10
|
+
# Does the HTTP request and converting to Nokogiri::XML.
|
11
|
+
# @param [String] path path of the request.
|
12
|
+
# @param [Hash] params Goodreads API params to be passed with the request.
|
13
|
+
# @yield [xml] Consume/parse the xml.
|
14
|
+
def request(path, params = {}, &block)
|
10
15
|
params.merge!(:key => GoGoodreads::Config.api_key)
|
11
16
|
|
12
|
-
|
13
|
-
|
17
|
+
begin
|
18
|
+
r = ::RestClient.get(BASE_URL + path, :params => params)
|
19
|
+
yield Nokogiri::XML(r.to_str)
|
20
|
+
rescue ::RestClient::Exception => ex
|
21
|
+
if ex.http_code == 401
|
22
|
+
raise BadApiKey
|
23
|
+
else
|
24
|
+
raise
|
25
|
+
end
|
26
|
+
end
|
14
27
|
end
|
15
28
|
|
29
|
+
private
|
30
|
+
# Converts String to query string.
|
16
31
|
def to_querystring(params)
|
17
32
|
params.map do |k, v|
|
18
33
|
"#{ k }=#{ CGI.escape(v) }"
|
19
34
|
end.join('&')
|
20
35
|
end
|
21
36
|
|
37
|
+
# build the uri based on the base url, path, and params.
|
22
38
|
def build_uri(path, params)
|
23
39
|
[BASE_URL, path, '?', params].join
|
24
40
|
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
require 'nokogiri'
|
3
|
+
|
4
|
+
class AttributeTest < Test::Unit::TestCase
|
5
|
+
class Thing
|
6
|
+
include GoGoodreads::Resource
|
7
|
+
|
8
|
+
attribute :klazz_id, :map_from => 'id'
|
9
|
+
attribute :page_count, :type => Integer
|
10
|
+
attribute :simple
|
11
|
+
attribute :date_added, :type => Time
|
12
|
+
|
13
|
+
def self.initialize_with_node(xml)
|
14
|
+
new(to_attributes!(xml))
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def setup
|
19
|
+
xml = "<xmlrootResponse><things><thing><id>123</id><page_count>523</page_count><simple><![CDATA[Hello, World!]]></simple><date_added>Fri Jun 01 19:11:54 -0700 2007</date_added></thing></things></xmlrootResponse>"
|
20
|
+
node = ::Nokogiri::XML(xml)
|
21
|
+
@thing = Thing.initialize_with_node(node.search('things > thing').first)
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_parsing
|
25
|
+
assert_equal "123", @thing.klazz_id
|
26
|
+
assert_equal 523, @thing.page_count
|
27
|
+
assert_equal "Hello, World!", @thing.simple
|
28
|
+
assert_equal Time.parse("Fri Jun 01 19:11:54 -0700 2007"), @thing.date_added
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class BadApiKeyTest < Test::Unit::TestCase
|
4
|
+
def test_raise_exception
|
5
|
+
GoGoodreads.configure do |config|
|
6
|
+
config.api_key = "1IlntIwcUm5CpTbQhu7Zf"
|
7
|
+
end
|
8
|
+
|
9
|
+
VCR.use_cassette 'book_by_isbn_bad_api_key' do
|
10
|
+
assert_raise ::GoGoodreads::BadApiKey do
|
11
|
+
GoGoodreads::Book.show_by_isbn("0441172717")
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
data/test/book_test.rb
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class BookTest < Test::Unit::TestCase
|
4
|
+
def setup
|
5
|
+
GoGoodreads.configure do |config|
|
6
|
+
config.api_key = "1IlntIwcUm5CpTbQhu7Zg"
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
def test_show_by_isbn
|
11
|
+
VCR.use_cassette('book_by_isbn') do
|
12
|
+
book = GoGoodreads::Book.show_by_isbn("0441172717")
|
13
|
+
assert_equal "Dune (Dune Chronicles, #1)", book.title
|
14
|
+
assert_equal "0441172717", book.isbn
|
15
|
+
assert_equal "9780441172719", book.isbn13
|
16
|
+
assert_nil book.asin
|
17
|
+
assert_equal "http://photo.goodreads.com/books/1170430859m/53732.jpg", book.image_url
|
18
|
+
assert_equal "http://photo.goodreads.com/books/1170430859s/53732.jpg", book.small_image_url
|
19
|
+
assert_equal %(This Hugo and Nebula Award winner tells the sweeping tale of a desert planet called Arrakis, the focus of an intricate power struggle in a byzantine interstellar empire. Arrakis is the sole source of Melange, the "spice of spices." Melange is necessary for interstellar travel and grants psychic powers and longevity, so whoever controls it wields great influence. The troubles begin when stewardship of Arrakis is transferred by the Emperor from the Harkonnen Noble House to House Atreides. The Harkonnens don't want to give up their privilege, though, and through sabotage and treachery they cast young Duke Paul Atreides out into the planet's harsh environment to die. There he falls in with the Fremen, a tribe of desert dwellers who become the basis of the army with which he will reclaim what's rightfully his. Paul Atreides, though, is far more than just a usurped duke. He might be the end product of a very long-term genetic experiment designed to breed a super human; he might be a messiah. His struggle is at the center of a nexus of powerful people and events, and the repercussions will be felt throughout the Imperium. Dune is one of the most famous science fiction novels ever written, and deservedly so. The setting is elaborate and ornate, the plot labyrinthine, the adventures exciting. Five sequels follow. --Brooks Peck),
|
20
|
+
book.description
|
21
|
+
assert_equal 535, book.num_pages
|
22
|
+
assert_equal 1, book.authors.size
|
23
|
+
assert_equal "http://www.goodreads.com/book/show/53732.Dune", book.url
|
24
|
+
assert_equal "http://www.goodreads.com/book/show/53732.Dune", book.link
|
25
|
+
assert_equal 28, book.reviews.size
|
26
|
+
assert_equal 3.93, book.average_rating
|
27
|
+
assert_equal 345, book.text_reviews_count
|
28
|
+
assert_equal "eng", book.language_code
|
29
|
+
assert_nil book.publisher
|
30
|
+
assert_nil book.publication_date
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
data/test/config_test.rb
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class ConfigureTest < Test::Unit::TestCase
|
4
|
+
def test_api_key_setup
|
5
|
+
GoGoodreads.configure do |config|
|
6
|
+
config.api_key = "someapikey"
|
7
|
+
config.secret = "secret"
|
8
|
+
end
|
9
|
+
|
10
|
+
assert_equal "someapikey", GoGoodreads::Config.api_key
|
11
|
+
assert_equal "secret", GoGoodreads::Config.secret
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,306 @@
|
|
1
|
+
---
|
2
|
+
- !ruby/struct:VCR::HTTPInteraction
|
3
|
+
request: !ruby/struct:VCR::Request
|
4
|
+
method: :get
|
5
|
+
uri: http://www.goodreads.com:80/book/isbn?isbn=0441172717&key=1IlntIwcUm5CpTbQhu7Zg
|
6
|
+
body:
|
7
|
+
headers:
|
8
|
+
accept:
|
9
|
+
- "*/*; q=0.5, application/xml"
|
10
|
+
accept-encoding:
|
11
|
+
- gzip, deflate
|
12
|
+
response: !ruby/struct:VCR::Response
|
13
|
+
status: !ruby/struct:VCR::ResponseStatus
|
14
|
+
code: 200
|
15
|
+
message: OK
|
16
|
+
headers:
|
17
|
+
content-type:
|
18
|
+
- application/xml; charset=utf-8
|
19
|
+
transfer-encoding:
|
20
|
+
- chunked
|
21
|
+
status:
|
22
|
+
- "200"
|
23
|
+
x-powered-by:
|
24
|
+
- Phusion Passenger (mod_rails/mod_rack) 3.0.0
|
25
|
+
etag:
|
26
|
+
- "\"49ffb5c74faae6bc7795908d6d72217a\""
|
27
|
+
x-runtime:
|
28
|
+
- "299"
|
29
|
+
set-cookie:
|
30
|
+
- _session_id=7ff9024bcedf56f29770cb45618116ff; domain=.goodreads.com; path=/; HttpOnly
|
31
|
+
cache-control:
|
32
|
+
- private, max-age=0, must-revalidate
|
33
|
+
server:
|
34
|
+
- nginx/0.8.52 + Phusion Passenger 3.0.0 (mod_rails/mod_rack)
|
35
|
+
content-encoding:
|
36
|
+
- gzip
|
37
|
+
body: !binary |
|
38
|
+
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
|
304
|
+
tFw42g9BQqbcJDj9/2LD0CMhywAA
|
305
|
+
|
306
|
+
http_version: "1.1"
|
@@ -0,0 +1,34 @@
|
|
1
|
+
---
|
2
|
+
- !ruby/struct:VCR::HTTPInteraction
|
3
|
+
request: !ruby/struct:VCR::Request
|
4
|
+
method: :get
|
5
|
+
uri: http://www.goodreads.com:80/book/isbn?isbn=0441172717&key=1IlntIwcUm5CpTbQhu7Zf
|
6
|
+
body:
|
7
|
+
headers:
|
8
|
+
accept:
|
9
|
+
- "*/*; q=0.5, application/xml"
|
10
|
+
accept-encoding:
|
11
|
+
- gzip, deflate
|
12
|
+
response: !ruby/struct:VCR::Response
|
13
|
+
status: !ruby/struct:VCR::ResponseStatus
|
14
|
+
code: 401
|
15
|
+
message: Unauthorized
|
16
|
+
headers:
|
17
|
+
content-type:
|
18
|
+
- text/html; charset=utf-8
|
19
|
+
status:
|
20
|
+
- "401"
|
21
|
+
x-powered-by:
|
22
|
+
- Phusion Passenger (mod_rails/mod_rack) 3.0.0
|
23
|
+
x-runtime:
|
24
|
+
- "8"
|
25
|
+
content-length:
|
26
|
+
- "16"
|
27
|
+
set-cookie:
|
28
|
+
- _session_id=e0e46419d4e0d1cc5e33426bdaf0c94d; domain=.goodreads.com; path=/; HttpOnly
|
29
|
+
cache-control:
|
30
|
+
- no-cache
|
31
|
+
server:
|
32
|
+
- nginx/0.8.52 + Phusion Passenger 3.0.0 (mod_rails/mod_rack)
|
33
|
+
body: Invalid API key.
|
34
|
+
http_version: "1.1"
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
2
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
3
|
+
require 'test/unit'
|
4
|
+
require 'go_goodreads'
|
5
|
+
require 'webmock'
|
6
|
+
require 'vcr'
|
7
|
+
|
8
|
+
VCR.config do |c|
|
9
|
+
c.cassette_library_dir = 'test/fixtures/vcr_cassettes'
|
10
|
+
c.stub_with :webmock
|
11
|
+
# c.default_cassette_options = { :record => :new_episodes }
|
12
|
+
end
|
13
|
+
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: gogoodreads
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.0.
|
5
|
+
version: 0.0.5
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Tim Medina
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-03-
|
13
|
+
date: 2011-03-31 00:00:00 +08:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -25,7 +25,7 @@ dependencies:
|
|
25
25
|
prerelease: false
|
26
26
|
version_requirements: *id001
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: rest-client
|
29
29
|
requirement: &id002 !ruby/object:Gem::Requirement
|
30
30
|
none: false
|
31
31
|
requirements:
|
@@ -36,14 +36,14 @@ dependencies:
|
|
36
36
|
prerelease: false
|
37
37
|
version_requirements: *id002
|
38
38
|
- !ruby/object:Gem::Dependency
|
39
|
-
name:
|
39
|
+
name: ruby-debug19
|
40
40
|
requirement: &id003 !ruby/object:Gem::Requirement
|
41
41
|
none: false
|
42
42
|
requirements:
|
43
|
-
- -
|
43
|
+
- - ">="
|
44
44
|
- !ruby/object:Gem::Version
|
45
|
-
version:
|
46
|
-
type: :
|
45
|
+
version: "0"
|
46
|
+
type: :runtime
|
47
47
|
prerelease: false
|
48
48
|
version_requirements: *id003
|
49
49
|
- !ruby/object:Gem::Dependency
|
@@ -80,7 +80,7 @@ dependencies:
|
|
80
80
|
prerelease: false
|
81
81
|
version_requirements: *id006
|
82
82
|
- !ruby/object:Gem::Dependency
|
83
|
-
name:
|
83
|
+
name: rcov
|
84
84
|
requirement: &id007 !ruby/object:Gem::Requirement
|
85
85
|
none: false
|
86
86
|
requirements:
|
@@ -91,7 +91,7 @@ dependencies:
|
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: *id007
|
93
93
|
- !ruby/object:Gem::Dependency
|
94
|
-
name:
|
94
|
+
name: vcr
|
95
95
|
requirement: &id008 !ruby/object:Gem::Requirement
|
96
96
|
none: false
|
97
97
|
requirements:
|
@@ -102,7 +102,7 @@ dependencies:
|
|
102
102
|
prerelease: false
|
103
103
|
version_requirements: *id008
|
104
104
|
- !ruby/object:Gem::Dependency
|
105
|
-
name:
|
105
|
+
name: webmock
|
106
106
|
requirement: &id009 !ruby/object:Gem::Requirement
|
107
107
|
none: false
|
108
108
|
requirements:
|
@@ -135,7 +135,6 @@ extra_rdoc_files:
|
|
135
135
|
- TODO
|
136
136
|
files:
|
137
137
|
- .document
|
138
|
-
- .rspec
|
139
138
|
- Gemfile
|
140
139
|
- LICENSE.txt
|
141
140
|
- README.rdoc
|
@@ -160,11 +159,13 @@ files:
|
|
160
159
|
- lib/go_goodreads/user.rb
|
161
160
|
- lib/go_goodreads/user_status.rb
|
162
161
|
- lib/gogoodreads.rb
|
163
|
-
-
|
164
|
-
-
|
165
|
-
-
|
166
|
-
-
|
167
|
-
-
|
162
|
+
- test/attribute_test.rb
|
163
|
+
- test/bad_api_key_test.rb
|
164
|
+
- test/book_test.rb
|
165
|
+
- test/config_test.rb
|
166
|
+
- test/fixtures/vcr_cassettes/book_by_isbn.yml
|
167
|
+
- test/fixtures/vcr_cassettes/book_by_isbn_bad_api_key.yml
|
168
|
+
- test/test_helper.rb
|
168
169
|
has_rdoc: true
|
169
170
|
homepage: http://github.com/iamteem/gogoodreads
|
170
171
|
licenses:
|
@@ -179,7 +180,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
179
180
|
requirements:
|
180
181
|
- - ">="
|
181
182
|
- !ruby/object:Gem::Version
|
182
|
-
hash: -
|
183
|
+
hash: -2942027769610112655
|
183
184
|
segments:
|
184
185
|
- 0
|
185
186
|
version: "0"
|
@@ -197,7 +198,8 @@ signing_key:
|
|
197
198
|
specification_version: 3
|
198
199
|
summary: Goodreads API Ruby Interface
|
199
200
|
test_files:
|
200
|
-
-
|
201
|
-
-
|
202
|
-
-
|
203
|
-
-
|
201
|
+
- test/attribute_test.rb
|
202
|
+
- test/bad_api_key_test.rb
|
203
|
+
- test/book_test.rb
|
204
|
+
- test/config_test.rb
|
205
|
+
- test/test_helper.rb
|
data/.rspec
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
--color
|
data/spec/attribute_spec.rb
DELETED
@@ -1,32 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe GoGoodreads::Attributes do
|
4
|
-
before(:all) do
|
5
|
-
class Thing
|
6
|
-
include GoGoodreads::Resource
|
7
|
-
|
8
|
-
attribute :klazz_id, :map_from => 'id'
|
9
|
-
attribute :page_count, :type => Integer
|
10
|
-
attribute :simple
|
11
|
-
attribute :date_added, :type => Time
|
12
|
-
|
13
|
-
def self.initialize_with_node(xml)
|
14
|
-
new(to_attributes!(xml))
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
end
|
19
|
-
|
20
|
-
before(:each) do
|
21
|
-
xml = "<xmlrootResponse><things><thing><id>123</id><page_count>523</page_count><simple><![CDATA[Hello, World!]]></simple><date_added>Fri Jun 01 19:11:54 -0700 2007</date_added></thing></things></xmlrootResponse>"
|
22
|
-
node = Nokogiri::XML(xml)
|
23
|
-
@thing = Thing.initialize_with_node(node.search('things > thing').first)
|
24
|
-
end
|
25
|
-
|
26
|
-
it "parses the attributes from the xml node correctly" do
|
27
|
-
@thing.klazz_id.should == "123"
|
28
|
-
@thing.page_count.should == 523
|
29
|
-
@thing.simple.should == "Hello, World!"
|
30
|
-
@thing.date_added.should == Time.parse("Fri Jun 01 19:11:54 -0700 2007")
|
31
|
-
end
|
32
|
-
end
|
data/spec/book_spec.rb
DELETED
@@ -1,32 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe GoGoodreads::Book do
|
4
|
-
use_vcr_cassette 'book_by_isbn'
|
5
|
-
|
6
|
-
before(:each) do
|
7
|
-
GoGoodreads.configure do |config|
|
8
|
-
config.api_key = "1IlntIwcUm5CpTbQhu7Zg"
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
describe ".show_by_isbn" do
|
13
|
-
context "isbn is 0441172717" do
|
14
|
-
subject { GoGoodreads::Book.show_by_isbn("0441172717") }
|
15
|
-
|
16
|
-
its(:title) { should == "Dune (Dune Chronicles, #1)" }
|
17
|
-
its(:isbn) { should == "0441172717" }
|
18
|
-
its(:isbn13) { should == "9780441172719" }
|
19
|
-
its(:asin) { should be_nil }
|
20
|
-
its(:image_url) { should == "http://photo.goodreads.com/books/1170430859m/53732.jpg" }
|
21
|
-
its(:small_image_url) { should == "http://photo.goodreads.com/books/1170430859s/53732.jpg" }
|
22
|
-
its(:description) { should == %(This Hugo and Nebula Award winner tells the sweeping tale of a desert planet called Arrakis, the focus of an intricate power struggle in a byzantine interstellar empire. Arrakis is the sole source of Melange, the "spice of spices." Melange is necessary for interstellar travel and grants psychic powers and longevity, so whoever controls it wields great influence. The troubles begin when stewardship of Arrakis is transferred by the Emperor from the Harkonnen Noble House to House Atreides. The Harkonnens don't want to give up their privilege, though, and through sabotage and treachery they cast young Duke Paul Atreides out into the planet's harsh environment to die. There he falls in with the Fremen, a tribe of desert dwellers who become the basis of the army with which he will reclaim what's rightfully his. Paul Atreides, though, is far more than just a usurped duke. He might be the end product of a very long-term genetic experiment designed to breed a super human; he might be a messiah. His struggle is at the center of a nexus of powerful people and events, and the repercussions will be felt throughout the Imperium. Dune is one of the most famous science fiction novels ever written, and deservedly so. The setting is elaborate and ornate, the plot labyrinthine, the adventures exciting. Five sequels follow. --Brooks Peck) }
|
23
|
-
its(:num_pages) { should == 535 }
|
24
|
-
its(:authors) { should have(1).items }
|
25
|
-
its(:url) { should == "http://www.goodreads.com/book/show/53732.Dune" }
|
26
|
-
its(:link) { should == "http://www.goodreads.com/book/show/53732.Dune" }
|
27
|
-
its(:reviews) { should have(28).items }
|
28
|
-
its(:average_rating) { should == 3.93 }
|
29
|
-
its(:text_reviews_count) { should == 345 }
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
data/spec/config_spec.rb
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe GoGoodreads, '.configure' do
|
4
|
-
it "should set up the api_key and the secret_key" do
|
5
|
-
GoGoodreads.configure do |config|
|
6
|
-
config.api_key = "someapikey"
|
7
|
-
config.secret = "secret"
|
8
|
-
end
|
9
|
-
|
10
|
-
GoGoodreads::Config.api_key.should == "someapikey"
|
11
|
-
GoGoodreads::Config.secret.should == "secret"
|
12
|
-
end
|
13
|
-
end
|
@@ -1,109 +0,0 @@
|
|
1
|
-
---
|
2
|
-
- !ruby/struct:VCR::HTTPInteraction
|
3
|
-
request: !ruby/struct:VCR::Request
|
4
|
-
method: :get
|
5
|
-
uri: http://www.goodreads.com:80/book/isbn?isbn=0441172717&key=1IlntIwcUm5CpTbQhu7Zg
|
6
|
-
body:
|
7
|
-
headers:
|
8
|
-
response: !ruby/struct:VCR::Response
|
9
|
-
status: !ruby/struct:VCR::ResponseStatus
|
10
|
-
code: 200
|
11
|
-
message: OK
|
12
|
-
headers:
|
13
|
-
content-type:
|
14
|
-
- application/xml; charset=utf-8
|
15
|
-
status:
|
16
|
-
- "200"
|
17
|
-
x-powered-by:
|
18
|
-
- Phusion Passenger (mod_rails/mod_rack) 3.0.0
|
19
|
-
etag:
|
20
|
-
- "\"38c8128410a791eda136304e542392ca\""
|
21
|
-
x-runtime:
|
22
|
-
- "245"
|
23
|
-
content-length:
|
24
|
-
- "52001"
|
25
|
-
set-cookie:
|
26
|
-
- _session_id=88e01ae88a5d8e352ae198cab36cdee0; domain=.goodreads.com; path=/; HttpOnly
|
27
|
-
cache-control:
|
28
|
-
- private, max-age=0, must-revalidate
|
29
|
-
server:
|
30
|
-
- nginx/0.8.52 + Phusion Passenger 3.0.0 (mod_rails/mod_rack)
|
31
|
-
body: "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\
|
32
|
-
<GoodreadsResponse>\n\
|
33
|
-
\t<Request>\n\
|
34
|
-
\t\t<authentication>true</authentication>\n\
|
35
|
-
\t\t\t\t<key><![CDATA[1IlntIwcUm5CpTbQhu7Zg]]></key>\n\
|
36
|
-
\t\t <method><![CDATA[book_isbn]]></method>\n\
|
37
|
-
\t</Request>\n\
|
38
|
-
\t<book>\n <id>53732</id>\n <title><![CDATA[Dune (Dune Chronicles, #1)]]></title>\n <isbn><![CDATA[0441172717]]></isbn>\n <isbn13><![CDATA[9780441172719]]></isbn13>\n <asin><![CDATA[]]></asin>\n <image_url>http://photo.goodreads.com/books/1170430859m/53732.jpg</image_url>\n <small_image_url>http://photo.goodreads.com/books/1170430859s/53732.jpg</small_image_url>\n <publication_year></publication_year>\n <publication_month></publication_month>\n <publication_day></publication_day>\n <publisher></publisher>\n <language_code>eng</language_code>\n <description><![CDATA[This Hugo and Nebula Award winner tells the sweeping tale of a desert planet called Arrakis, the focus of an intricate power struggle in a byzantine interstellar empire. Arrakis is the sole source of Melange, the "spice of spices." Melange is necessary for interstellar travel and grants psychic powers and longevity, so whoever controls it wields great influence. The troubles begin when stewardship of Arrakis is transferred by the Emperor from the Harkonnen Noble House to House Atreides. The Harkonnens don't want to give up their privilege, though, and through sabotage and treachery they cast young Duke Paul Atreides out into the planet's harsh environment to die. There he falls in with the Fremen, a tribe of desert dwellers who become the basis of the army with which he will reclaim what's rightfully his. Paul Atreides, though, is far more than just a usurped duke. He might be the end product of a very long-term genetic experiment designed to breed a super human; he might be a messiah. His struggle is at the center of a nexus of powerful people and events, and the repercussions will be felt throughout the Imperium. Dune is one of the most famous science fiction novels ever written, and deservedly so. The setting is elaborate and ornate, the plot labyrinthine, the adventures exciting. Five sequels follow. --Brooks Peck]]></description>\n <work>\n <best_book_id type=\"integer\">234225</best_book_id>\n <books_count type=\"integer\">109</books_count>\n <desc_user_id type=\"integer\">-30</desc_user_id>\n <id type=\"integer\">3634639</id>\n <media_type>book</media_type>\n <original_language_id nil=\"true\" type=\"integer\"></original_language_id>\n <original_publication_day nil=\"true\" type=\"integer\"></original_publication_day>\n <original_publication_month nil=\"true\" type=\"integer\"></original_publication_month>\n <original_publication_year type=\"integer\">1965</original_publication_year>\n <original_title>Dune</original_title>\n <rating_dist>5:47023|4:31053|3:20374|2:7790|1:6405|total:112645</rating_dist>\n <ratings_count type=\"integer\">113248</ratings_count>\n <ratings_sum type=\"integer\">444715</ratings_sum>\n <reviews_count type=\"integer\">151388</reviews_count>\n <text_reviews_count type=\"integer\">3348</text_reviews_count>\n\
|
39
|
-
</work>\n\n <average_rating><![CDATA[3.93]]></average_rating>\n <num_pages><![CDATA[535]]></num_pages>\n <ratings_count><![CDATA[3474]]></ratings_count>\n <text_reviews_count><![CDATA[345]]></text_reviews_count>\n \n <url><![CDATA[http://www.goodreads.com/book/show/53732.Dune]]></url>\n <link><![CDATA[http://www.goodreads.com/book/show/53732.Dune]]></link>\n <authors>\n <author>\n <id>58</id>\n <name><![CDATA[Frank Herbert]]></name>\n <image_url><![CDATA[http://photo.goodreads.com/authors/1168661521p5/58.jpg]]></image_url>\n <small_image_url><![CDATA[http://photo.goodreads.com/authors/1168661521p2/58.jpg]]></small_image_url>\n <link><![CDATA[http://www.goodreads.com/author/show/58.Frank_Herbert]]></link>\n <average_rating>3.83</average_rating>\n <ratings_count>179357</ratings_count>\n <text_reviews_count>5350</text_reviews_count>\n </author>\n </authors>\n <reviews start=\"1\" end=\"28\" total=\"151269\">\n \n <review>\n <id>38209515</id>\n <user>\n <id>1713956</id>\n <name><![CDATA[Manny]]></name>\n <location><![CDATA[Cambridge, C3, The United Kingdom]]></location>\n <link><![CDATA[http://www.goodreads.com/user/show/1713956-manny]]></link>\n <image_url><![CDATA[http://photo.goodreads.com/users/1227275844p3/1713956.jpg]]></image_url>\n <small_image_url><![CDATA[http://photo.goodreads.com/users/1227275844p2/1713956.jpg]]></small_image_url>\n\
|
40
|
-
</user>\n <rating>4</rating>\n <votes>109</votes>\n\n \n <spoiler_flag>false</spoiler_flag>\n <shelves>\n <shelf name=\"read\" />\n <shelf name=\"science-fiction\" />\n </shelves>\n <recommended_for><![CDATA[]]></recommended_for>\n <recommended_by><![CDATA[]]></recommended_by>\n <started_at></started_at>\n <read_at>Thu Jan 01 00:00:00 -0800 1970</read_at>\n <date_added>Thu Nov 20 06:09:14 -0800 2008</date_added>\n <date_updated>Fri Mar 20 07:16:04 -0700 2009</date_updated>\n <read_count>5</read_count>\n <body>\n <![CDATA[There's a characteristically witty essay by Borges about a man who rewrites <em>Don Quixote</em>, many centuries after Cervantes. He publishes a novel with the same title, containing the same words in the same order. But, as Borges shows you, the different cultural context means it's a completely new book! W...\n <a href=\"http://www.goodreads.com/review/show/38209515\">more...</a>\n ]]>\n </body>\n <comments_count>17</comments_count>\n \n <url><![CDATA[http://www.goodreads.com/review/show/38209515]]></url>\n <link><![CDATA[http://www.goodreads.com/review/show/38209515]]></link>\n\
|
41
|
-
</review>\n\n \n <review>\n <id>140124821</id>\n <user>\n <id>2863914</id>\n <name><![CDATA[Joel]]></name>\n <location><![CDATA[Oak Park, IL]]></location>\n <link><![CDATA[http://www.goodreads.com/user/show/2863914-joel]]></link>\n <image_url><![CDATA[http://photo.goodreads.com/users/1288885128p3/2863914.jpg]]></image_url>\n <small_image_url><![CDATA[http://photo.goodreads.com/users/1288885128p2/2863914.jpg]]></small_image_url>\n\
|
42
|
-
</user>\n <rating>4</rating>\n <votes>15</votes>\n\n \n <spoiler_flag>false</spoiler_flag>\n <shelves>\n <shelf name=\"read\" />\n <shelf name=\"2011\" />\n <shelf name=\"book-club\" />\n <shelf name=\"classics\" />\n <shelf name=\"sci-fi-fantasy\" />\n </shelves>\n <recommended_for><![CDATA[]]></recommended_for>\n <recommended_by><![CDATA[]]></recommended_by>\n <started_at>Fri Jan 28 00:00:00 -0800 2011</started_at>\n <read_at>Fri Mar 11 00:00:00 -0800 2011</read_at>\n <date_added>Tue Jan 11 20:52:44 -0800 2011</date_added>\n <date_updated>Sun Mar 13 12:46:18 -0700 2011</date_updated>\n <read_count></read_count>\n <body>\n <![CDATA[DBR to follow, at Ceridwen's request. She must have used one of her Bene Gesserit tricks on me.\r<br/>\r<br/>***\r<br/>Dune. Dune is a fascinating book. A classic of science-fiction, it plays equally as fantasy and allegory. It is deeply textured, richly layered. And if you want to read a sensible revi...\n <a href=\"http://www.goodreads.com/review/show/140124821\">more...</a>\n ]]>\n </body>\n <comments_count>25</comments_count>\n \n <url><![CDATA[http://www.goodreads.com/review/show/140124821]]></url>\n <link><![CDATA[http://www.goodreads.com/review/show/140124821]]></link>\n\
|
43
|
-
</review>\n\n \n <review>\n <id>23505468</id>\n <user>\n <id>1205220</id>\n <name><![CDATA[Matt]]></name>\n <location><![CDATA[Columbus, OH]]></location>\n <link><![CDATA[http://www.goodreads.com/user/show/1205220-matt]]></link>\n <image_url><![CDATA[http://photo.goodreads.com/users/1216068593p3/1205220.jpg]]></image_url>\n <small_image_url><![CDATA[http://photo.goodreads.com/users/1216068593p2/1205220.jpg]]></small_image_url>\n\
|
44
|
-
</user>\n <rating>5</rating>\n <votes>33</votes>\n\n \n <spoiler_flag>false</spoiler_flag>\n <shelves>\n <shelf name=\"read\" />\n <shelf name=\"fantasy\" />\n <shelf name=\"science-fiction\" />\n </shelves>\n <recommended_for><![CDATA[]]></recommended_for>\n <recommended_by><![CDATA[]]></recommended_by>\n <started_at></started_at>\n <read_at>Sun Jul 01 00:00:00 -0700 1984</read_at>\n <date_added>Mon Jun 02 06:54:06 -0700 2008</date_added>\n <date_updated>Thu Sep 04 09:13:08 -0700 2008</date_updated>\n <read_count></read_count>\n <body>\n <![CDATA[Like most of my five star books, I\xE2\x80\x99ve read Dune multiple times. In fact, I\xE2\x80\x99d say that what makes a book more than just enjoyable and instead truly amazing is that you want to read it more than once and are rewarded for doing so. I\xE2\x80\x99ve probably read Dune six times, and I\xE2\x80\x99ve never gotten tired of it ...\n <a href=\"http://www.goodreads.com/review/show/23505468\">more...</a>\n ]]>\n </body>\n <comments_count>6</comments_count>\n \n <url><![CDATA[http://www.goodreads.com/review/show/23505468]]></url>\n <link><![CDATA[http://www.goodreads.com/review/show/23505468]]></link>\n\
|
45
|
-
</review>\n\n \n <review>\n <id>2348449</id>\n <user>\n <id>147818</id>\n <name><![CDATA[John]]></name>\n <location><![CDATA[The United States]]></location>\n <link><![CDATA[http://www.goodreads.com/user/show/147818-john]]></link>\n <image_url><![CDATA[http://photo.goodreads.com/users/1276202553p3/147818.jpg]]></image_url>\n <small_image_url><![CDATA[http://photo.goodreads.com/users/1276202553p2/147818.jpg]]></small_image_url>\n\
|
46
|
-
</user>\n <rating>2</rating>\n <votes>23</votes>\n\n \n <spoiler_flag>false</spoiler_flag>\n <shelves>\n <shelf name=\"read\" />\n </shelves>\n <recommended_for><![CDATA[Science fiction readers, fantasy readers, speculative fiction readers]]></recommended_for>\n <recommended_by><![CDATA[]]></recommended_by>\n <started_at></started_at>\n <read_at>Fri Dec 01 00:00:00 -0800 2006</read_at>\n <date_added>Sun Jun 24 23:28:28 -0700 2007</date_added>\n <date_updated>Wed Dec 16 22:36:40 -0800 2009</date_updated>\n <read_count></read_count>\n <body>\n <![CDATA[No one should argue the importance <em>Dune</em>. It laid the foundations for a great deal of the themes and constructs in modern science fiction. Frank Herbert was as important to the genre as Isaac Asimov and Arthur Clarke. Unfortunately, just like them, he's quite dated, and his books can be a labor to re...\n <a href=\"http://www.goodreads.com/review/show/2348449\">more...</a>\n ]]>\n </body>\n <comments_count>4</comments_count>\n \n <url><![CDATA[http://www.goodreads.com/review/show/2348449]]></url>\n <link><![CDATA[http://www.goodreads.com/review/show/2348449]]></link>\n\
|
47
|
-
</review>\n\n \n <review>\n <id>1598115</id>\n <user>\n <id>84023</id>\n <name><![CDATA[Keely]]></name>\n <location><![CDATA[Belleville, NJ]]></location>\n <link><![CDATA[http://www.goodreads.com/user/show/84023-keely]]></link>\n <image_url><![CDATA[http://photo.goodreads.com/users/1274333636p3/84023.jpg]]></image_url>\n <small_image_url><![CDATA[http://photo.goodreads.com/users/1274333636p2/84023.jpg]]></small_image_url>\n\
|
48
|
-
</user>\n <rating>4</rating>\n <votes>12</votes>\n\n \n <spoiler_flag>false</spoiler_flag>\n <shelves>\n <shelf name=\"read\" />\n <shelf name=\"american\" />\n <shelf name=\"childhood\" />\n <shelf name=\"novel\" />\n <shelf name=\"reviewed\" />\n <shelf name=\"sci-fi\" />\n </shelves>\n <recommended_for><![CDATA[]]></recommended_for>\n <recommended_by><![CDATA[]]></recommended_by>\n <started_at></started_at>\n <read_at></read_at>\n <date_added>Fri Jun 01 19:11:54 -0700 2007</date_added>\n <date_updated>Thu Dec 09 21:18:29 -0800 2010</date_updated>\n <read_count></read_count>\n <body>\n <![CDATA[People often forget that this series is what innovated our modern concept of science fiction (up until Neuromancer and The Martix, at least). Dune took the Space Opera and asked if it might be more than spandex, dildo-shaped rockets, and scantily-clad green women. Herbert created a vast and complex ...\n <a href=\"http://www.goodreads.com/review/show/1598115\">more...</a>\n ]]>\n </body>\n <comments_count>2</comments_count>\n \n <url><![CDATA[http://www.goodreads.com/review/show/1598115]]></url>\n <link><![CDATA[http://www.goodreads.com/review/show/1598115]]></link>\n\
|
49
|
-
</review>\n\n \n <review>\n <id>20320</id>\n <user>\n <id>1994</id>\n <name><![CDATA[Banzai]]></name>\n <location><![CDATA[Villa Park, IL]]></location>\n <link><![CDATA[http://www.goodreads.com/user/show/1994-banzai]]></link>\n <image_url><![CDATA[http://photo.goodreads.com/users/1219416776p3/1994.jpg]]></image_url>\n <small_image_url><![CDATA[http://photo.goodreads.com/users/1219416776p2/1994.jpg]]></small_image_url>\n\
|
50
|
-
</user>\n <rating>5</rating>\n <votes>16</votes>\n\n \n <spoiler_flag>false</spoiler_flag>\n <shelves>\n <shelf name=\"read\" />\n </shelves>\n <recommended_for><![CDATA[]]></recommended_for>\n <recommended_by><![CDATA[]]></recommended_by>\n <started_at></started_at>\n <read_at>Sat Jan 01 00:00:00 -0800 2000</read_at>\n <date_added>Mon Feb 05 09:38:13 -0800 2007</date_added>\n <date_updated>Wed Dec 16 15:55:53 -0800 2009</date_updated>\n <read_count></read_count>\n <body>\n <![CDATA[I guess I'm one of the few that bridge the gap between the Pride and Prejudice camp and the Dune camp. I loved both.\r<br/>\r<br/>Dune isn't a light, enjoyable read. At times it reads more like excerpts from geology, ecology, zoology, sociology, pscyhology, and political textbooks. The characters are ...\n <a href=\"http://www.goodreads.com/review/show/20320\">more...</a>\n ]]>\n </body>\n <comments_count>4</comments_count>\n \n <url><![CDATA[http://www.goodreads.com/review/show/20320]]></url>\n <link><![CDATA[http://www.goodreads.com/review/show/20320]]></link>\n\
|
51
|
-
</review>\n\n \n <review>\n <id>6974116</id>\n <user>\n <id>368858</id>\n <name><![CDATA[Adam]]></name>\n <location><![CDATA[Ashland, OH]]></location>\n <link><![CDATA[http://www.goodreads.com/user/show/368858-adam]]></link>\n <image_url><![CDATA[http://photo.goodreads.com/users/1189456780p3/368858.jpg]]></image_url>\n <small_image_url><![CDATA[http://photo.goodreads.com/users/1189456780p2/368858.jpg]]></small_image_url>\n\
|
52
|
-
</user>\n <rating>5</rating>\n <votes>8</votes>\n\n \n <spoiler_flag>false</spoiler_flag>\n <shelves>\n <shelf name=\"read\" />\n </shelves>\n <recommended_for><![CDATA[]]></recommended_for>\n <recommended_by><![CDATA[]]></recommended_by>\n <started_at></started_at>\n <read_at>Sat Apr 01 00:00:00 -0800 2000</read_at>\n <date_added>Fri Sep 28 20:08:34 -0700 2007</date_added>\n <date_updated>Sun Sep 14 09:22:12 -0700 2008</date_updated>\n <read_count>5-6</read_count>\n <body>\n <![CDATA[I've read and reread this novel across the years, and I'll continue to do so.\r<br/>\r<br/>Dune was Frank Herbert's imagination breathed into the pages of a single book. He wrote numerous others to follow it, all of which continue to explore and flesh out the world he introduced us to in this, the fi...\n <a href=\"http://www.goodreads.com/review/show/6974116\">more...</a>\n ]]>\n </body>\n <comments_count>3</comments_count>\n \n <url><![CDATA[http://www.goodreads.com/review/show/6974116]]></url>\n <link><![CDATA[http://www.goodreads.com/review/show/6974116]]></link>\n\
|
53
|
-
</review>\n\n \n <review>\n <id>93981680</id>\n <user>\n <id>1376766</id>\n <name><![CDATA[Becky]]></name>\n <location><![CDATA[Wilkes Barre, PA]]></location>\n <link><![CDATA[http://www.goodreads.com/user/show/1376766-becky]]></link>\n <image_url><![CDATA[http://photo.goodreads.com/users/1284393199p3/1376766.jpg]]></image_url>\n <small_image_url><![CDATA[http://photo.goodreads.com/users/1284393199p2/1376766.jpg]]></small_image_url>\n\
|
54
|
-
</user>\n <rating>4</rating>\n <votes>7</votes>\n\n \n <spoiler_flag>false</spoiler_flag>\n <shelves>\n <shelf name=\"read\" />\n <shelf name=\"--2010--\" />\n <shelf name=\"blog_reviews\" />\n <shelf name=\"classics\" />\n <shelf name=\"highly-recommended\" />\n <shelf name=\"owned\" />\n <shelf name=\"political\" />\n <shelf name=\"religion-related\" />\n <shelf name=\"reviewed\" />\n <shelf name=\"science-fiction\" />\n </shelves>\n <recommended_for><![CDATA[]]></recommended_for>\n <recommended_by><![CDATA[]]></recommended_by>\n <started_at>Sat Apr 24 00:00:00 -0700 2010</started_at>\n <read_at>Sat May 01 00:00:00 -0700 2010</read_at>\n <date_added>Sat Mar 13 21:11:43 -0800 2010</date_added>\n <date_updated>Thu Aug 05 10:05:25 -0700 2010</date_updated>\n <read_count></read_count>\n <body>\n <![CDATA[This is one of those books that I've always thought that I should read, but never actually wanted to read, simply because I thought that it would have to be tedious and dry and, I hate to say it, boring. Which goes to show what a poor book-cover judge I am, because this book was anything but tedious...\n <a href=\"http://www.goodreads.com/review/show/93981680\">more...</a>\n ]]>\n </body>\n <comments_count>16</comments_count>\n \n <url><![CDATA[http://www.goodreads.com/review/show/93981680]]></url>\n <link><![CDATA[http://www.goodreads.com/review/show/93981680]]></link>\n\
|
55
|
-
</review>\n\n \n <review>\n <id>23171867</id>\n <user>\n <id>1188122</id>\n <name><![CDATA[Ben]]></name>\n <location><![CDATA[Thunder Bay, ON, Canada]]></location>\n <link><![CDATA[http://www.goodreads.com/user/show/1188122-ben-babcock]]></link>\n <image_url><![CDATA[http://photo.goodreads.com/users/1211839871p3/1188122.jpg]]></image_url>\n <small_image_url><![CDATA[http://photo.goodreads.com/users/1211839871p2/1188122.jpg]]></small_image_url>\n\
|
56
|
-
</user>\n <rating>5</rating>\n <votes>6</votes>\n\n \n <spoiler_flag>false</spoiler_flag>\n <shelves>\n <shelf name=\"read\" />\n <shelf name=\"2011-read\" />\n <shelf name=\"favourites\" />\n <shelf name=\"own\" />\n <shelf name=\"posthuman\" />\n <shelf name=\"religion-fiction\" />\n <shelf name=\"science-fiction\" />\n </shelves>\n <recommended_for><![CDATA[]]></recommended_for>\n <recommended_by><![CDATA[]]></recommended_by>\n <started_at>Sat Feb 05 00:00:00 -0800 2011</started_at>\n <read_at>Sat Feb 12 00:00:00 -0800 2011</read_at>\n <date_added>Wed May 28 18:06:16 -0700 2008</date_added>\n <date_updated>Sat Feb 12 22:32:12 -0800 2011</date_updated>\n <read_count>3</read_count>\n <body>\n <![CDATA[<strong>Second review (Reviewed on February 12, 2011).</strong>\r<br/>\r<br/><em>Dune</em> is a classic because it tells a classic story well. It combines two plots that I love: a vast political intrigue with an intimate family conflict. The Atreides and Harkonnens are related by blood; their feud is a blood feud going back ge...\n <a href=\"http://www.goodreads.com/review/show/23171867\">more...</a>\n ]]>\n </body>\n <comments_count>0</comments_count>\n \n <url><![CDATA[http://www.goodreads.com/review/show/23171867]]></url>\n <link><![CDATA[http://www.goodreads.com/review/show/23171867]]></link>\n\
|
57
|
-
</review>\n\n \n <review>\n <id>8240703</id>\n <user>\n <id>441385</id>\n <name><![CDATA[Donovan]]></name>\n <location><![CDATA[Chicago, IL]]></location>\n <link><![CDATA[http://www.goodreads.com/user/show/441385-donovan]]></link>\n <image_url><![CDATA[http://photo.goodreads.com/users/1298491418p3/441385.jpg]]></image_url>\n <small_image_url><![CDATA[http://photo.goodreads.com/users/1298491418p2/441385.jpg]]></small_image_url>\n\
|
58
|
-
</user>\n <rating>5</rating>\n <votes>9</votes>\n\n \n <spoiler_flag>false</spoiler_flag>\n <shelves>\n <shelf name=\"read\" />\n </shelves>\n <recommended_for><![CDATA[anyone who thinks they love StarWars]]></recommended_for>\n <recommended_by><![CDATA[]]></recommended_by>\n <started_at></started_at>\n <read_at>Thu Mar 01 00:00:00 -0800 2007</read_at>\n <date_added>Thu Oct 25 13:04:51 -0700 2007</date_added>\n <date_updated>Thu Oct 25 13:04:51 -0700 2007</date_updated>\n <read_count></read_count>\n <body>\n <![CDATA[I had never read <u>Dune</u>. I can\xE2\x80\x99t put my finger on exactly why I hadn\xE2\x80\x99t read it; although, I do have a nebulous memory of picking it up and not being able to get in to it. I know for a fact that I\xE2\x80\x99d read the closing line previously, which is something I never do prior to reading a book; so that is real...\n <a href=\"http://www.goodreads.com/review/show/8240703\">more...</a>\n ]]>\n </body>\n <comments_count>1</comments_count>\n \n <url><![CDATA[http://www.goodreads.com/review/show/8240703]]></url>\n <link><![CDATA[http://www.goodreads.com/review/show/8240703]]></link>\n\
|
59
|
-
</review>\n\n \n <review>\n <id>20670476</id>\n <user>\n <id>667084</id>\n <name><![CDATA[Cassidy]]></name>\n <location><![CDATA[The United States]]></location>\n <link><![CDATA[http://www.goodreads.com/user/show/667084-cassidy]]></link>\n <image_url><![CDATA[http://photo.goodreads.com/users/1197253437p3/667084.jpg]]></image_url>\n <small_image_url><![CDATA[http://photo.goodreads.com/users/1197253437p2/667084.jpg]]></small_image_url>\n\
|
60
|
-
</user>\n <rating>5</rating>\n <votes>6</votes>\n\n \n <spoiler_flag>false</spoiler_flag>\n <shelves>\n <shelf name=\"read\" />\n </shelves>\n <recommended_for><![CDATA[People with flexibly discerning taste, and who don't mind a lot of glossary checks..]]></recommended_for>\n <recommended_by><![CDATA[]]></recommended_by>\n <started_at></started_at>\n <read_at>Fri May 02 00:00:00 -0700 2008</read_at>\n <date_added>Mon Apr 21 14:43:47 -0700 2008</date_added>\n <date_updated>Mon May 05 18:19:57 -0700 2008</date_updated>\n <read_count></read_count>\n <body>\n <![CDATA[Frank Herbert\r<br/>Dune\r<br/>Philadelphia: Chilton Book Company, 1965\r<br/>pp. 483 (without appendices and glossary), 539 (with app. and glos.), unpriced\r<br/>ISBN: N/A\r<br/>\r<br/> Commonly billed as the best-selling science fiction novel of all time, Dune, an expansive tale of intrigue, religio...\n <a href=\"http://www.goodreads.com/review/show/20670476\">more...</a>\n ]]>\n </body>\n <comments_count>1</comments_count>\n \n <url><![CDATA[http://www.goodreads.com/review/show/20670476]]></url>\n <link><![CDATA[http://www.goodreads.com/review/show/20670476]]></link>\n\
|
61
|
-
</review>\n\n \n <review>\n <id>15306545</id>\n <user>\n <id>891651</id>\n <name><![CDATA[Karen]]></name>\n <location><![CDATA[San Diego, CA]]></location>\n <link><![CDATA[http://www.goodreads.com/user/show/891651-karen]]></link>\n <image_url><![CDATA[http://photo.goodreads.com/users/1208720825p3/891651.jpg]]></image_url>\n <small_image_url><![CDATA[http://photo.goodreads.com/users/1208720825p2/891651.jpg]]></small_image_url>\n\
|
62
|
-
</user>\n <rating>2</rating>\n <votes>4</votes>\n\n \n <spoiler_flag>false</spoiler_flag>\n <shelves>\n <shelf name=\"read\" />\n </shelves>\n <recommended_for><![CDATA[]]></recommended_for>\n <recommended_by><![CDATA[]]></recommended_by>\n <started_at></started_at>\n <read_at>Thu Feb 28 00:00:00 -0800 2008</read_at>\n <date_added>Tue Feb 12 22:41:55 -0800 2008</date_added>\n <date_updated>Fri Feb 29 00:00:34 -0800 2008</date_updated>\n <read_count></read_count>\n <body>\n <![CDATA[I've read this before and liked it; several portions stick vividly in my mind but I never read the rest of the series. I still don't expect to read the rest of the series, but my friend just read it and has brought it up a few times in conversation so when they had it on the "Librarians' Picks"...\n <a href=\"http://www.goodreads.com/review/show/15306545\">more...</a>\n ]]>\n </body>\n <comments_count>1</comments_count>\n \n <url><![CDATA[http://www.goodreads.com/review/show/15306545]]></url>\n <link><![CDATA[http://www.goodreads.com/review/show/15306545]]></link>\n\
|
63
|
-
</review>\n\n \n <review>\n <id>14597388</id>\n <user>\n <id>82278</id>\n <name><![CDATA[Jacob]]></name>\n <location><![CDATA[Hanoi, Viet Nam]]></location>\n <link><![CDATA[http://www.goodreads.com/user/show/82278-jacob]]></link>\n <image_url><![CDATA[http://photo.goodreads.com/users/1285757074p3/82278.jpg]]></image_url>\n <small_image_url><![CDATA[http://photo.goodreads.com/users/1285757074p2/82278.jpg]]></small_image_url>\n\
|
64
|
-
</user>\n <rating>0</rating>\n <votes>5</votes>\n\n \n <spoiler_flag>false</spoiler_flag>\n <shelves>\n <shelf name=\"read\" />\n </shelves>\n <recommended_for><![CDATA[]]></recommended_for>\n <recommended_by><![CDATA[]]></recommended_by>\n <started_at></started_at>\n <read_at></read_at>\n <date_added>Tue Feb 05 00:21:07 -0800 2008</date_added>\n <date_updated>Sun Feb 10 18:14:25 -0800 2008</date_updated>\n <read_count></read_count>\n <body>\n <![CDATA[If this isn't a formative text, then I don't know what is. I figure evangelicals have the bible, and usually a regressive translation at that, while my family had weird science fiction novels. One that all ten of my brothers and sisters read was Dune. It's true. I grew up in a large family. A sprawl...\n <a href=\"http://www.goodreads.com/review/show/14597388\">more...</a>\n ]]>\n </body>\n <comments_count>3</comments_count>\n \n <url><![CDATA[http://www.goodreads.com/review/show/14597388]]></url>\n <link><![CDATA[http://www.goodreads.com/review/show/14597388]]></link>\n\
|
65
|
-
</review>\n\n \n <review>\n <id>5005651</id>\n <user>\n <id>304412</id>\n <name><![CDATA[Matt]]></name>\n <location><![CDATA[Seattle, WA]]></location>\n <link><![CDATA[http://www.goodreads.com/user/show/304412-matt]]></link>\n <image_url><![CDATA[http://photo.goodreads.com/users/1192132393p3/304412.jpg]]></image_url>\n <small_image_url><![CDATA[http://photo.goodreads.com/users/1192132393p2/304412.jpg]]></small_image_url>\n\
|
66
|
-
</user>\n <rating>5</rating>\n <votes>6</votes>\n\n \n <spoiler_flag>false</spoiler_flag>\n <shelves>\n <shelf name=\"read\" />\n </shelves>\n <recommended_for><![CDATA[Everybody]]></recommended_for>\n <recommended_by><![CDATA[]]></recommended_by>\n <started_at></started_at>\n <read_at>Sun Jan 01 00:00:00 -0800 1984</read_at>\n <date_added>Thu Aug 23 09:56:11 -0700 2007</date_added>\n <date_updated>Thu Oct 11 12:09:44 -0700 2007</date_updated>\n <read_count></read_count>\n <body>\n <![CDATA[This is the best book ever written. Cerebrally stimulating for anyone. When we attempt to understand why entertainment of this caliber (Lord of the Rings, Star Wars) and mass appeal (Harry Potter) resonates so strongly with us, many are quick to utilize Jungian archetypes to support such effects. \r<br/>...\n <a href=\"http://www.goodreads.com/review/show/5005651\">more...</a>\n ]]>\n </body>\n <comments_count>2</comments_count>\n \n <url><![CDATA[http://www.goodreads.com/review/show/5005651]]></url>\n <link><![CDATA[http://www.goodreads.com/review/show/5005651]]></link>\n\
|
67
|
-
</review>\n\n \n <review>\n <id>14145629</id>\n <user>\n <id>858949</id>\n <name><![CDATA[Chris]]></name>\n <location><![CDATA[Osaka, Japan]]></location>\n <link><![CDATA[http://www.goodreads.com/user/show/858949-chris]]></link>\n <image_url><![CDATA[http://photo.goodreads.com/users/1208350750p3/858949.jpg]]></image_url>\n <small_image_url><![CDATA[http://photo.goodreads.com/users/1208350750p2/858949.jpg]]></small_image_url>\n\
|
68
|
-
</user>\n <rating>4</rating>\n <votes>4</votes>\n\n \n <spoiler_flag>false</spoiler_flag>\n <shelves>\n <shelf name=\"read\" />\n <shelf name=\"science-fiction\" />\n </shelves>\n <recommended_for><![CDATA[]]></recommended_for>\n <recommended_by><![CDATA[]]></recommended_by>\n <started_at></started_at>\n <read_at>Tue Jan 29 00:00:00 -0800 2008</read_at>\n <date_added>Thu Jan 31 06:36:48 -0800 2008</date_added>\n <date_updated>Thu Jan 31 06:47:15 -0800 2008</date_updated>\n <read_count></read_count>\n <body>\n <![CDATA[When I was a kid, I tried about a dozen times to get through this book. My mom loved it, so I figured I'd give it a try, but this book definitely has a high learning curve and I had low patience.\r<br/>\r<br/>Years later, of course, when I knew something more about politics, religion, science and life...\n <a href=\"http://www.goodreads.com/review/show/14145629\">more...</a>\n ]]>\n </body>\n <comments_count>0</comments_count>\n \n <url><![CDATA[http://www.goodreads.com/review/show/14145629]]></url>\n <link><![CDATA[http://www.goodreads.com/review/show/14145629]]></link>\n\
|
69
|
-
</review>\n\n \n <review>\n <id>6591463</id>\n <user>\n <id>126262</id>\n <name><![CDATA[Brooke]]></name>\n <location><![CDATA[Hilliard, OH]]></location>\n <link><![CDATA[http://www.goodreads.com/user/show/126262-brooke]]></link>\n <image_url><![CDATA[http://photo.goodreads.com/users/1181591671p3/126262.jpg]]></image_url>\n <small_image_url><![CDATA[http://photo.goodreads.com/users/1181591671p2/126262.jpg]]></small_image_url>\n\
|
70
|
-
</user>\n <rating>4</rating>\n <votes>7</votes>\n\n \n <spoiler_flag>false</spoiler_flag>\n <shelves>\n <shelf name=\"read\" />\n <shelf name=\"2008\" />\n <shelf name=\"science-fiction\" />\n </shelves>\n <recommended_for><![CDATA[]]></recommended_for>\n <recommended_by><![CDATA[]]></recommended_by>\n <started_at></started_at>\n <read_at>Sat Sep 13 00:00:00 -0700 2008</read_at>\n <date_added>Sat Sep 22 00:08:50 -0700 2007</date_added>\n <date_updated>Sat Sep 13 17:55:17 -0700 2008</date_updated>\n <read_count></read_count>\n <body>\n <![CDATA[I've never given a book 5 stars instantly upon finishing it. My 5-star favorites became favorites after they had time to stick around in my mind for a year or so while my devotion to them grew. It's entirely possible Dune will join them in the future, but right now it's hard to tell. If I could, I w...\n <a href=\"http://www.goodreads.com/review/show/6591463\">more...</a>\n ]]>\n </body>\n <comments_count>3</comments_count>\n \n <url><![CDATA[http://www.goodreads.com/review/show/6591463]]></url>\n <link><![CDATA[http://www.goodreads.com/review/show/6591463]]></link>\n\
|
71
|
-
</review>\n\n \n <review>\n <id>48120743</id>\n <user>\n <id>1748656</id>\n <name><![CDATA[Beth]]></name>\n <location><![CDATA[The United States]]></location>\n <link><![CDATA[http://www.goodreads.com/user/show/1748656-beth]]></link>\n <image_url><![CDATA[http://photo.goodreads.com/users/1231095279p3/1748656.jpg]]></image_url>\n <small_image_url><![CDATA[http://photo.goodreads.com/users/1231095279p2/1748656.jpg]]></small_image_url>\n\
|
72
|
-
</user>\n <rating>4</rating>\n <votes>2</votes>\n\n \n <spoiler_flag>false</spoiler_flag>\n <shelves>\n <shelf name=\"read\" />\n </shelves>\n <recommended_for><![CDATA[people with interests in vermiculture, genetic engineering, and people facing water rationing]]></recommended_for>\n <recommended_by><![CDATA[]]></recommended_by>\n <started_at></started_at>\n <read_at></read_at>\n <date_added>Tue Mar 03 11:15:04 -0800 2009</date_added>\n <date_updated>Tue Mar 03 11:50:09 -0800 2009</date_updated>\n <read_count></read_count>\n <body>\n <![CDATA[Sitting here on the desert planet -- uh State, Arakkis -- I mean California, I'm staring in amazement as water actually falls from the sky. \r<br/>\r<br/>This grand sprawling book has a lot to offer: genetic engineer witches, religion as premeditated social engineering, amazing heroic islamists -- I m...\n <a href=\"http://www.goodreads.com/review/show/48120743\">more...</a>\n ]]>\n </body>\n <comments_count>7</comments_count>\n \n <url><![CDATA[http://www.goodreads.com/review/show/48120743]]></url>\n <link><![CDATA[http://www.goodreads.com/review/show/48120743]]></link>\n\
|
73
|
-
</review>\n\n \n <review>\n <id>47266993</id>\n <user>\n <id>1019174</id>\n <name><![CDATA[Terence]]></name>\n <location><![CDATA[Covina, CA]]></location>\n <link><![CDATA[http://www.goodreads.com/user/show/1019174-terence]]></link>\n <image_url><![CDATA[http://photo.goodreads.com/users/1282879833p3/1019174.jpg]]></image_url>\n <small_image_url><![CDATA[http://photo.goodreads.com/users/1282879833p2/1019174.jpg]]></small_image_url>\n\
|
74
|
-
</user>\n <rating>3</rating>\n <votes>4</votes>\n\n \n <spoiler_flag>false</spoiler_flag>\n <shelves>\n <shelf name=\"read\" />\n <shelf name=\"audio-books\" />\n <shelf name=\"sf-fantasy\" />\n </shelves>\n <recommended_for><![CDATA[]]></recommended_for>\n <recommended_by><![CDATA[]]></recommended_by>\n <started_at></started_at>\n <read_at>Mon Mar 09 09:12:31 -0700 2009</read_at>\n <date_added>Mon Feb 23 10:49:08 -0800 2009</date_added>\n <date_updated>Mon Mar 09 09:12:31 -0700 2009</date_updated>\n <read_count></read_count>\n <body>\n <![CDATA[Don't mistake me, <em>Dune</em>, the novel, retains its 4+ stars in my heavens. This audio version gets the lesser rating because of deficiencies in presentation.\r<br/>\r<br/>The good side of the CD is that, as happened while <em>listening</em> to Tolkien's <a href=\"http://www.goodreads.com/book/show/18512.The_Return_of_the_King_The_Lord_of_the_Rings_Part_3_\" title=\"The Return of the King (The Lord of the Rings, Part 3) by J.R.R. Tolkien\">The Silmarillion</a>, I heard a lot of things I had missed or glo...\n <a href=\"http://www.goodreads.com/review/show/47266993\">more...</a>\n ]]>\n </body>\n <comments_count>2</comments_count>\n \n <url><![CDATA[http://www.goodreads.com/review/show/47266993]]></url>\n <link><![CDATA[http://www.goodreads.com/review/show/47266993]]></link>\n\
|
75
|
-
</review>\n\n \n <review>\n <id>91837233</id>\n <user>\n <id>2250020</id>\n <name><![CDATA[Tatiana]]></name>\n <location><![CDATA[Greensboro, NC]]></location>\n <link><![CDATA[http://www.goodreads.com/user/show/2250020-tatiana]]></link>\n <image_url><![CDATA[http://photo.goodreads.com/users/1249783659p3/2250020.jpg]]></image_url>\n <small_image_url><![CDATA[http://photo.goodreads.com/users/1249783659p2/2250020.jpg]]></small_image_url>\n\
|
76
|
-
</user>\n <rating>4</rating>\n <votes>6</votes>\n\n \n <spoiler_flag>false</spoiler_flag>\n <shelves>\n <shelf name=\"read\" />\n <shelf name=\"2010\" />\n <shelf name=\"nebula\" />\n <shelf name=\"sci-fi\" />\n </shelves>\n <recommended_for><![CDATA[fans of sophisticated science fiction]]></recommended_for>\n <recommended_by><![CDATA[Ryan]]></recommended_by>\n <started_at>Mon Apr 05 00:00:00 -0700 2010</started_at>\n <read_at>Tue Apr 13 00:00:00 -0700 2010</read_at>\n <date_added>Sun Feb 28 13:28:32 -0800 2010</date_added>\n <date_updated>Thu Apr 15 13:36:39 -0700 2010</date_updated>\n <read_count></read_count>\n <body>\n <![CDATA[I like books for different reasons - characters, writing style, exciting plot. I will remember "Dune" for its remarkable world-building.\r<br/>\r<br/>Dune (or Arrakis) is a desert planet. It is barren, almost waterless, and it is the only source of melange - a spice with unique geriatric qua...\n <a href=\"http://www.goodreads.com/review/show/91837233\">more...</a>\n ]]>\n </body>\n <comments_count>9</comments_count>\n \n <url><![CDATA[http://www.goodreads.com/review/show/91837233]]></url>\n <link><![CDATA[http://www.goodreads.com/review/show/91837233]]></link>\n\
|
77
|
-
</review>\n\n \n <review>\n <id>82035975</id>\n <user>\n <id>3074140</id>\n <name><![CDATA[David]]></name>\n <location><![CDATA[Cambridge, England., UT, The United Kingdom]]></location>\n <link><![CDATA[http://www.goodreads.com/user/show/3074140-david-menzies]]></link>\n <image_url><![CDATA[http://photo.goodreads.com/users/1261794078p3/3074140.jpg]]></image_url>\n <small_image_url><![CDATA[http://photo.goodreads.com/users/1261794078p2/3074140.jpg]]></small_image_url>\n\
|
78
|
-
</user>\n <rating>5</rating>\n <votes>2</votes>\n\n \n <spoiler_flag>false</spoiler_flag>\n <shelves>\n <shelf name=\"read\" />\n </shelves>\n <recommended_for><![CDATA[]]></recommended_for>\n <recommended_by><![CDATA[]]></recommended_by>\n <started_at></started_at>\n <read_at></read_at>\n <date_added>Fri Dec 25 18:14:39 -0800 2009</date_added>\n <date_updated>Fri Mar 11 11:00:09 -0800 2011</date_updated>\n <read_count></read_count>\n <body>\n <![CDATA[Dune, by Frank Herbert, is by far one of the most thought provoking books that I have ever read. It has been described by critics as a \xE2\x80\x9Ctriumph of the imagination\xE2\x80\x9D, and is often cited as the best-selling science fiction novel ever to be written. It is set thousands of years in the future, in which m...\n <a href=\"http://www.goodreads.com/review/show/82035975\">more...</a>\n ]]>\n </body>\n <comments_count>2</comments_count>\n \n <url><![CDATA[http://www.goodreads.com/review/show/82035975]]></url>\n <link><![CDATA[http://www.goodreads.com/review/show/82035975]]></link>\n\
|
79
|
-
</review>\n\n \n <review>\n <id>72081089</id>\n <user>\n <id>2763302</id>\n <name><![CDATA[Pavel]]></name>\n <location><![CDATA[Moscow, 48, Russian Federation]]></location>\n <link><![CDATA[http://www.goodreads.com/user/show/2763302-pavel]]></link>\n <image_url><![CDATA[http://photo.goodreads.com/users/1253598397p3/2763302.jpg]]></image_url>\n <small_image_url><![CDATA[http://photo.goodreads.com/users/1253598397p2/2763302.jpg]]></small_image_url>\n\
|
80
|
-
</user>\n <rating>4</rating>\n <votes>2</votes>\n\n \n <spoiler_flag>false</spoiler_flag>\n <shelves>\n <shelf name=\"read\" />\n </shelves>\n <recommended_for><![CDATA[]]></recommended_for>\n <recommended_by><![CDATA[]]></recommended_by>\n <started_at>Fri Jun 04 00:00:00 -0700 2010</started_at>\n <read_at>Fri Jun 11 00:00:00 -0700 2010</read_at>\n <date_added>Mon Sep 21 22:19:05 -0700 2009</date_added>\n <date_updated>Sun Jun 13 03:48:37 -0700 2010</date_updated>\n <read_count></read_count>\n <body>\n <![CDATA[Since majority of my goodreads friends have read this book, I see no reason to re-tell its plot etc. All I have to say is that it is incredibly fun read and probably second fantasy book I really ever liked after Lord of the Rings. Evil is rarely that vivid and hateable, Freemens are totally cool. I ...\n <a href=\"http://www.goodreads.com/review/show/72081089\">more...</a>\n ]]>\n </body>\n <comments_count>6</comments_count>\n \n <url><![CDATA[http://www.goodreads.com/review/show/72081089]]></url>\n <link><![CDATA[http://www.goodreads.com/review/show/72081089]]></link>\n\
|
81
|
-
</review>\n\n \n <review>\n <id>27313922</id>\n <user>\n <id>931383</id>\n <name><![CDATA[TeraD]]></name>\n <location><![CDATA[Tacoma, WA]]></location>\n <link><![CDATA[http://www.goodreads.com/user/show/931383-terad]]></link>\n <image_url><![CDATA[http://photo.goodreads.com/users/1233789447p3/931383.jpg]]></image_url>\n <small_image_url><![CDATA[http://photo.goodreads.com/users/1233789447p2/931383.jpg]]></small_image_url>\n\
|
82
|
-
</user>\n <rating>5</rating>\n <votes>3</votes>\n\n \n <spoiler_flag>false</spoiler_flag>\n <shelves>\n <shelf name=\"read\" />\n <shelf name=\"all-time-favorites\" />\n <shelf name=\"fantasy\" />\n </shelves>\n <recommended_for><![CDATA[]]></recommended_for>\n <recommended_by><![CDATA[]]></recommended_by>\n <started_at></started_at>\n <read_at>Fri Jul 18 00:00:00 -0700 2008</read_at>\n <date_added>Tue Jul 15 09:35:09 -0700 2008</date_added>\n <date_updated>Tue Jul 22 12:20:21 -0700 2008</date_updated>\n <read_count></read_count>\n <body>\n <![CDATA[Dune is a fantastic book. The confusion of the first few pages as you enter a new world quickly dissipates as you feel yourself drawn in and understanding begin to seep from the pages of the story. The imagery is amazing, the attention to detail enthralling and the characters deep and well-developed...\n <a href=\"http://www.goodreads.com/review/show/27313922\">more...</a>\n ]]>\n </body>\n <comments_count>0</comments_count>\n \n <url><![CDATA[http://www.goodreads.com/review/show/27313922]]></url>\n <link><![CDATA[http://www.goodreads.com/review/show/27313922]]></link>\n\
|
83
|
-
</review>\n\n \n <review>\n <id>2866668</id>\n <user>\n <id>147289</id>\n <name><![CDATA[Jason]]></name>\n <location><![CDATA[Chicago, IL]]></location>\n <link><![CDATA[http://www.goodreads.com/user/show/147289-jason-pettus]]></link>\n <image_url><![CDATA[http://photo.goodreads.com/users/1283695594p3/147289.jpg]]></image_url>\n <small_image_url><![CDATA[http://photo.goodreads.com/users/1283695594p2/147289.jpg]]></small_image_url>\n\
|
84
|
-
</user>\n <rating>4</rating>\n <votes>3</votes>\n\n \n <spoiler_flag>false</spoiler_flag>\n <shelves>\n <shelf name=\"read\" />\n </shelves>\n <recommended_for><![CDATA[]]></recommended_for>\n <recommended_by><![CDATA[]]></recommended_by>\n <started_at></started_at>\n <read_at></read_at>\n <date_added>Mon Jul 09 11:30:25 -0700 2007</date_added>\n <date_updated>Mon Jul 09 11:38:36 -0700 2007</date_updated>\n <read_count></read_count>\n <body>\n <![CDATA[Like many, my relationship with this science-fiction classic has changed as my life has progressed: too dense for me when first attempted as a young teen, by the time I was an undergraduate it was one of my all-time favorite novels; but then while reading it again near the age of 40, found a lot mor...\n <a href=\"http://www.goodreads.com/review/show/2866668\">more...</a>\n ]]>\n </body>\n <comments_count>0</comments_count>\n \n <url><![CDATA[http://www.goodreads.com/review/show/2866668]]></url>\n <link><![CDATA[http://www.goodreads.com/review/show/2866668]]></link>\n\
|
85
|
-
</review>\n\n \n <review>\n <id>2616095</id>\n <user>\n <id>165364</id>\n <name><![CDATA[Beggs]]></name>\n <location><![CDATA[Singapore]]></location>\n <link><![CDATA[http://www.goodreads.com/user/show/165364-beggs]]></link>\n <image_url><![CDATA[http://photo.goodreads.com/users/1183368190p3/165364.jpg]]></image_url>\n <small_image_url><![CDATA[http://photo.goodreads.com/users/1183368190p2/165364.jpg]]></small_image_url>\n\
|
86
|
-
</user>\n <rating>5</rating>\n <votes>2</votes>\n\n \n <spoiler_flag>false</spoiler_flag>\n <shelves>\n <shelf name=\"read\" />\n </shelves>\n <recommended_for><![CDATA[]]></recommended_for>\n <recommended_by><![CDATA[]]></recommended_by>\n <started_at></started_at>\n <read_at>Sun Jul 01 00:00:00 -0700 2007</read_at>\n <date_added>Mon Jul 02 00:32:03 -0700 2007</date_added>\n <date_updated>Tue Sep 07 18:16:38 -0700 2010</date_updated>\n <read_count></read_count>\n <body>\n <![CDATA[I first read <a href=\"http://www.goodreads.com/book/show/19501.Eat_Pray_Love\" title=\"Eat, Pray, Love by Elizabeth Gilbert\">Dune</a> one summer sitting in an old arm chair in the basement of my grandparents house in rural Minnesota. I found a copy of Dune on the book shelf next to <a href=\"http://www.goodreads.com/author/show/858.Louis_L_Amour\" title=\"Louis L'Amour\">Louis Lamour</a> western and Readers Digest Condensed Books when I was 14 or so. A battered musty original print run version that had bel...\n <a href=\"http://www.goodreads.com/review/show/2616095\">more...</a>\n ]]>\n </body>\n <comments_count>0</comments_count>\n \n <url><![CDATA[http://www.goodreads.com/review/show/2616095]]></url>\n <link><![CDATA[http://www.goodreads.com/review/show/2616095]]></link>\n\
|
87
|
-
</review>\n\n \n <review>\n <id>646557</id>\n <user>\n <id>51289</id>\n <name><![CDATA[Katie]]></name>\n <location><![CDATA[Waterbury, VT]]></location>\n <link><![CDATA[http://www.goodreads.com/user/show/51289-katie]]></link>\n <image_url><![CDATA[http://photo.goodreads.com/users/1176685035p3/51289.jpg]]></image_url>\n <small_image_url><![CDATA[http://photo.goodreads.com/users/1176685035p2/51289.jpg]]></small_image_url>\n\
|
88
|
-
</user>\n <rating>2</rating>\n <votes>7</votes>\n\n \n <spoiler_flag>false</spoiler_flag>\n <shelves>\n <shelf name=\"read\" />\n </shelves>\n <recommended_for><![CDATA[]]></recommended_for>\n <recommended_by><![CDATA[]]></recommended_by>\n <started_at></started_at>\n <read_at>Fri Dec 01 00:00:00 -0800 2006</read_at>\n <date_added>Mon Apr 09 10:01:43 -0700 2007</date_added>\n <date_updated>Mon Apr 09 10:13:38 -0700 2007</date_updated>\n <read_count></read_count>\n <body>\n <![CDATA[I've loved science fiction my whole life, but I was finally told that I couldn't call myself a SF fan if I hadn't read Dune. So I read it. I know Dune is worshipped as a paragon of groundbreaking SF, I can witness and acknowledge Herbert's genius, and I can understand that when it was written it w...\n <a href=\"http://www.goodreads.com/review/show/646557\">more...</a>\n ]]>\n </body>\n <comments_count>7</comments_count>\n \n <url><![CDATA[http://www.goodreads.com/review/show/646557]]></url>\n <link><![CDATA[http://www.goodreads.com/review/show/646557]]></link>\n\
|
89
|
-
</review>\n\n \n <review>\n <id>5774950</id>\n <user>\n <id>354744</id>\n <name><![CDATA[Exparrot]]></name>\n <location><![CDATA[The United States]]></location>\n <link><![CDATA[http://www.goodreads.com/user/show/354744-exparrot]]></link>\n <image_url><![CDATA[http://photo.goodreads.com/users/1192152370p3/354744.jpg]]></image_url>\n <small_image_url><![CDATA[http://photo.goodreads.com/users/1192152370p2/354744.jpg]]></small_image_url>\n\
|
90
|
-
</user>\n <rating>4</rating>\n <votes>2</votes>\n\n \n <spoiler_flag>false</spoiler_flag>\n <shelves>\n <shelf name=\"read\" />\n </shelves>\n <recommended_for><![CDATA[anyone who enjoys a good intense Scifi novel]]></recommended_for>\n <recommended_by><![CDATA[]]></recommended_by>\n <started_at></started_at>\n <read_at>Wed Jan 01 00:00:00 -0800 2003</read_at>\n <date_added>Thu Sep 06 09:49:10 -0700 2007</date_added>\n <date_updated>Thu Sep 06 10:14:38 -0700 2007</date_updated>\n <read_count></read_count>\n <body>\n <![CDATA[To be honest, I only decided to read the series when I, by chance, saw the 1984 Dune movie on TV. Mayhap I was curious to see people riding on gigantic worms, so I went straight away to my local Borders to check out the book. It took me a few days to finish the first book, but I was defintely hooked...\n <a href=\"http://www.goodreads.com/review/show/5774950\">more...</a>\n ]]>\n </body>\n <comments_count>0</comments_count>\n \n <url><![CDATA[http://www.goodreads.com/review/show/5774950]]></url>\n <link><![CDATA[http://www.goodreads.com/review/show/5774950]]></link>\n\
|
91
|
-
</review>\n\n \n <review>\n <id>22819854</id>\n <user>\n <id>811687</id>\n <name><![CDATA[Sandi]]></name>\n <location><![CDATA[Fountain Valley, CA]]></location>\n <link><![CDATA[http://www.goodreads.com/user/show/811687-sandi]]></link>\n <image_url><![CDATA[http://photo.goodreads.com/users/1211125085p3/811687.jpg]]></image_url>\n <small_image_url><![CDATA[http://photo.goodreads.com/users/1211125085p2/811687.jpg]]></small_image_url>\n\
|
92
|
-
</user>\n <rating>5</rating>\n <votes>2</votes>\n\n \n <spoiler_flag>false</spoiler_flag>\n <shelves>\n <shelf name=\"read\" />\n <shelf name=\"sci-fi\" />\n </shelves>\n <recommended_for><![CDATA[]]></recommended_for>\n <recommended_by><![CDATA[September Book of the Month for Science Fiction/Fantasy Group]]></recommended_by>\n <started_at></started_at>\n <read_at></read_at>\n <date_added>Fri May 23 10:55:49 -0700 2008</date_added>\n <date_updated>Wed Aug 20 06:32:05 -0700 2008</date_updated>\n <read_count></read_count>\n <body>\n <![CDATA[I'm officially giving myself permission to not finish this book. I'm only a few chapters in, but I've read it two or three times already, albeit more than ten years ago. I just can't do it one more time.\r<br/>\r<br/>I'm not saying "Dune" is bad. I think it's an excellent choice for the S...\n <a href=\"http://www.goodreads.com/review/show/22819854\">more...</a>\n ]]>\n </body>\n <comments_count>5</comments_count>\n \n <url><![CDATA[http://www.goodreads.com/review/show/22819854]]></url>\n <link><![CDATA[http://www.goodreads.com/review/show/22819854]]></link>\n\
|
93
|
-
</review>\n\n \n <review>\n <id>7609615</id>\n <user>\n <id>190396</id>\n <name><![CDATA[Vanessa]]></name>\n <location><![CDATA[Petaluma, CA]]></location>\n <link><![CDATA[http://www.goodreads.com/user/show/190396-vanessa]]></link>\n <image_url><![CDATA[http://photo.goodreads.com/users/1209310514p3/190396.jpg]]></image_url>\n <small_image_url><![CDATA[http://photo.goodreads.com/users/1209310514p2/190396.jpg]]></small_image_url>\n\
|
94
|
-
</user>\n <rating>3</rating>\n <votes>3</votes>\n\n \n <spoiler_flag>false</spoiler_flag>\n <shelves>\n <shelf name=\"read\" />\n </shelves>\n <recommended_for><![CDATA[]]></recommended_for>\n <recommended_by><![CDATA[]]></recommended_by>\n <started_at></started_at>\n <read_at></read_at>\n <date_added>Thu Oct 11 21:40:29 -0700 2007</date_added>\n <date_updated>Tue Jun 03 07:03:35 -0700 2008</date_updated>\n <read_count></read_count>\n <body>\n <![CDATA[This was (looks furtively over shoulder in case a hardcore Sci-Fi aficianado is lurking nearby with a baseball bat) just okay. Certainly, Herbert has created a richly detailed universe that has delighted legions of fans, but while I admired his construction I was not pulled in by it. The book was...\n <a href=\"http://www.goodreads.com/review/show/7609615\">more...</a>\n ]]>\n </body>\n <comments_count>1</comments_count>\n \n <url><![CDATA[http://www.goodreads.com/review/show/7609615]]></url>\n <link><![CDATA[http://www.goodreads.com/review/show/7609615]]></link>\n\
|
95
|
-
</review>\n\n </reviews>\n <popular_shelves>\n <shelf name=\"to-read\" count=\"32809\"/>\n <shelf name=\"sci-fi\" count=\"1675\"/>\n <shelf name=\"science-fiction\" count=\"1627\"/>\n <shelf name=\"currently-reading\" count=\"1002\"/>\n <shelf name=\"fiction\" count=\"910\"/>\n <shelf name=\"favorites\" count=\"434\"/>\n <shelf name=\"fantasy\" count=\"428\"/>\n <shelf name=\"scifi\" count=\"342\"/>\n <shelf name=\"sci-fi-fantasy\" count=\"253\"/>\n </popular_shelves>\n <book_links>\n <book_link>\n <id>1</id>\n <name><![CDATA[Amazon]]></name>\n <link>http://www.goodreads.com/book_link/follow/1?book_id=53732</link>\n\
|
96
|
-
</book_link><book_link>\n <id>3</id>\n <name><![CDATA[Barnes & Noble]]></name>\n <link>http://www.goodreads.com/book_link/follow/3?book_id=53732</link>\n\
|
97
|
-
</book_link><book_link>\n <id>8</id>\n <name><![CDATA[WorldCat]]></name>\n <link>http://www.goodreads.com/book_link/follow/8?book_id=53732</link>\n\
|
98
|
-
</book_link><book_link>\n <id>2</id>\n <name><![CDATA[Half.com]]></name>\n <link>http://www.goodreads.com/book_link/follow/2?book_id=53732</link>\n\
|
99
|
-
</book_link><book_link>\n <id>4</id>\n <name><![CDATA[Abebooks]]></name>\n <link>http://www.goodreads.com/book_link/follow/4?book_id=53732</link>\n\
|
100
|
-
</book_link><book_link>\n <id>5</id>\n <name><![CDATA[Alibris]]></name>\n <link>http://www.goodreads.com/book_link/follow/5?book_id=53732</link>\n\
|
101
|
-
</book_link><book_link>\n <id>6</id>\n <name><![CDATA[Powells]]></name>\n <link>http://www.goodreads.com/book_link/follow/6?book_id=53732</link>\n\
|
102
|
-
</book_link><book_link>\n <id>7</id>\n <name><![CDATA[IndieBound]]></name>\n <link>http://www.goodreads.com/book_link/follow/7?book_id=53732</link>\n\
|
103
|
-
</book_link><book_link>\n <id>9</id>\n <name><![CDATA[Indigo.ca]]></name>\n <link>http://www.goodreads.com/book_link/follow/9?book_id=53732</link>\n\
|
104
|
-
</book_link><book_link>\n <id>10</id>\n <name><![CDATA[Audible]]></name>\n <link>http://www.goodreads.com/book_link/follow/10?book_id=53732</link>\n\
|
105
|
-
</book_link><book_link>\n <id>1602</id>\n <name><![CDATA[Google eBooks]]></name>\n <link>http://www.goodreads.com/book_link/follow/1602?book_id=53732</link>\n\
|
106
|
-
</book_link>\n </book_links>\n \n \n \n\
|
107
|
-
</book>\n\n\
|
108
|
-
</GoodreadsResponse>"
|
109
|
-
http_version: "1.1"
|
data/spec/spec_helper.rb
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
2
|
-
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
3
|
-
require 'rspec'
|
4
|
-
require 'go_goodreads'
|
5
|
-
require 'vcr'
|
6
|
-
require 'webmock'
|
7
|
-
|
8
|
-
VCR.config do |c|
|
9
|
-
c.cassette_library_dir = 'spec/fixtures/vcr_cassettes'
|
10
|
-
c.stub_with :webmock
|
11
|
-
# c.default_cassette_options = { :record => :new_episodes }
|
12
|
-
end
|
13
|
-
|
14
|
-
# Requires supporting files with custom matchers and macros, etc,
|
15
|
-
# in ./support/ and its subdirectories.
|
16
|
-
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
|
17
|
-
|
18
|
-
RSpec.configure do |config|
|
19
|
-
config.extend VCR::RSpec::Macros
|
20
|
-
end
|
21
|
-
|