dewey 0.2.3 → 0.2.4
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.md +19 -0
- data/README.md +13 -11
- data/lib/dewey.rb +6 -4
- data/lib/dewey/core.rb +19 -6
- data/lib/dewey/mime.rb +11 -1
- data/lib/dewey/validation.rb +3 -0
- data/lib/dewey/version.rb +1 -1
- metadata +18 -5
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,22 @@
|
|
1
|
+
## 0.2.4 (November 2, 2010)
|
2
|
+
|
3
|
+
Additions:
|
4
|
+
|
5
|
+
- Support downloading drawings
|
6
|
+
- Support downloading presentations
|
7
|
+
- Drawing mime support and validation
|
8
|
+
- put! method to raise on failed requests
|
9
|
+
|
10
|
+
Changes:
|
11
|
+
|
12
|
+
- Add support for new style export options (exportFormat & format)
|
13
|
+
|
14
|
+
Bugfixes:
|
15
|
+
|
16
|
+
- Fix search results pulling the feed id and not just the entry id
|
17
|
+
- Fix entries pulling the feed along with the resource id
|
18
|
+
- Remove calls to blank?
|
19
|
+
|
1
20
|
## 0.2.3 (October 30, 2010)
|
2
21
|
|
3
22
|
Additions:
|
data/README.md
CHANGED
@@ -1,21 +1,23 @@
|
|
1
1
|
::::::::: :::::::::: ::: ::: :::::::::: ::: :::
|
2
2
|
:+: :+: :+: :+: :+: :+: :+: :+:
|
3
|
-
+:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+
|
4
|
-
+#+ +:+ +#++:++# +#+ +:+ +#+ +#++:++# +#++:
|
5
|
-
+#+ +#+ +#+ +#+ +#+#+ +#+ +#+ +#+
|
6
|
-
#+# #+# #+# #+#+# #+#+# #+# #+#
|
3
|
+
+:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+
|
4
|
+
+#+ +:+ +#++:++# +#+ +:+ +#+ +#++:++# +#++:
|
5
|
+
+#+ +#+ +#+ +#+ +#+#+ +#+ +#+ +#+
|
6
|
+
#+# #+# #+# #+#+# #+#+# #+# #+#
|
7
7
|
######### ########## ### ### ########## ###
|
8
8
|
|
9
|
-
Dewey allows you to simply upload, download and delete files from your Google
|
10
|
-
Docs account.
|
11
9
|
|
12
|
-
|
10
|
+
# Light, simple Google Docs library for Ruby.
|
11
|
+
|
12
|
+
Dewey focuses on the simple cases of authorizing, searching, and managing the
|
13
|
+
files on a Google Docs account. Really, it stemmed from the need to use Docs
|
14
|
+
great document conversion services.
|
13
15
|
|
14
16
|
## Note
|
15
17
|
|
16
18
|
Dewey is in alpha. It is not recommended you use this in production code.
|
17
19
|
|
18
|
-
##
|
20
|
+
## Authentication
|
19
21
|
|
20
22
|
You can configure Dewey to connect with either ClientLogin or OAuth. If you choose
|
21
23
|
OAuth you'll only have to authenticate the first time you connect and subsequent
|
@@ -23,11 +25,11 @@ connections will use the saved token.
|
|
23
25
|
|
24
26
|
ClientLogin
|
25
27
|
|
26
|
-
Dewey.
|
27
|
-
|
28
|
+
Dewey.authentication :client, :email => 'example@gmail.com', :password => 'password'
|
29
|
+
|
28
30
|
OAuth
|
29
31
|
|
30
|
-
Dewey.
|
32
|
+
Dewey.authentication :oauth, :idontknowwhatgoeshereyet
|
31
33
|
|
32
34
|
## File Operations
|
33
35
|
|
data/lib/dewey.rb
CHANGED
@@ -3,9 +3,11 @@ module Dewey
|
|
3
3
|
GOOGLE_SPRD_URL = "https://spreadsheets.google.com"
|
4
4
|
GOOGLE_LOGIN_URL = "https://www.google.com/accounts/ClientLogin"
|
5
5
|
|
6
|
-
GOOGLE_FEED_URL
|
7
|
-
GOOGLE_DOCUMENT_URL
|
8
|
-
|
6
|
+
GOOGLE_FEED_URL = GOOGLE_DOCS_URL + "/feeds/default/private/full"
|
7
|
+
GOOGLE_DOCUMENT_URL = GOOGLE_DOCS_URL + "/feeds/download/documents/Export"
|
8
|
+
GOOGLE_DRAWING_URL = GOOGLE_DOCS_URL + "/feeds/download/drawings/Export"
|
9
|
+
GOOGLE_PRESENTATION_URL = GOOGLE_DOCS_URL + "/feeds/download/presentations/Export"
|
10
|
+
GOOGLE_SPREADSHEET_URL = GOOGLE_SPRD_URL + "/feeds/download/spreadsheets/Export"
|
9
11
|
|
10
12
|
class DeweyException < Exception; end
|
11
13
|
class DeweyAuthorizationException < Exception; end
|
@@ -17,4 +19,4 @@ require 'dewey/https'
|
|
17
19
|
require 'dewey/mime'
|
18
20
|
require 'dewey/utils'
|
19
21
|
require 'dewey/validation'
|
20
|
-
require 'dewey/version'
|
22
|
+
require 'dewey/version'
|
data/lib/dewey/core.rb
CHANGED
@@ -58,7 +58,7 @@ module Dewey
|
|
58
58
|
# @option options [Symbol] :title An alternative title, to be used instead
|
59
59
|
# of the filename
|
60
60
|
#
|
61
|
-
# @return [String,
|
61
|
+
# @return [String, nil] The id if upload was successful, nil otherwise
|
62
62
|
def put(file, options = {})
|
63
63
|
extension = File.extname(file.path).sub('.', '')
|
64
64
|
basename = File.basename(file.path, ".#{extension}")
|
@@ -81,10 +81,14 @@ module Dewey
|
|
81
81
|
if response.kind_of?(Net::HTTPCreated)
|
82
82
|
extract_ids(response.body).first
|
83
83
|
else
|
84
|
-
|
84
|
+
nil
|
85
85
|
end
|
86
86
|
end
|
87
87
|
|
88
|
+
def put!(file, options = {})
|
89
|
+
put(file, options) || raise(DeweyException, "Unable to put document")
|
90
|
+
end
|
91
|
+
|
88
92
|
# Download a file. You may optionally specify a format for export.
|
89
93
|
#
|
90
94
|
# @param [String] query A resource id or title, `document:12345` or
|
@@ -111,14 +115,23 @@ module Dewey
|
|
111
115
|
when 'document'
|
112
116
|
url << GOOGLE_DOCUMENT_URL
|
113
117
|
url << "?docID=#{id}"
|
118
|
+
when 'drawing'
|
119
|
+
url << GOOGLE_DRAWING_URL
|
120
|
+
url << "?docID=#{id}"
|
121
|
+
when 'presentation'
|
122
|
+
url << GOOGLE_PRESENTATION_URL
|
123
|
+
url << "?docID=#{id}"
|
114
124
|
when 'spreadsheet'
|
115
125
|
url << GOOGLE_SPREADSHEET_URL
|
116
126
|
url << "?key=#{id}"
|
127
|
+
else
|
128
|
+
raise DeweyException, "Invalid service: #{service}"
|
117
129
|
end
|
118
130
|
|
119
|
-
unless format.
|
131
|
+
unless format.empty?
|
120
132
|
if Dewey::Validation.valid_export_format?(format, service)
|
121
|
-
url << "&exportFormat=#{format}"
|
133
|
+
url << "&exportFormat=#{format}"
|
134
|
+
url << "&format=#{format}" if service == 'document'
|
122
135
|
else
|
123
136
|
raise DeweyException, "Invalid format: #{format}"
|
124
137
|
end
|
@@ -257,12 +270,12 @@ module Dewey
|
|
257
270
|
# @return [Array] Array of document ids
|
258
271
|
def extract_ids(response) #:nodoc:
|
259
272
|
xml = REXML::Document.new(response)
|
260
|
-
xml.elements.collect('//id') { |e| e.text.gsub('%3A', ':') }
|
273
|
+
xml.elements.collect('//entry//id') { |e| e.text.split('/').last.gsub('%3A', ':') }
|
261
274
|
end
|
262
275
|
|
263
276
|
# Is the string an id or a search query?
|
264
277
|
def is_id?(string)
|
265
|
-
string.match(/^
|
278
|
+
string.match(/^[a-z]+:.+$/)
|
266
279
|
end
|
267
280
|
end
|
268
281
|
end
|
data/lib/dewey/mime.rb
CHANGED
@@ -11,6 +11,12 @@ module Dewey
|
|
11
11
|
:sxw => 'application/vnd.sun.xml.writer',
|
12
12
|
:txt => 'text/plain'
|
13
13
|
}
|
14
|
+
|
15
|
+
DRAWING_MIMETYPES = {
|
16
|
+
:jpeg => 'image/jpeg',
|
17
|
+
:png => 'image/png',
|
18
|
+
:svg => 'image/svg+xml'
|
19
|
+
}
|
14
20
|
|
15
21
|
PRESENTATION_MIMETYPES = {
|
16
22
|
:pps => 'application/vnd.ms-powerpoint',
|
@@ -36,13 +42,16 @@ module Dewey
|
|
36
42
|
when /csv/ then SPREADSHEET_MIMETYPES[:csv]
|
37
43
|
when /doc$/ then DOCUMENT_MIMETYPES[:doc]
|
38
44
|
when /docx/ then DOCUMENT_MIMETYPES[:docx]
|
45
|
+
when /jpeg/ then DRAWING_MIMETYPES[:jpeg]
|
39
46
|
when /htm/ then DOCUMENT_MIMETYPES[:html]
|
40
47
|
when /ods/ then SPREADSHEET_MIMETYPES[:ods]
|
41
48
|
when /odt/ then DOCUMENT_MIMETYPES[:odt]
|
42
49
|
when /pdf/ then DOCUMENT_MIMETYPES[:pdf]
|
50
|
+
when /png/ then DRAWING_MIMETYPES[:png]
|
43
51
|
when /pps/ then PRESENTATION_MIMETYPES[:pps]
|
44
52
|
when /ppt/ then PRESENTATION_MIMETYPES[:ppt]
|
45
53
|
when /rtf/ then DOCUMENT_MIMETYPES[:rtf]
|
54
|
+
when /svg/ then DRAWING_MIMETYPES[:svg]
|
46
55
|
when /sxw/ then DOCUMENT_MIMETYPES[:sxw]
|
47
56
|
when /tab/ then SPREADSHEET_MIMETYPES[:tab]
|
48
57
|
when /tsv/ then SPREADSHEET_MIMETYPES[:tsv]
|
@@ -66,6 +75,7 @@ module Dewey
|
|
66
75
|
|
67
76
|
def self.guess_service(mime_type)
|
68
77
|
services = { :document => DOCUMENT_MIMETYPES,
|
78
|
+
:drawing => DRAWING_MIMETYPES,
|
69
79
|
:presentation => PRESENTATION_MIMETYPES,
|
70
80
|
:spreadsheet => SPREADSHEET_MIMETYPES }
|
71
81
|
|
@@ -76,4 +86,4 @@ module Dewey
|
|
76
86
|
nil
|
77
87
|
end
|
78
88
|
end
|
79
|
-
end
|
89
|
+
end
|
data/lib/dewey/validation.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
module Dewey
|
2
2
|
|
3
3
|
DOCUMENT_EXPORT_FORMATS = [:txt, :odt, :pdf, :html, :rtf, :doc, :png, :zip]
|
4
|
+
DRAWING_EXPORT_FORMATS = [:jpeg, :pdf, :png, :svg]
|
4
5
|
PRESENTATION_EXPORT_FORMATS = [:swf, :pdf, :png, :ppt]
|
5
6
|
SPREADSHEET_EXPORT_FORMATS = [:xls, :csv, :pdf, :ods, :tsv, :html]
|
6
7
|
|
@@ -24,6 +25,7 @@ module Dewey
|
|
24
25
|
|
25
26
|
case service
|
26
27
|
when :document then Dewey::DOCUMENT_MIMETYPES.has_key?(format)
|
28
|
+
when :drawing then Dewey::DRAWING_MIMETYPES.has_key?(format)
|
27
29
|
when :presentation then Dewey::PRESENTATION_MIMETYPES.has_key?(format)
|
28
30
|
when :spreadsheet then Dewey::SPREADSHEET_MIMETYPES.has_key?(format)
|
29
31
|
else
|
@@ -46,6 +48,7 @@ module Dewey
|
|
46
48
|
|
47
49
|
case service
|
48
50
|
when :document then Dewey::DOCUMENT_EXPORT_FORMATS.include?(format)
|
51
|
+
when :drawing then Dewey::DRAWING_EXPORT_FORMATS.include?(format)
|
49
52
|
when :presentation then Dewey::PRESENTATION_EXPORT_FORMATS.include?(format)
|
50
53
|
when :spreadsheet then Dewey::SPREADSHEET_EXPORT_FORMATS.include?(format)
|
51
54
|
else
|
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
|
+
- 4
|
9
|
+
version: 0.2.4
|
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-
|
17
|
+
date: 2010-11-02 00:00:00 -05:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -30,7 +30,20 @@ dependencies:
|
|
30
30
|
version: "0"
|
31
31
|
type: :development
|
32
32
|
version_requirements: *id001
|
33
|
-
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: webmock
|
35
|
+
prerelease: false
|
36
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
37
|
+
none: false
|
38
|
+
requirements:
|
39
|
+
- - ">="
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
segments:
|
42
|
+
- 0
|
43
|
+
version: "0"
|
44
|
+
type: :development
|
45
|
+
version_requirements: *id002
|
46
|
+
description: Light, simple Google Docs library for Ruby.
|
34
47
|
email:
|
35
48
|
- parker@sorentwo.com
|
36
49
|
executables: []
|
@@ -83,6 +96,6 @@ rubyforge_project: dewey
|
|
83
96
|
rubygems_version: 1.3.7
|
84
97
|
signing_key:
|
85
98
|
specification_version: 3
|
86
|
-
summary: Google Docs
|
99
|
+
summary: Simple Google Docs library.
|
87
100
|
test_files: []
|
88
101
|
|