readernaut 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/.document ADDED
@@ -0,0 +1,5 @@
1
+ README.rdoc
2
+ lib/**/*.rb
3
+ bin/*
4
+ features/**/*.feature
5
+ LICENSE
data/.gitignore ADDED
@@ -0,0 +1,21 @@
1
+ ## MAC OS
2
+ .DS_Store
3
+
4
+ ## TEXTMATE
5
+ *.tmproj
6
+ tmtags
7
+
8
+ ## EMACS
9
+ *~
10
+ \#*
11
+ .\#*
12
+
13
+ ## VIM
14
+ *.swp
15
+
16
+ ## PROJECT::GENERAL
17
+ coverage
18
+ rdoc
19
+ pkg
20
+
21
+ ## PROJECT::SPECIFIC
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2009 Wynn Netherland
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.rdoc ADDED
@@ -0,0 +1,18 @@
1
+ = readernaut
2
+
3
+ Description goes here.
4
+
5
+ == Note on Patches/Pull Requests
6
+
7
+ * Fork the project.
8
+ * Make your feature addition or bug fix.
9
+ * Add tests for it. This is important so I don't break it in a
10
+ future version unintentionally.
11
+ * Commit, do not mess with rakefile, version, or history.
12
+ (if you want to have your own version, that is fine but
13
+ bump version in a commit by itself I can ignore when I pull)
14
+ * Send me a pull request. Bonus points for topic branches.
15
+
16
+ == Copyright
17
+
18
+ Copyright (c) 2009 Wynn Netherland. See LICENSE for details.
data/Rakefile ADDED
@@ -0,0 +1,60 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+
4
+ begin
5
+ require 'jeweler'
6
+ Jeweler::Tasks.new do |gem|
7
+ gem.name = "readernaut"
8
+ gem.summary = %Q{Wrapper for the Readernaut API}
9
+ gem.description = %Q{Reader is the best book social network around}
10
+ gem.email = "wynn.netherland@gmail.com"
11
+ gem.homepage = "http://github.com/pengwynn/readernaut"
12
+ gem.authors = ["Wynn Netherland"]
13
+
14
+ gem.add_dependency('mash', '~> 0.0.3')
15
+ gem.add_dependency('httparty', '~> 0.4.3')
16
+
17
+ gem.add_development_dependency('shoulda', '>= 2.10.1')
18
+ gem.add_development_dependency('jnunemaker-matchy', '0.4.0')
19
+ gem.add_development_dependency('mocha', '0.9.4')
20
+ gem.add_development_dependency('fakeweb', '>= 1.2.5')
21
+ # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
22
+ end
23
+ Jeweler::GemcutterTasks.new
24
+ rescue LoadError
25
+ puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
26
+ end
27
+
28
+ require 'rake/testtask'
29
+ Rake::TestTask.new(:test) do |test|
30
+ test.libs << 'lib' << 'test'
31
+ test.pattern = 'test/**/test_*.rb'
32
+ test.verbose = true
33
+ end
34
+
35
+ begin
36
+ require 'rcov/rcovtask'
37
+ Rcov::RcovTask.new do |test|
38
+ test.libs << 'test'
39
+ test.pattern = 'test/**/test_*.rb'
40
+ test.verbose = true
41
+ end
42
+ rescue LoadError
43
+ task :rcov do
44
+ abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
45
+ end
46
+ end
47
+
48
+ task :test => :check_dependencies
49
+
50
+ task :default => :test
51
+
52
+ require 'rake/rdoctask'
53
+ Rake::RDocTask.new do |rdoc|
54
+ version = File.exist?('VERSION') ? File.read('VERSION') : ""
55
+
56
+ rdoc.rdoc_dir = 'rdoc'
57
+ rdoc.title = "readernaut #{version}"
58
+ rdoc.rdoc_files.include('README*')
59
+ rdoc.rdoc_files.include('lib/**/*.rb')
60
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.1.0
data/lib/readernaut.rb ADDED
@@ -0,0 +1,25 @@
1
+ require 'rubygems'
2
+
3
+ gem 'mash', '~> 0.0.3'
4
+ require 'mash'
5
+
6
+ gem 'httparty', '~> 0.4.3'
7
+ require 'httparty'
8
+
9
+ class Readernaut
10
+ include HTTParty
11
+ base_uri 'readernaut.com/api/v1/json'
12
+ format :json
13
+
14
+ def self.books(username, options={})
15
+ Mash.new self.get("/#{username}/books/", :query => options)
16
+ end
17
+
18
+ def self.notes(username, options={})
19
+ Mash.new self.get("/#{username}/notes/", :query => options)
20
+ end
21
+
22
+ def self.contacts(username, options={})
23
+ Mash.new self.get("/#{username}/contacts/", :query => options)
24
+ end
25
+ end
@@ -0,0 +1,260 @@
1
+ {
2
+ "version": "1.0",
3
+ "page": 1,
4
+ "total_pages": 20,
5
+ "reader_books": [
6
+
7
+ {
8
+ "reader_book_id": 191852,
9
+ "user": {
10
+ "user_id": 1,
11
+ "username": "nathan"
12
+ },
13
+ "book_edition": {
14
+ "title": "The Housing Boom and Bust",
15
+ "subtitle": "",
16
+ "authors": {
17
+ "author": "Thomas Sowell"
18
+ },
19
+ "isbn": "0465018807",
20
+ "covers": {
21
+ "cover_small": "http://media.readernaut.com/book_covers/0465018807_t50.jpg",
22
+ "cover_medium": "http://media.readernaut.com/book_covers/0465018807_t100.jpg",
23
+ "cover_large": "http://media.readernaut.com/book_covers/0465018807_t150.jpg"
24
+ },
25
+ "permalink": "http://readernaut.com/nathan/books/0465018807/the-housing-boom-and-bust/"
26
+ },
27
+ "created": "2009-10-30 16:03 CDT",
28
+ "modified": "2009-10-30 16:03 CDT",
29
+ "permalink": "http://readernaut.com/nathan/books/0465018807/the-housing-boom-and-bust/"
30
+ },
31
+
32
+ {
33
+ "reader_book_id": 182112,
34
+ "user": {
35
+ "user_id": 1,
36
+ "username": "nathan"
37
+ },
38
+ "book_edition": {
39
+ "title": "Designing for Interaction",
40
+ "subtitle": "Creating Innovative Applications and Devices",
41
+ "authors": {
42
+ "author": "Dan Saffer"
43
+ },
44
+ "isbn": "0321643399",
45
+ "covers": {
46
+ "cover_small": "http://media.readernaut.com/book_covers/0321643399_t50.jpg",
47
+ "cover_medium": "http://media.readernaut.com/book_covers/0321643399_t100.jpg",
48
+ "cover_large": "http://media.readernaut.com/book_covers/0321643399_t150.jpg"
49
+ },
50
+ "permalink": "http://readernaut.com/nathan/books/0321643399/designing-for-interaction/"
51
+ },
52
+ "created": "2009-10-08 10:22 CDT",
53
+ "modified": "2009-10-28 0:34 CDT",
54
+ "permalink": "http://readernaut.com/nathan/books/0321643399/designing-for-interaction/"
55
+ },
56
+
57
+ {
58
+ "reader_book_id": 176505,
59
+ "user": {
60
+ "user_id": 1,
61
+ "username": "nathan"
62
+ },
63
+ "book_edition": {
64
+ "title": "Towards a New Architecture",
65
+ "subtitle": "",
66
+ "authors": {
67
+ "author": "Le Corbusier"
68
+ },
69
+ "isbn": "0486250237",
70
+ "covers": {
71
+ "cover_small": "http://media.readernaut.com/book_covers/0486250237_t50.jpg",
72
+ "cover_medium": "http://media.readernaut.com/book_covers/0486250237_t100.jpg",
73
+ "cover_large": "http://media.readernaut.com/book_covers/0486250237_t150.jpg"
74
+ },
75
+ "permalink": "http://readernaut.com/nathan/books/0486250237/towards-a-new-architecture/"
76
+ },
77
+ "created": "2009-09-23 1:35 CDT",
78
+ "modified": "2009-10-28 0:34 CDT",
79
+ "permalink": "http://readernaut.com/nathan/books/0486250237/towards-a-new-architecture/"
80
+ },
81
+
82
+ {
83
+ "reader_book_id": 171889,
84
+ "user": {
85
+ "user_id": 1,
86
+ "username": "nathan"
87
+ },
88
+ "book_edition": {
89
+ "title": "AM/PM",
90
+ "subtitle": "",
91
+ "authors": {
92
+ "author": "Amelia Gray"
93
+ },
94
+ "isbn": "0977199274",
95
+ "covers": {
96
+ "cover_small": "http://media.readernaut.com/book_covers/0977199274_t50.jpg",
97
+ "cover_medium": "http://media.readernaut.com/book_covers/0977199274_t100.jpg",
98
+ "cover_large": "http://media.readernaut.com/book_covers/0977199274_t150.jpg"
99
+ },
100
+ "permalink": "http://readernaut.com/nathan/books/0977199274/ampm/"
101
+ },
102
+ "created": "2009-09-13 12:32 CDT",
103
+ "modified": "2009-09-13 12:32 CDT",
104
+ "permalink": "http://readernaut.com/nathan/books/0977199274/ampm/"
105
+ },
106
+
107
+ {
108
+ "reader_book_id": 171887,
109
+ "user": {
110
+ "user_id": 1,
111
+ "username": "nathan"
112
+ },
113
+ "book_edition": {
114
+ "title": "Hot \x26 Cool",
115
+ "subtitle": "A Critical Symposium",
116
+ "authors": {
117
+ "author": "Marshall McLuhan"
118
+ },
119
+ "isbn": "B001NE0O76",
120
+ "covers": {
121
+ "cover_small": "http://media.readernaut.com/book_covers/B001NE0O76_t50.jpg",
122
+ "cover_medium": "http://media.readernaut.com/book_covers/B001NE0O76_t100.jpg",
123
+ "cover_large": "http://media.readernaut.com/book_covers/B001NE0O76_t150.jpg"
124
+ },
125
+ "permalink": "http://readernaut.com/nathan/books/B001NE0O76/hot-cool/"
126
+ },
127
+ "created": "2009-09-13 12:27 CDT",
128
+ "modified": "2009-09-13 12:27 CDT",
129
+ "permalink": "http://readernaut.com/nathan/books/B001NE0O76/hot-cool/"
130
+ },
131
+
132
+ {
133
+ "reader_book_id": 171886,
134
+ "user": {
135
+ "user_id": 1,
136
+ "username": "nathan"
137
+ },
138
+ "book_edition": {
139
+ "title": "From Cliche to Archetype",
140
+ "subtitle": "",
141
+ "authors": {
142
+ "author": "Marshall McLuhan",
143
+ "author": "Wilfred Watson"
144
+ },
145
+ "isbn": "B0028GH156",
146
+ "covers": {
147
+ "cover_small": "http://media.readernaut.com/book_covers/B0028GH156__t50.jpg",
148
+ "cover_medium": "http://media.readernaut.com/book_covers/B0028GH156__t100.jpg",
149
+ "cover_large": "http://media.readernaut.com/book_covers/B0028GH156__t150.jpg"
150
+ },
151
+ "permalink": "http://readernaut.com/nathan/books/B0028GH156/from-cliche-to-archetype/"
152
+ },
153
+ "created": "2009-09-13 12:25 CDT",
154
+ "modified": "2009-11-14 11:22 CST",
155
+ "permalink": "http://readernaut.com/nathan/books/B0028GH156/from-cliche-to-archetype/"
156
+ },
157
+
158
+ {
159
+ "reader_book_id": 171885,
160
+ "user": {
161
+ "user_id": 1,
162
+ "username": "nathan"
163
+ },
164
+ "book_edition": {
165
+ "title": "The Bauhaus Ideal Then \x26 Now",
166
+ "subtitle": "An Illustrated Guide to Modern Design",
167
+ "authors": {
168
+ "author": "William Smock"
169
+ },
170
+ "isbn": "0897335902",
171
+ "covers": {
172
+ "cover_small": "http://media.readernaut.com/book_covers/0897335902_t50.jpg",
173
+ "cover_medium": "http://media.readernaut.com/book_covers/0897335902_t100.jpg",
174
+ "cover_large": "http://media.readernaut.com/book_covers/0897335902_t150.jpg"
175
+ },
176
+ "permalink": "http://readernaut.com/nathan/books/0897335902/the-bauhaus-ideal-then-now/"
177
+ },
178
+ "created": "2009-09-13 12:24 CDT",
179
+ "modified": "2009-10-20 10:24 CDT",
180
+ "permalink": "http://readernaut.com/nathan/books/0897335902/the-bauhaus-ideal-then-now/"
181
+ },
182
+
183
+ {
184
+ "reader_book_id": 171884,
185
+ "user": {
186
+ "user_id": 1,
187
+ "username": "nathan"
188
+ },
189
+ "book_edition": {
190
+ "title": "Learning and Memory",
191
+ "subtitle": "",
192
+ "authors": {
193
+ "author": "Donald A. Norman"
194
+ },
195
+ "isbn": "0716713004",
196
+ "covers": {
197
+ "cover_small": "http://media.readernaut.com/book_covers/0716713004_t50.jpg",
198
+ "cover_medium": "http://media.readernaut.com/book_covers/0716713004_t100.jpg",
199
+ "cover_large": "http://media.readernaut.com/book_covers/0716713004_t150.jpg"
200
+ },
201
+ "permalink": "http://readernaut.com/nathan/books/0716713004/learning-and-memory/"
202
+ },
203
+ "created": "2009-09-13 12:23 CDT",
204
+ "modified": "2009-09-13 12:23 CDT",
205
+ "permalink": "http://readernaut.com/nathan/books/0716713004/learning-and-memory/"
206
+ },
207
+
208
+ {
209
+ "reader_book_id": 171883,
210
+ "user": {
211
+ "user_id": 1,
212
+ "username": "nathan"
213
+ },
214
+ "book_edition": {
215
+ "title": "David Foster Wallace\x27s Infinite Jest",
216
+ "subtitle": "A Reader\x27s Guide",
217
+ "authors": {
218
+ "author": "Stephen Burn"
219
+ },
220
+ "isbn": "082641477X",
221
+ "covers": {
222
+ "cover_small": "http://media.readernaut.com/book_covers/082641477X_t50.jpg",
223
+ "cover_medium": "http://media.readernaut.com/book_covers/082641477X_t100.jpg",
224
+ "cover_large": "http://media.readernaut.com/book_covers/082641477X_t150.jpg"
225
+ },
226
+ "permalink": "http://readernaut.com/nathan/books/082641477X/david-foster-wallaces-infinite-jest/"
227
+ },
228
+ "created": "2009-09-13 12:23 CDT",
229
+ "modified": "2009-09-13 12:23 CDT",
230
+ "permalink": "http://readernaut.com/nathan/books/082641477X/david-foster-wallaces-infinite-jest/"
231
+ },
232
+
233
+ {
234
+ "reader_book_id": 171882,
235
+ "user": {
236
+ "user_id": 1,
237
+ "username": "nathan"
238
+ },
239
+ "book_edition": {
240
+ "title": "The Coming Insurrection",
241
+ "subtitle": "",
242
+ "authors": {
243
+ "author": "The Invisible Committee"
244
+ },
245
+ "isbn": "1584350806",
246
+ "covers": {
247
+ "cover_small": "http://media.readernaut.com/book_covers/1584350806_t50.jpg",
248
+ "cover_medium": "http://media.readernaut.com/book_covers/1584350806_t100.jpg",
249
+ "cover_large": "http://media.readernaut.com/book_covers/1584350806_t150.jpg"
250
+ },
251
+ "permalink": "http://readernaut.com/nathan/books/1584350806/the-coming-insurrection/"
252
+ },
253
+ "created": "2009-09-13 12:22 CDT",
254
+ "modified": "2009-09-13 12:22 CDT",
255
+ "permalink": "http://readernaut.com/nathan/books/1584350806/the-coming-insurrection/"
256
+ }
257
+
258
+ ]
259
+ }
260
+
@@ -0,0 +1,109 @@
1
+ {
2
+ "version": "1.0",
3
+ "page": 2,
4
+ "total_pages": 20,
5
+ "contacts": [
6
+
7
+ {
8
+ "user": {
9
+ "user_id": 6480,
10
+ "username": "spacecowboyian"
11
+ },
12
+ "reciprocal": "",
13
+ "created": "2009-11-11 14:07 CST",
14
+ "permalink": "http://readernaut.com/spacecowboyian/"
15
+ },
16
+
17
+ {
18
+ "user": {
19
+ "user_id": 4223,
20
+ "username": "Montylounge"
21
+ },
22
+ "reciprocal": "",
23
+ "created": "2009-10-08 10:44 CDT",
24
+ "permalink": "http://readernaut.com/Montylounge/"
25
+ },
26
+
27
+ {
28
+ "user": {
29
+ "user_id": 4957,
30
+ "username": "coleifer"
31
+ },
32
+ "reciprocal": "",
33
+ "created": "2009-10-07 15:06 CDT",
34
+ "permalink": "http://readernaut.com/coleifer/"
35
+ },
36
+
37
+ {
38
+ "user": {
39
+ "user_id": 5291,
40
+ "username": "poet145"
41
+ },
42
+ "reciprocal": "",
43
+ "created": "2009-09-18 0:18 CDT",
44
+ "permalink": "http://readernaut.com/poet145/"
45
+ },
46
+
47
+ {
48
+ "user": {
49
+ "user_id": 2793,
50
+ "username": "shoghon"
51
+ },
52
+ "reciprocal": "",
53
+ "created": "2009-09-12 23:33 CDT",
54
+ "permalink": "http://readernaut.com/shoghon/"
55
+ },
56
+
57
+ {
58
+ "user": {
59
+ "user_id": 5401,
60
+ "username": "laurakreeger"
61
+ },
62
+ "reciprocal": "",
63
+ "created": "2009-08-30 10:31 CDT",
64
+ "permalink": "http://readernaut.com/laurakreeger/"
65
+ },
66
+
67
+ {
68
+ "user": {
69
+ "user_id": 2962,
70
+ "username": "gus"
71
+ },
72
+ "reciprocal": "",
73
+ "created": "2009-08-07 23:35 CDT",
74
+ "permalink": "http://readernaut.com/gus/"
75
+ },
76
+
77
+ {
78
+ "user": {
79
+ "user_id": 109,
80
+ "username": "beshrkayali"
81
+ },
82
+ "reciprocal": "",
83
+ "created": "2009-08-05 10:36 CDT",
84
+ "permalink": "http://readernaut.com/beshrkayali/"
85
+ },
86
+
87
+ {
88
+ "user": {
89
+ "user_id": 3417,
90
+ "username": "doughellmann"
91
+ },
92
+ "reciprocal": "",
93
+ "created": "2009-08-05 10:36 CDT",
94
+ "permalink": "http://readernaut.com/doughellmann/"
95
+ },
96
+
97
+ {
98
+ "user": {
99
+ "user_id": 4724,
100
+ "username": "jstevens"
101
+ },
102
+ "reciprocal": "",
103
+ "created": "2009-07-31 15:50 CDT",
104
+ "permalink": "http://readernaut.com/jstevens/"
105
+ }
106
+
107
+ ]
108
+ }
109
+
@@ -0,0 +1,282 @@
1
+ {
2
+ "version": "1.0",
3
+ "page": 1,
4
+ "total_pages": 13,
5
+ "notes": [
6
+
7
+ {
8
+ "note_id": 11396,
9
+ "user": {
10
+ "user_id": 1,
11
+ "username": "nathan"
12
+ },
13
+ "book_edition": {
14
+ "title": "From Cliche to Archetype",
15
+ "subtitle": "",
16
+ "authors": {
17
+ "author": "Marshall McLuhan",
18
+ "author": "Wilfred Watson"
19
+ },
20
+ "isbn": "B0028GH156",
21
+ "covers": {
22
+ "cover_small": "http://media.readernaut.com/book_covers/B0028GH156__t50.jpg",
23
+ "cover_medium": "http://media.readernaut.com/book_covers/B0028GH156__t100.jpg",
24
+ "cover_large": "http://media.readernaut.com/book_covers/B0028GH156__t150.jpg"
25
+ },
26
+ "permalink": "http://readernaut.com/nathan/books/B0028GH156/from-cliche-to-archetype/"
27
+ },
28
+ "body": "\x3EJust when the circulating libraries were disillusioning Samuel Taylor Coleridge with the world of novel, and distressing him with the spectacle of the corruption of taste and morals through this kind of entertainment, the newspaper was coming in as the new technological cliché. Lamartine, in 1830, said, \x22The book arrives too late.\x22 The daily newspaper he saw as a new technology, creating a liaison between the public and the writer every twenty\x2Dfour hours, whereas the book took weeks and months to establish the same relation. The speed with which the printed word now related public and the author turned the author into a corporate one, and this distressed people like John Stewart Mill, Carlyle, and Matthew Arnold, who saw the new situation as tragic. But just when the press had established this new cliché form of corporate perception, the probing scholars were already reaching back to retrieve a mythic, and corporate, tribal past through archaeology and anthropology. ",
29
+ "allow_comments": true,
30
+ "tags": "media, newspapers, author, communication, mcluhan",
31
+ "created": "2009-11-14 11:30 CST",
32
+ "modified": "2009-11-14 11:30 CST"
33
+ },
34
+
35
+ {
36
+ "note_id": 11109,
37
+ "user": {
38
+ "user_id": 1,
39
+ "username": "nathan"
40
+ },
41
+ "book_edition": {
42
+ "title": "Sketching User Experiences",
43
+ "subtitle": "Getting the Design Right and the Right Design",
44
+ "authors": {
45
+ "author": "Bill Buxton"
46
+ },
47
+ "isbn": "0123740371",
48
+ "covers": {
49
+ "cover_small": "http://media.readernaut.com/book_covers/0123740371__t50.jpg",
50
+ "cover_medium": "http://media.readernaut.com/book_covers/0123740371__t100.jpg",
51
+ "cover_large": "http://media.readernaut.com/book_covers/0123740371__t150.jpg"
52
+ },
53
+ "permalink": "http://readernaut.com/nathan/books/0123740371/sketching-user-experiences/"
54
+ },
55
+ "body": "\x3EIf you want to get the most out of a sketch, you need to leave big enough holes. Ambiguity creates the holes. It is what enables a sketch to be interpreted in different ways, even by the person who created it. One of the key purposes of sketching in the ideation phase of design is to provide a catalyst to stimulate new and different interpretations. Hence, sketching is fundamental to the cognitive process of design, and it is manifest through a kind of conversation between the designer(s) and their sketches.",
56
+ "allow_comments": true,
57
+ "tags": "sketching, design, process",
58
+ "created": "2009-11-05 0:36 CST",
59
+ "modified": "2009-11-05 0:36 CST"
60
+ },
61
+
62
+ {
63
+ "note_id": 9570,
64
+ "user": {
65
+ "user_id": 1,
66
+ "username": "nathan"
67
+ },
68
+ "book_edition": {
69
+ "title": "Towards a New Architecture",
70
+ "subtitle": "",
71
+ "authors": {
72
+ "author": "Le Corbusier"
73
+ },
74
+ "isbn": "0486250237",
75
+ "covers": {
76
+ "cover_small": "http://media.readernaut.com/book_covers/0486250237_t50.jpg",
77
+ "cover_medium": "http://media.readernaut.com/book_covers/0486250237_t100.jpg",
78
+ "cover_large": "http://media.readernaut.com/book_covers/0486250237_t150.jpg"
79
+ },
80
+ "permalink": "http://readernaut.com/nathan/books/0486250237/towards-a-new-architecture/"
81
+ },
82
+ "body": "\x3ETools are the results of successive improvements\x3B the effort of all generations is embodied in them. The tool is the direct and immediate expression of progress\x3B it gives man essential assistance and essential freedom. We throw the out\x2Dof\x2Ddate tool on the scrap\x2Dheap: the carbine, the culverin, the growler and the locomotive. This action is a manifestation of health, of moral health, of _morale_\x3B it is not right that we should produce bad things because of a bad tool\x3B nor is it right that we should waste our energy, our health and our courage because of a bad tool\x3B it must be thrown away and replaced.",
83
+ "allow_comments": true,
84
+ "tags": "architecture, design, tools",
85
+ "created": "2009-09-23 21:52 CDT",
86
+ "modified": "2009-09-23 21:52 CDT"
87
+ },
88
+
89
+ {
90
+ "note_id": 9157,
91
+ "user": {
92
+ "user_id": 1,
93
+ "username": "nathan"
94
+ },
95
+ "book_edition": {
96
+ "title": "The Information Bomb",
97
+ "subtitle": "",
98
+ "authors": {
99
+ "author": "Paul Virilio"
100
+ },
101
+ "isbn": "1844670597",
102
+ "covers": {
103
+ "cover_small": "http://media.readernaut.com/book_covers/1844670597_t50.jpg",
104
+ "cover_medium": "http://media.readernaut.com/book_covers/1844670597_t100.jpg",
105
+ "cover_large": "http://media.readernaut.com/book_covers/1844670597_t150.jpg"
106
+ },
107
+ "permalink": "http://readernaut.com/nathan/books/1844670597/the-information-bomb/"
108
+ },
109
+ "body": "\x3EThe true hero of the American utopia is neither the cowboy nor the soldier, but the pioneer, the pathfinder, the person who \x27takes his body to where his eyes have been.\x27",
110
+ "allow_comments": true,
111
+
112
+ "created": "2009-09-10 19:32 CDT",
113
+ "modified": "2009-09-10 19:32 CDT"
114
+ },
115
+
116
+ {
117
+ "note_id": 9156,
118
+ "user": {
119
+ "user_id": 1,
120
+ "username": "nathan"
121
+ },
122
+ "book_edition": {
123
+ "title": "The Information Bomb",
124
+ "subtitle": "",
125
+ "authors": {
126
+ "author": "Paul Virilio"
127
+ },
128
+ "isbn": "1844670597",
129
+ "covers": {
130
+ "cover_small": "http://media.readernaut.com/book_covers/1844670597_t50.jpg",
131
+ "cover_medium": "http://media.readernaut.com/book_covers/1844670597_t100.jpg",
132
+ "cover_large": "http://media.readernaut.com/book_covers/1844670597_t150.jpg"
133
+ },
134
+ "permalink": "http://readernaut.com/nathan/books/1844670597/the-information-bomb/"
135
+ },
136
+ "body": "\x3EThe Earth, that phantom limb, no longer extends as far as the eye can see\x3B it presents all aspects of itself for inspection in the strange little window. The sudden multiplication of \x27points of view\x27 merely heralds the latest globalization: the globalization of the gaze, of the single eye of the cyclops who governs the cave, that \x27black box\x27 which increasingly poorly conceals the great culminating moment of history, a history fallen victim to the syndrome of total accomplishment. ",
137
+ "allow_comments": true,
138
+
139
+ "created": "2009-09-10 19:31 CDT",
140
+ "modified": "2009-09-10 19:31 CDT"
141
+ },
142
+
143
+ {
144
+ "note_id": 9155,
145
+ "user": {
146
+ "user_id": 1,
147
+ "username": "nathan"
148
+ },
149
+ "book_edition": {
150
+ "title": "The Information Bomb",
151
+ "subtitle": "",
152
+ "authors": {
153
+ "author": "Paul Virilio"
154
+ },
155
+ "isbn": "1844670597",
156
+ "covers": {
157
+ "cover_small": "http://media.readernaut.com/book_covers/1844670597_t50.jpg",
158
+ "cover_medium": "http://media.readernaut.com/book_covers/1844670597_t100.jpg",
159
+ "cover_large": "http://media.readernaut.com/book_covers/1844670597_t150.jpg"
160
+ },
161
+ "permalink": "http://readernaut.com/nathan/books/1844670597/the-information-bomb/"
162
+ },
163
+ "body": "\x3ESince a picture is worth a thousand words, the aim of multimedia is to turn our old television into a kind of domestic telescope for seeing, for foreseeing (in a manner not unlike present weather\x2Dforecasting) the world that lies just around the corner.",
164
+ "allow_comments": true,
165
+
166
+ "created": "2009-09-10 19:27 CDT",
167
+ "modified": "2009-09-10 19:28 CDT"
168
+ },
169
+
170
+ {
171
+ "note_id": 8686,
172
+ "user": {
173
+ "user_id": 1,
174
+ "username": "nathan"
175
+ },
176
+ "book_edition": {
177
+ "title": "The Pleasures and Sorrows of Work",
178
+ "subtitle": "",
179
+ "authors": {
180
+ "author": "Alain De Botton"
181
+ },
182
+ "isbn": "037542444X",
183
+ "covers": {
184
+ "cover_small": "http://media.readernaut.com/book_covers/037542444X_t50.jpg",
185
+ "cover_medium": "http://media.readernaut.com/book_covers/037542444X_t100.jpg",
186
+ "cover_large": "http://media.readernaut.com/book_covers/037542444X_t150.jpg"
187
+ },
188
+ "permalink": "http://readernaut.com/nathan/books/037542444X/the-pleasures-and-sorrows-of-work/"
189
+ },
190
+ "body": "\x3EMost of us stand poised at the edge of brilliance, haunted by the knowledge of our proximity, yet still demonstrably on the wrong side of the line, our dealings with reality undermined by a range of minor yet critical psychological flaws (a little too much optimism, an unprocessed rebelliousness, a fatal impatience or sentimentality). We are like an exquisite high\x2Dspeed aircraft which for lack of a tiny part is left stranded beside the runway, rendered slower than a tractor or a bicycle.",
191
+ "allow_comments": true,
192
+
193
+ "created": "2009-08-15 12:43 CDT",
194
+ "modified": "2009-08-15 12:43 CDT"
195
+ },
196
+
197
+ {
198
+ "note_id": 8531,
199
+ "user": {
200
+ "user_id": 1,
201
+ "username": "nathan"
202
+ },
203
+ "book_edition": {
204
+ "title": "Utopia",
205
+ "subtitle": "Thomas More",
206
+ "authors": {
207
+ "author": "Sir",
208
+ "author": "Thomas",
209
+ "author": "Saint More"
210
+ },
211
+ "isbn": "0300084293",
212
+ "covers": {
213
+ "cover_small": "http://media.readernaut.com/book_covers/0300084293_t50.jpg",
214
+ "cover_medium": "http://media.readernaut.com/book_covers/0300084293_t100.jpg",
215
+ "cover_large": "http://media.readernaut.com/book_covers/0300084293_t150.jpg"
216
+ },
217
+ "permalink": "http://readernaut.com/nathan/books/0300084293/utopia/"
218
+ },
219
+ "body": "\x3E... the senate has a rule that no point is discussed on the same day it is brought up, but rather it is put off till the next meeting\x3B they do this so that someone who blurts out the first thing that occurs to him will not proceed to think up arguments to defend his position instead of looking for what is of use to the commonwealth, being willing to damage the public welfare rather than his own reputation, ashamed, as it were, in a perverse and wrong\x2Dheaded way, to admit that his first view was short\x2Dsighted. From the start such a person should have take care to speak with deliberation rather than haste.",
220
+ "allow_comments": true,
221
+ "tags": "discussion, arguments, haste",
222
+ "created": "2009-08-07 17:41 CDT",
223
+ "modified": "2009-08-07 17:41 CDT"
224
+ },
225
+
226
+ {
227
+ "note_id": 8313,
228
+ "user": {
229
+ "user_id": 1,
230
+ "username": "nathan"
231
+ },
232
+ "book_edition": {
233
+ "title": "Infinite Jest",
234
+ "subtitle": "",
235
+ "authors": {
236
+ "author": "David Foster Wallace"
237
+ },
238
+ "isbn": "0316066524",
239
+ "covers": {
240
+ "cover_small": "http://media.readernaut.com/book_covers/0316066524_t50.jpg",
241
+ "cover_medium": "http://media.readernaut.com/book_covers/0316066524_t100.jpg",
242
+ "cover_large": "http://media.readernaut.com/book_covers/0316066524_t150.jpg"
243
+ },
244
+ "permalink": "http://readernaut.com/nathan/books/0316066524/infinite-jest/"
245
+ },
246
+ "body": "\x3EThe true opponent, the enfolding boundary, is the player himself. Always and only the self out there, on court, to be met, fought, brought to the table to hammer out terms. The competing boy on the nets other side: his is not the foe: he is more the partner in the dance. He is the what is the word _excuse_ or _occasion_ for meeting the self. As you are his occasion. Tennis\x27s beauty\x27s infinite roots are self\x2Dcompetitive. You compete with your own limits to transcend the self in imagination and execution. Disappear inside the game: break through limits: transcend: improve: win. Which is why tennis is an essentially tragic enterprise, to improve and grow as a serious junior, with ambitions. You seek to vanquish and transcend the limited self whose limits make the game possible in the first place. It is tragic and sad and chaotic and lovely. All life is the same, as citizens of the human State: the animating limits are within, to be killed and mourned, over and over again.",
247
+ "allow_comments": true,
248
+ "tags": "tennis",
249
+ "created": "2009-07-30 3:37 CDT",
250
+ "modified": "2009-07-30 3:37 CDT"
251
+ },
252
+
253
+ {
254
+ "note_id": 8024,
255
+ "user": {
256
+ "user_id": 1,
257
+ "username": "nathan"
258
+ },
259
+ "book_edition": {
260
+ "title": "Infinite Jest",
261
+ "subtitle": "",
262
+ "authors": {
263
+ "author": "David Foster Wallace"
264
+ },
265
+ "isbn": "0316066524",
266
+ "covers": {
267
+ "cover_small": "http://media.readernaut.com/book_covers/0316066524_t50.jpg",
268
+ "cover_medium": "http://media.readernaut.com/book_covers/0316066524_t100.jpg",
269
+ "cover_large": "http://media.readernaut.com/book_covers/0316066524_t150.jpg"
270
+ },
271
+ "permalink": "http://readernaut.com/nathan/books/0316066524/infinite-jest/"
272
+ },
273
+ "body": "\x3ESome persons can give themselves away to an ambitious pursuit and have that be all the giving\x2Dthemselves\x2Daway\x2Dto\x2Dsomething thet need to do. Though sometimes this changes as the players get older and the pursuit more stress\x2Dfraught. American experience seems to suggest that people are virtually unlimited in their need to give themselves away, on various levels. Some just prefer to do it in secret. ",
274
+ "allow_comments": true,
275
+ "tags": "drugs, giving, experience",
276
+ "created": "2009-07-18 12:29 CDT",
277
+ "modified": "2009-07-18 12:29 CDT"
278
+ }
279
+
280
+ ]
281
+ }
282
+
data/test/helper.rb ADDED
@@ -0,0 +1,43 @@
1
+ require 'test/unit'
2
+ require 'pathname'
3
+ require 'rubygems'
4
+
5
+ gem 'thoughtbot-shoulda', '>= 2.10.1'
6
+ gem 'jnunemaker-matchy', '0.4.0'
7
+ gem 'mocha', '0.9.4'
8
+ gem 'fakeweb', '>= 1.2.5'
9
+
10
+ require 'shoulda'
11
+ require 'matchy'
12
+ require 'mocha'
13
+ require 'fakeweb'
14
+
15
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
16
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
17
+ require 'readernaut'
18
+
19
+ class Test::Unit::TestCase
20
+ end
21
+
22
+ FakeWeb.allow_net_connect = false
23
+
24
+
25
+ class Test::Unit::TestCase
26
+ end
27
+
28
+ def fixture_file(filename)
29
+ return '' if filename == ''
30
+ file_path = File.expand_path(File.dirname(__FILE__) + '/fixtures/' + filename)
31
+ File.read(file_path)
32
+ end
33
+
34
+ def readernaut_url(url)
35
+ url =~ /^http/ ? url : "http:/readernaut.com:80#{url}"
36
+ end
37
+
38
+ def stub_get(url, filename, status=nil)
39
+ options = {:body => fixture_file(filename)}
40
+ options.merge!({:status => status}) unless status.nil?
41
+
42
+ FakeWeb.register_uri(:get, readernaut_url(url), options)
43
+ end
@@ -0,0 +1,31 @@
1
+ require 'helper'
2
+
3
+ class TestReadernaut < Test::Unit::TestCase
4
+ context "When hitting the Readernaut API" do
5
+
6
+ should "retrieve a list of books for a user" do
7
+ stub_get "http://readernaut.com/api/v1/json/pengwynn/books/", "books.json"
8
+ results = Readernaut.books('pengwynn')
9
+ edition = results.reader_books.first.book_edition
10
+ edition.title.should == 'The Housing Boom and Bust'
11
+ edition.isbn.should == '0465018807'
12
+ edition.covers.cover_large.should == 'http://media.readernaut.com/book_covers/0465018807_t150.jpg'
13
+ end
14
+
15
+ should "retrieve a list of notes for a user" do
16
+ stub_get "http://readernaut.com/api/v1/json/pengwynn/notes/", "notes.json"
17
+ results = Readernaut.notes('pengwynn')
18
+ note = results.notes.last
19
+ note.note_id.should == 8024
20
+ note.tags.should == 'drugs, giving, experience'
21
+ end
22
+
23
+ should "retrieve a list of contacts for a user" do
24
+ stub_get "http://readernaut.com/api/v1/json/pengwynn/contacts/?page=2", "contacts.json"
25
+ results = Readernaut.contacts('pengwynn', :page => 2)
26
+ results.page.should == 2
27
+ results.contacts.first.user.username.should == 'spacecowboyian'
28
+ end
29
+ end
30
+
31
+ end
metadata ADDED
@@ -0,0 +1,127 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: readernaut
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Wynn Netherland
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-11-14 00:00:00 -06:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: mash
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ~>
22
+ - !ruby/object:Gem::Version
23
+ version: 0.0.3
24
+ version:
25
+ - !ruby/object:Gem::Dependency
26
+ name: httparty
27
+ type: :runtime
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: 0.4.3
34
+ version:
35
+ - !ruby/object:Gem::Dependency
36
+ name: shoulda
37
+ type: :development
38
+ version_requirement:
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: 2.10.1
44
+ version:
45
+ - !ruby/object:Gem::Dependency
46
+ name: jnunemaker-matchy
47
+ type: :development
48
+ version_requirement:
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "="
52
+ - !ruby/object:Gem::Version
53
+ version: 0.4.0
54
+ version:
55
+ - !ruby/object:Gem::Dependency
56
+ name: mocha
57
+ type: :development
58
+ version_requirement:
59
+ version_requirements: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - "="
62
+ - !ruby/object:Gem::Version
63
+ version: 0.9.4
64
+ version:
65
+ - !ruby/object:Gem::Dependency
66
+ name: fakeweb
67
+ type: :development
68
+ version_requirement:
69
+ version_requirements: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ version: 1.2.5
74
+ version:
75
+ description: Reader is the best book social network around
76
+ email: wynn.netherland@gmail.com
77
+ executables: []
78
+
79
+ extensions: []
80
+
81
+ extra_rdoc_files:
82
+ - LICENSE
83
+ - README.rdoc
84
+ files:
85
+ - .document
86
+ - .gitignore
87
+ - LICENSE
88
+ - README.rdoc
89
+ - Rakefile
90
+ - VERSION
91
+ - lib/readernaut.rb
92
+ - test/fixtures/books.json
93
+ - test/fixtures/contacts.json
94
+ - test/fixtures/notes.json
95
+ - test/helper.rb
96
+ - test/test_readernaut.rb
97
+ has_rdoc: true
98
+ homepage: http://github.com/pengwynn/readernaut
99
+ licenses: []
100
+
101
+ post_install_message:
102
+ rdoc_options:
103
+ - --charset=UTF-8
104
+ require_paths:
105
+ - lib
106
+ required_ruby_version: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: "0"
111
+ version:
112
+ required_rubygems_version: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: "0"
117
+ version:
118
+ requirements: []
119
+
120
+ rubyforge_project:
121
+ rubygems_version: 1.3.5
122
+ signing_key:
123
+ specification_version: 3
124
+ summary: Wrapper for the Readernaut API
125
+ test_files:
126
+ - test/helper.rb
127
+ - test/test_readernaut.rb