dewey 0.2.4 → 0.2.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG.md +10 -0
- data/lib/dewey/client_auth.rb +14 -1
- data/lib/dewey/core.rb +16 -30
- data/lib/dewey/version.rb +1 -1
- metadata +3 -3
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
## 0.2.6 (November 3, 2010)
|
2
|
+
|
3
|
+
* Downloaded files are automatically rewound
|
4
|
+
|
5
|
+
## 0.2.5 (November 3, 2010)
|
6
|
+
|
7
|
+
* Sheet (gid) support for spreadsheets
|
8
|
+
* Delegate authentication, more reliable and no need for eval + alias_method
|
9
|
+
* Fix spreadsheet calls not authenticating
|
10
|
+
|
1
11
|
## 0.2.4 (November 2, 2010)
|
2
12
|
|
3
13
|
Additions:
|
data/lib/dewey/client_auth.rb
CHANGED
@@ -41,7 +41,20 @@ module Dewey
|
|
41
41
|
end
|
42
42
|
|
43
43
|
def token(service = nil)
|
44
|
-
|
44
|
+
service = guard(service)
|
45
|
+
authenticate!(service) unless authenticated?(service)
|
46
|
+
@authentications[service]
|
47
|
+
end
|
48
|
+
|
49
|
+
private
|
50
|
+
|
51
|
+
def guard(service)
|
52
|
+
case service
|
53
|
+
when nil then :writely
|
54
|
+
when 'spreadsheet' then :wise
|
55
|
+
else
|
56
|
+
service.to_sym
|
57
|
+
end
|
45
58
|
end
|
46
59
|
end
|
47
60
|
end
|
data/lib/dewey/core.rb
CHANGED
@@ -30,7 +30,7 @@ module Dewey
|
|
30
30
|
def authenticate!
|
31
31
|
@@authenticator.authenticate!
|
32
32
|
end
|
33
|
-
|
33
|
+
|
34
34
|
# Queries the document list for a particular title. Titles can be either
|
35
35
|
# full or partial matches. Matches are returned as an array of ids.
|
36
36
|
#
|
@@ -45,7 +45,7 @@ module Dewey
|
|
45
45
|
headers = base_headers(false)
|
46
46
|
url = "#{GOOGLE_FEED_URL}?title=#{title}"
|
47
47
|
url << "&title-exact=true" if options[:exact]
|
48
|
-
response =
|
48
|
+
response = http_request(:get, url, headers)
|
49
49
|
|
50
50
|
response.kind_of?(Net::HTTPOK) ? extract_ids(response.body) : []
|
51
51
|
end
|
@@ -76,7 +76,7 @@ module Dewey
|
|
76
76
|
# Rewind the file in the case of multiple uploads, or conversions
|
77
77
|
file.rewind
|
78
78
|
|
79
|
-
response =
|
79
|
+
response = http_request(:post, GOOGLE_FEED_URL, headers, file.read.to_s)
|
80
80
|
|
81
81
|
if response.kind_of?(Net::HTTPCreated)
|
82
82
|
extract_ids(response.body).first
|
@@ -85,6 +85,9 @@ module Dewey
|
|
85
85
|
end
|
86
86
|
end
|
87
87
|
|
88
|
+
# The same as `put`, except it will raise an exception if the request fails.
|
89
|
+
#
|
90
|
+
# @see put
|
88
91
|
def put!(file, options = {})
|
89
92
|
put(file, options) || raise(DeweyException, "Unable to put document")
|
90
93
|
end
|
@@ -131,18 +134,20 @@ module Dewey
|
|
131
134
|
unless format.empty?
|
132
135
|
if Dewey::Validation.valid_export_format?(format, service)
|
133
136
|
url << "&exportFormat=#{format}"
|
134
|
-
url << "&format=#{format}"
|
137
|
+
url << "&format=#{format}" if service == 'document'
|
138
|
+
url << "&gid=#{options[:sheet]}" if service == 'spreadsheet' && options[:sheet]
|
135
139
|
else
|
136
140
|
raise DeweyException, "Invalid format: #{format}"
|
137
141
|
end
|
138
142
|
end
|
139
143
|
|
140
|
-
response =
|
144
|
+
response = http_request(:get, url, base_headers(true, service))
|
141
145
|
|
142
146
|
if response.kind_of?(Net::HTTPOK)
|
143
147
|
file = Tempfile.new([id, format].join('.'))
|
144
148
|
file.binmode
|
145
149
|
file.write(response.body)
|
150
|
+
file.rewind
|
146
151
|
file
|
147
152
|
else
|
148
153
|
nil
|
@@ -171,7 +176,7 @@ module Dewey
|
|
171
176
|
url = "#{GOOGLE_FEED_URL}/#{Dewey::Utils.escape(id)}"
|
172
177
|
url << "?delete=true" unless trash
|
173
178
|
|
174
|
-
response =
|
179
|
+
response = http_request(:delete, url, headers)
|
175
180
|
|
176
181
|
response.kind_of?(Net::HTTPOK)
|
177
182
|
end
|
@@ -184,18 +189,6 @@ module Dewey
|
|
184
189
|
delete(query, options) || raise(DeweyException, "Unable to delete document")
|
185
190
|
end
|
186
191
|
|
187
|
-
[:search, :put, :get, :delete].each do |method|
|
188
|
-
aliased = "no_auto_authenticate_#{method.to_s}".to_sym
|
189
|
-
alias_method aliased, method
|
190
|
-
|
191
|
-
self.class_eval(%Q{
|
192
|
-
def #{method} *args
|
193
|
-
authenticate! unless authenticated?
|
194
|
-
#{aliased}(*args)
|
195
|
-
end
|
196
|
-
})
|
197
|
-
end
|
198
|
-
|
199
192
|
# Convenience method for `put`, `get`, `delete`.
|
200
193
|
#
|
201
194
|
# @param [File] file The file that will be converted
|
@@ -219,17 +212,10 @@ module Dewey
|
|
219
212
|
end
|
220
213
|
|
221
214
|
protected
|
222
|
-
|
223
|
-
def get_request(url, headers) #:nodoc:
|
224
|
-
http_request(:get, url, headers)
|
225
|
-
end
|
226
|
-
|
227
|
-
def post_request(url, data, headers) #:nodoc:
|
228
|
-
http_request(:post, url, headers, data)
|
229
|
-
end
|
230
215
|
|
231
|
-
|
232
|
-
|
216
|
+
# Present for simplified testing
|
217
|
+
def authenticator #:nodoc:
|
218
|
+
@@authenticator
|
233
219
|
end
|
234
220
|
|
235
221
|
def http_request(method, url, headers, data = nil) #:nodoc:
|
@@ -255,11 +241,11 @@ module Dewey
|
|
255
241
|
#
|
256
242
|
# @param [Boolean] form If true the Content-Type will be set accordingly
|
257
243
|
# @return [Hash] Headers hash
|
258
|
-
def base_headers(form = true) #:nodoc:
|
244
|
+
def base_headers(form = true, service = nil) #:nodoc:
|
259
245
|
base = {}
|
260
246
|
base['GData-Version'] = '3.0'
|
261
247
|
base['Content-Type'] = 'application/x-www-form-urlencoded' if form
|
262
|
-
base['Authorization'] = "GoogleLogin auth=#{
|
248
|
+
base['Authorization'] = "GoogleLogin auth=#{authenticator.token(service)}"
|
263
249
|
|
264
250
|
base
|
265
251
|
end
|
data/lib/dewey/version.rb
CHANGED
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 2
|
8
|
-
-
|
9
|
-
version: 0.2.
|
8
|
+
- 6
|
9
|
+
version: 0.2.6
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Parker Selbert
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-11-
|
17
|
+
date: 2010-11-03 00:00:00 -05:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|