google_drive 0.3.10 → 0.3.11
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.
- checksums.yaml +7 -7
- data/README.rdoc +1 -1
- data/lib/google_drive.rb +73 -58
- data/lib/google_drive/acl.rb +2 -2
- data/lib/google_drive/acl_entry.rb +10 -0
- data/lib/google_drive/collection.rb +1 -1
- data/lib/google_drive/file.rb +15 -8
- data/lib/google_drive/session.rb +31 -1
- data/lib/google_drive/spreadsheet.rb +16 -3
- data/lib/google_drive/util.rb +5 -0
- metadata +77 -83
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
|
-
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
5
|
-
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
1
|
+
---
|
2
|
+
SHA512:
|
3
|
+
metadata.gz: aacfb80c76656613c5a1735977c6e39796a1df82a5a8a97944381c289362eaefdfee229b1c586f94378f46a8357caec0030f00b7a032404e27f2f93f69934137
|
4
|
+
data.tar.gz: d8f9abf36d3406863e85520041adc04b5a1c9e64b344331982ed89ae6d2296d27d54fc13bb000bdf1ca0dce497f5f0a740ea40441ee18d2100c4cc6fdf4e724c
|
5
|
+
SHA1:
|
6
|
+
metadata.gz: cc0c279d89eeff98e5a5a85f82287db36343402d
|
7
|
+
data.tar.gz: 9cb3dff31f112e16654f61bef9049b938487e33c
|
data/README.rdoc
CHANGED
data/lib/google_drive.rb
CHANGED
@@ -1,6 +1,10 @@
|
|
1
1
|
# Author: Hiroshi Ichikawa <http://gimite.net/>
|
2
2
|
# The license of this source is "New BSD Licence"
|
3
3
|
|
4
|
+
require "rubygems"
|
5
|
+
require "google/api_client"
|
6
|
+
require "json"
|
7
|
+
|
4
8
|
require "google_drive/session"
|
5
9
|
|
6
10
|
|
@@ -10,22 +14,17 @@ module GoogleDrive
|
|
10
14
|
# if succeeds. Raises GoogleDrive::AuthenticationError if fails.
|
11
15
|
# Google Apps account is supported.
|
12
16
|
#
|
13
|
-
# +proxy+
|
14
|
-
# HTTP access in the session uses the proxy. If +proxy+ is nil, it uses the proxy
|
15
|
-
# specified by http_proxy environment variable if available. Otherwise it performs direct
|
16
|
-
# access.
|
17
|
+
# +proxy+ is deprecated, and will be removed in the next version.
|
17
18
|
def self.login(mail, password, proxy = nil)
|
18
19
|
return Session.login(mail, password, proxy)
|
19
20
|
end
|
20
21
|
|
21
|
-
# Authenticates with given
|
22
|
+
# Authenticates with given OAuth2 token.
|
22
23
|
#
|
23
|
-
# +access_token+ can be either OAuth2 access_token string
|
24
|
+
# +access_token+ can be either OAuth2 access_token string or OAuth2::AccessToken.
|
25
|
+
# Specifying OAuth::AccessToken is deprecated, and will not work in the next version.
|
24
26
|
#
|
25
|
-
# +proxy+
|
26
|
-
# HTTP access in the session uses the proxy. If +proxy+ is nil, it uses the proxy
|
27
|
-
# specified by http_proxy environment variable if available. Otherwise it performs direct
|
28
|
-
# access.
|
27
|
+
# +proxy+ is deprecated, and will be removed in the next version.
|
29
28
|
#
|
30
29
|
# OAuth2 code example:
|
31
30
|
#
|
@@ -55,20 +54,6 @@ module GoogleDrive
|
|
55
54
|
# If your app is not a Web app, use "urn:ietf:wg:oauth:2.0:oob" as redirect_url. Then
|
56
55
|
# authorization code is shown after authorization.
|
57
56
|
#
|
58
|
-
# OAuth1 code example:
|
59
|
-
#
|
60
|
-
# 1) First generate OAuth consumer object with key and secret for your site by registering site
|
61
|
-
# with Google.
|
62
|
-
# @consumer = OAuth::Consumer.new( "key","secret", {:site=>"https://agree2"})
|
63
|
-
# 2) Request token with OAuth.
|
64
|
-
# @request_token = @consumer.get_request_token
|
65
|
-
# session[:request_token] = @request_token
|
66
|
-
# redirect_to @request_token.authorize_url
|
67
|
-
# 3) Create an oauth access token.
|
68
|
-
# @oauth_access_token = @request_token.get_access_token
|
69
|
-
# @access_token = OAuth::AccessToken.new(
|
70
|
-
# @consumer, @oauth_access_token.token, @oauth_access_token.secret)
|
71
|
-
#
|
72
57
|
# See these documents for details:
|
73
58
|
#
|
74
59
|
# - https://github.com/intridea/oauth2
|
@@ -87,47 +72,77 @@ module GoogleDrive
|
|
87
72
|
end
|
88
73
|
|
89
74
|
# Restores GoogleDrive::Session from +path+ and returns it.
|
90
|
-
# If +path+ doesn't exist or authentication has failed, prompts
|
91
|
-
#
|
75
|
+
# If +path+ doesn't exist or authentication has failed, prompts the user to authorize the access,
|
76
|
+
# stores the session to +path+ and returns it.
|
92
77
|
#
|
93
|
-
#
|
78
|
+
# +path+ defaults to ENV["HOME"] + "/.ruby_google_drive.token".
|
94
79
|
#
|
95
|
-
#
|
96
|
-
def self.saved_session(path =
|
97
|
-
|
80
|
+
# You can specify your own OAuth +client_id+ and +client_secret+. Otherwise the default one is used.
|
81
|
+
def self.saved_session(path = nil, proxy = nil, client_id = nil, client_secret = nil)
|
82
|
+
|
83
|
+
if proxy
|
84
|
+
raise(
|
85
|
+
ArgumentError,
|
86
|
+
"Specifying a proxy object is no longer supported. Set ENV[\"http_proxy\"] instead.")
|
87
|
+
end
|
88
|
+
|
89
|
+
if !client_id && !client_secret
|
90
|
+
client_id = "452925651630-egr1f18o96acjjvphpbbd1qlsevkho1d.apps.googleusercontent.com"
|
91
|
+
client_secret = "1U3-Krii5x1oLPrwD5zgn-ry"
|
92
|
+
elsif !client_id || !client_secret
|
93
|
+
raise(ArgumentError, "client_id and client_secret must be both specified or both omitted")
|
94
|
+
end
|
95
|
+
|
96
|
+
path ||= ENV["HOME"] + "/.ruby_google_drive.token"
|
98
97
|
if ::File.exist?(path)
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
98
|
+
lines = ::File.readlines(path)
|
99
|
+
case lines.size
|
100
|
+
when 1
|
101
|
+
token_data = JSON.parse(lines[0].chomp())
|
102
|
+
when 2
|
103
|
+
# Old format.
|
104
|
+
token_data = nil
|
105
|
+
else
|
106
|
+
raise(ArgumentError, "Not a token file: %s" % path)
|
104
107
|
end
|
108
|
+
else
|
109
|
+
token_data = nil
|
105
110
|
end
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
111
|
+
|
112
|
+
client = Google::APIClient.new(
|
113
|
+
:application_name => "google_drive Ruby library",
|
114
|
+
:application_version => "0.3.11"
|
115
|
+
)
|
116
|
+
auth = client.authorization
|
117
|
+
auth.client_id = client_id
|
118
|
+
auth.client_secret = client_secret
|
119
|
+
auth.scope =
|
120
|
+
"https://www.googleapis.com/auth/drive " +
|
121
|
+
"https://spreadsheets.google.com/feeds/ " +
|
122
|
+
"https://docs.google.com/feeds/ " +
|
123
|
+
"https://docs.googleusercontent.com/"
|
124
|
+
auth.redirect_uri = "urn:ietf:wg:oauth:2.0:oob"
|
125
|
+
|
126
|
+
if token_data
|
127
|
+
|
128
|
+
auth.refresh_token = token_data["refresh_token"]
|
129
|
+
auth.fetch_access_token!()
|
130
|
+
|
131
|
+
else
|
132
|
+
|
133
|
+
$stderr.print("\n1. Open this page:\n%s\n\n" % auth.authorization_uri)
|
134
|
+
$stderr.print("2. Enter the authorization code shown in the page: ")
|
135
|
+
auth.code = $stdin.gets().chomp()
|
136
|
+
auth.fetch_access_token!()
|
137
|
+
token_data = {"refresh_token" => auth.refresh_token}
|
121
138
|
open(path, "w", 0600) do |f|
|
122
|
-
f.puts(
|
123
|
-
f.puts(session.auth_token(:writely))
|
139
|
+
f.puts(JSON.dump(token_data))
|
124
140
|
end
|
125
|
-
|
126
|
-
end
|
127
|
-
if !session.auth_token
|
128
|
-
session.on_auth_fail.call()
|
141
|
+
|
129
142
|
end
|
130
|
-
|
143
|
+
|
144
|
+
return GoogleDrive.login_with_oauth(auth.access_token)
|
145
|
+
|
131
146
|
end
|
132
|
-
|
147
|
+
|
133
148
|
end
|
data/lib/google_drive/acl.rb
CHANGED
@@ -66,7 +66,7 @@ module GoogleDrive
|
|
66
66
|
# spreadsheet.acl.delete(spreadsheet.acl[1])
|
67
67
|
def delete(entry)
|
68
68
|
header = {"GData-Version" => "3.0"}
|
69
|
-
@session.request(:delete, entry.
|
69
|
+
@session.request(:delete, entry.edit_url_internal, :header => header, :auth => :writely)
|
70
70
|
@acls.delete(entry)
|
71
71
|
end
|
72
72
|
|
@@ -74,7 +74,7 @@ module GoogleDrive
|
|
74
74
|
|
75
75
|
header = {"GData-Version" => "3.0", "Content-Type" => "application/atom+xml;charset=utf-8"}
|
76
76
|
doc = @session.request(
|
77
|
-
:put, entry.
|
77
|
+
:put, entry.edit_url_internal, :data => entry.to_xml(), :header => header, :auth => :writely)
|
78
78
|
|
79
79
|
entry.params = entry_to_params(doc.root)
|
80
80
|
return entry
|
@@ -39,6 +39,16 @@ module GoogleDrive
|
|
39
39
|
end
|
40
40
|
end
|
41
41
|
|
42
|
+
def edit_url
|
43
|
+
warn(
|
44
|
+
"WARNING: GoogleDrive::AclEntry\#edit_url is deprecated and will be removed in the next version.")
|
45
|
+
return self.edit_url_internal
|
46
|
+
end
|
47
|
+
|
48
|
+
def edit_url_internal #:nodoc:
|
49
|
+
return @params[:edit_url]
|
50
|
+
end
|
51
|
+
|
42
52
|
# Changes the role of the scope.
|
43
53
|
#
|
44
54
|
# e.g.
|
@@ -23,7 +23,7 @@ module GoogleDrive
|
|
23
23
|
# The root collection doesn't have document feed.
|
24
24
|
return concat_url(ROOT_URL, "/contents")
|
25
25
|
else
|
26
|
-
return self.
|
26
|
+
return self.document_feed_entry_internal.css(
|
27
27
|
"content[type='application/atom+xml;type=feed']")[0]["src"]
|
28
28
|
end
|
29
29
|
end
|
data/lib/google_drive/file.rb
CHANGED
@@ -46,6 +46,13 @@ module GoogleDrive
|
|
46
46
|
#
|
47
47
|
# Set <tt>params[:reload]</tt> to true to force reloading the feed.
|
48
48
|
def document_feed_entry(params = {})
|
49
|
+
warn(
|
50
|
+
"WARNING: GoogleDrive::file\#document_feed_entry is deprecated and will be removed " +
|
51
|
+
"in the next version.")
|
52
|
+
return self.document_feed_entry_internal(params)
|
53
|
+
end
|
54
|
+
|
55
|
+
def document_feed_entry_internal(params = {}) #:nodoc:
|
49
56
|
if !@document_feed_entry || params[:reload]
|
50
57
|
@document_feed_entry =
|
51
58
|
@session.request(:get, self.document_feed_url, :auth => :writely).css("entry")[0]
|
@@ -55,7 +62,7 @@ module GoogleDrive
|
|
55
62
|
|
56
63
|
# Resource ID.
|
57
64
|
def resource_id
|
58
|
-
return self.
|
65
|
+
return self.document_feed_entry_internal.css("gd|resourceId").text
|
59
66
|
end
|
60
67
|
|
61
68
|
# The type of resourse. e.g. "document", "spreadsheet", "folder"
|
@@ -67,19 +74,19 @@ module GoogleDrive
|
|
67
74
|
#
|
68
75
|
# Set <tt>params[:reload]</tt> to true to force reloading the title.
|
69
76
|
def title(params = {})
|
70
|
-
return
|
77
|
+
return document_feed_entry_internal(params).css("title").text
|
71
78
|
end
|
72
79
|
|
73
80
|
# URL to view/edit the file in a Web browser.
|
74
81
|
#
|
75
82
|
# e.g. "https://docs.google.com/file/d/xxxx/edit"
|
76
83
|
def human_url
|
77
|
-
return self.
|
84
|
+
return self.document_feed_entry_internal.css("link[rel='alternate']")[0]["href"]
|
78
85
|
end
|
79
86
|
|
80
87
|
# ACL feed URL of the file.
|
81
88
|
def acl_feed_url
|
82
|
-
orig_acl_feed_url = self.
|
89
|
+
orig_acl_feed_url = self.document_feed_entry_internal.css(
|
83
90
|
"gd|feedLink[rel='http://schemas.google.com/acl/2007#accessControlList']")[0]["href"]
|
84
91
|
case orig_acl_feed_url
|
85
92
|
when %r{^https?://docs.google.com/feeds/default/private/full/.*/acl(\?.*)?$}
|
@@ -96,7 +103,7 @@ module GoogleDrive
|
|
96
103
|
# Content types you can specify in methods download_to_file, download_to_string,
|
97
104
|
# download_to_io .
|
98
105
|
def available_content_types
|
99
|
-
return self.
|
106
|
+
return self.document_feed_entry_internal.css("content").map(){ |c| c["type"] }
|
100
107
|
end
|
101
108
|
|
102
109
|
# Downloads the file to a local file.
|
@@ -128,7 +135,7 @@ module GoogleDrive
|
|
128
135
|
|
129
136
|
# Downloads the file and writes it to +io+.
|
130
137
|
def download_to_io(io, params = {})
|
131
|
-
all_contents = self.
|
138
|
+
all_contents = self.document_feed_entry_internal.css("content")
|
132
139
|
if params[:content_type] && (!params[:content_type_is_hint] || all_contents.size > 1)
|
133
140
|
contents = all_contents.select(){ |c| c["type"] == params[:content_type] }
|
134
141
|
else
|
@@ -176,7 +183,7 @@ module GoogleDrive
|
|
176
183
|
# Reads content from +io+ and updates the file with the content.
|
177
184
|
def update_from_io(io, params = {})
|
178
185
|
params = {:header => {"If-Match" => "*"}}.merge(params)
|
179
|
-
initial_url = self.
|
186
|
+
initial_url = self.document_feed_entry_internal.css(
|
180
187
|
"link[rel='http://schemas.google.com/g/2005#resumable-edit-media']")[0]["href"]
|
181
188
|
@document_feed_entry = @session.upload_raw(
|
182
189
|
:put, initial_url, io, self.title, params)
|
@@ -193,7 +200,7 @@ module GoogleDrive
|
|
193
200
|
|
194
201
|
# Renames title of the file.
|
195
202
|
def rename(title)
|
196
|
-
edit_url = self.
|
203
|
+
edit_url = self.document_feed_entry_internal.css("link[rel='edit']").first["href"]
|
197
204
|
xml = <<-"EOS"
|
198
205
|
<atom:entry
|
199
206
|
xmlns:atom="http://www.w3.org/2005/Atom"
|
data/lib/google_drive/session.rb
CHANGED
@@ -32,8 +32,13 @@ module GoogleDrive
|
|
32
32
|
|
33
33
|
UPLOAD_CHUNK_SIZE = 512 * 1024
|
34
34
|
|
35
|
+
# DEPRECATED: Will be removed in the next version.
|
36
|
+
#
|
35
37
|
# The same as GoogleDrive.login.
|
36
38
|
def self.login(mail, password, proxy = nil)
|
39
|
+
warn(
|
40
|
+
"WARNING: GoogleDrive.login is deprecated and will be removed in the next version. " +
|
41
|
+
"Use GoogleDrive.login_with_oauth instead.")
|
37
42
|
session = Session.new(nil, ClientLoginFetcher.new({}, proxy))
|
38
43
|
session.login(mail, password)
|
39
44
|
return session
|
@@ -41,8 +46,16 @@ module GoogleDrive
|
|
41
46
|
|
42
47
|
# The same as GoogleDrive.login_with_oauth.
|
43
48
|
def self.login_with_oauth(access_token, proxy = nil)
|
49
|
+
if proxy
|
50
|
+
warn(
|
51
|
+
"WARNING: Specifying a proxy object is deprecated and will not work in the next version. " +
|
52
|
+
"Set ENV[\"http_proxy\"] instead.")
|
53
|
+
end
|
44
54
|
case access_token
|
45
55
|
when OAuth::AccessToken
|
56
|
+
warn(
|
57
|
+
"WARNING: Authorization with OAuth1 is deprecated and will not work in the next version. " +
|
58
|
+
"Use OAuth2 instead.")
|
46
59
|
raise(GoogleDrive::Error, "proxy is not supported with OAuth1.") if proxy
|
47
60
|
fetcher = OAuth1Fetcher.new(access_token)
|
48
61
|
when OAuth2::AccessToken
|
@@ -58,6 +71,9 @@ module GoogleDrive
|
|
58
71
|
|
59
72
|
# The same as GoogleDrive.restore_session.
|
60
73
|
def self.restore_session(auth_tokens, proxy = nil)
|
74
|
+
warn(
|
75
|
+
"WARNING: GoogleDrive.restore_session is deprecated and will be removed in the next version. " +
|
76
|
+
"Use GoogleDrive.login_with_oauth instead.")
|
61
77
|
return Session.new(auth_tokens, nil, proxy)
|
62
78
|
end
|
63
79
|
|
@@ -96,6 +112,8 @@ module GoogleDrive
|
|
96
112
|
|
97
113
|
# Authentication tokens.
|
98
114
|
def auth_tokens
|
115
|
+
warn(
|
116
|
+
"WARNING: GoogleDrive::Session\#auth_tokens is deprecated and will be removed in the next version.")
|
99
117
|
if !@fetcher.is_a?(ClientLoginFetcher)
|
100
118
|
raise(GoogleDrive::Error,
|
101
119
|
"Cannot call auth_tokens for session created by " +
|
@@ -106,12 +124,24 @@ module GoogleDrive
|
|
106
124
|
|
107
125
|
# Authentication token.
|
108
126
|
def auth_token(auth = :wise)
|
127
|
+
warn(
|
128
|
+
"WARNING: GoogleDrive::Session\#auth_token is deprecated and will be removed in the next version.")
|
109
129
|
return self.auth_tokens[auth]
|
110
130
|
end
|
111
131
|
|
112
132
|
# Proc or Method called when authentication has failed.
|
113
133
|
# When this function returns +true+, it tries again.
|
114
|
-
|
134
|
+
def on_auth_fail
|
135
|
+
warn(
|
136
|
+
"WARNING: GoogleDrive::Session\#on_auth_fail is deprecated and will be removed in the next version.")
|
137
|
+
return @on_auth_fail
|
138
|
+
end
|
139
|
+
|
140
|
+
def on_auth_fail=(func)
|
141
|
+
warn(
|
142
|
+
"WARNING: GoogleDrive::Session\#on_auth_fail is deprecated and will be removed in the next version.")
|
143
|
+
@on_auth_fail = func
|
144
|
+
end
|
115
145
|
|
116
146
|
# Returns list of files for the user as array of GoogleDrive::File or its subclass.
|
117
147
|
# You can specify query parameters described at
|
@@ -36,7 +36,7 @@ module GoogleDrive
|
|
36
36
|
# Set <tt>params[:reload]</tt> to true to force reloading the title.
|
37
37
|
def title(params = {})
|
38
38
|
if !@title || params[:reload]
|
39
|
-
@title =
|
39
|
+
@title = spreadsheet_feed_entry_internal(params).css("title").text
|
40
40
|
end
|
41
41
|
return @title
|
42
42
|
end
|
@@ -61,7 +61,7 @@ module GoogleDrive
|
|
61
61
|
# e.g. "http://spreadsheets.google.com/ccc?key=pz7XtlQC-PYx-jrVMJErTcg"
|
62
62
|
def human_url
|
63
63
|
# Uses Document feed because Spreadsheet feed returns wrong URL for Apps account.
|
64
|
-
return self.
|
64
|
+
return self.document_feed_entry_internal.css("link[rel='alternate']")[0]["href"]
|
65
65
|
end
|
66
66
|
|
67
67
|
# DEPRECATED: Table and Record feeds are deprecated and they will not be available after
|
@@ -84,6 +84,13 @@ module GoogleDrive
|
|
84
84
|
#
|
85
85
|
# Set <tt>params[:reload]</tt> to true to force reloading the feed.
|
86
86
|
def spreadsheet_feed_entry(params = {})
|
87
|
+
warn(
|
88
|
+
"WARNING: GoogleDrive::Spreadsheet\#spreadsheet_feed_entry is deprecated and will be removed " +
|
89
|
+
"in the next version.")
|
90
|
+
return spreadsheet_feed_entry_internal(params)
|
91
|
+
end
|
92
|
+
|
93
|
+
def spreadsheet_feed_entry_internal(params = {}) #:nodoc
|
87
94
|
if !@spreadsheet_feed_entry || params[:reload]
|
88
95
|
@spreadsheet_feed_entry =
|
89
96
|
@session.request(:get, self.spreadsheet_feed_url).css("entry")[0]
|
@@ -95,6 +102,9 @@ module GoogleDrive
|
|
95
102
|
#
|
96
103
|
# Set <tt>params[:reload]</tt> to true to force reloading the feed.
|
97
104
|
def document_feed_entry(params = {})
|
105
|
+
warn(
|
106
|
+
"WARNING: GoogleDrive::Spreadsheet\#document_feed_entry is deprecated and will be removed " +
|
107
|
+
"in the next version.")
|
98
108
|
if !@document_feed_entry || params[:reload]
|
99
109
|
@document_feed_entry =
|
100
110
|
@session.request(:get, self.document_feed_url, :auth => :writely).css("entry")[0]
|
@@ -121,10 +131,13 @@ module GoogleDrive
|
|
121
131
|
|
122
132
|
# Exports the spreadsheet in +format+ and returns it as String.
|
123
133
|
#
|
124
|
-
# +format+ can be either "
|
134
|
+
# +format+ can be either "csv" or "pdf".
|
125
135
|
# In format such as "csv", only the worksheet specified with +worksheet_index+ is
|
126
136
|
# exported.
|
127
137
|
def export_as_string(format, worksheet_index = nil)
|
138
|
+
if ["xls", "ods", "tsv", "html"].include?(format)
|
139
|
+
warn("WARNING: Export with format '%s' is deprecated, and will not work in the next version." % format)
|
140
|
+
end
|
128
141
|
gid_param = worksheet_index ? "&gid=#{worksheet_index}" : ""
|
129
142
|
format_string = "&format=#{format}"
|
130
143
|
if self.human_url.match("edit")
|
data/lib/google_drive/util.rb
CHANGED
@@ -37,6 +37,11 @@ module GoogleDrive
|
|
37
37
|
module_function
|
38
38
|
|
39
39
|
def encode_query(params)
|
40
|
+
for k, v in params
|
41
|
+
if ["ocr", "targetLanguage", "sourceLanguage"].include?(k.to_s())
|
42
|
+
warn("WARNING: Parameter '%s' is deprecated, and will not work in the next version." % k)
|
43
|
+
end
|
44
|
+
end
|
40
45
|
return params.map(){ |k, v| CGI.escape(k.to_s()) + "=" + CGI.escape(v.to_s()) }.join("&")
|
41
46
|
end
|
42
47
|
|
metadata
CHANGED
@@ -1,139 +1,133 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: google_drive
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.3.11
|
5
5
|
platform: ruby
|
6
|
-
authors:
|
6
|
+
authors:
|
7
7
|
- Hiroshi Ichikawa
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
|
12
|
-
|
13
|
-
|
11
|
+
|
12
|
+
date: 2014-10-12 00:00:00 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
14
15
|
name: nokogiri
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - ">="
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: 1.4.4
|
20
|
-
- - "!="
|
21
|
-
- !ruby/object:Gem::Version
|
22
|
-
version: 1.5.1
|
23
|
-
- - "!="
|
24
|
-
- !ruby/object:Gem::Version
|
25
|
-
version: 1.5.2
|
26
|
-
type: :runtime
|
27
16
|
prerelease: false
|
28
|
-
|
29
|
-
requirements:
|
17
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
18
|
+
requirements:
|
30
19
|
- - ">="
|
31
|
-
- !ruby/object:Gem::Version
|
20
|
+
- !ruby/object:Gem::Version
|
32
21
|
version: 1.4.4
|
33
22
|
- - "!="
|
34
|
-
- !ruby/object:Gem::Version
|
23
|
+
- !ruby/object:Gem::Version
|
35
24
|
version: 1.5.1
|
36
25
|
- - "!="
|
37
|
-
- !ruby/object:Gem::Version
|
26
|
+
- !ruby/object:Gem::Version
|
38
27
|
version: 1.5.2
|
39
|
-
- !ruby/object:Gem::Dependency
|
40
|
-
name: oauth
|
41
|
-
requirement: !ruby/object:Gem::Requirement
|
42
|
-
requirements:
|
43
|
-
- - ">="
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
version: 0.3.6
|
46
28
|
type: :runtime
|
29
|
+
version_requirements: *id001
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: oauth
|
47
32
|
prerelease: false
|
48
|
-
|
49
|
-
requirements:
|
33
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
34
|
+
requirements:
|
50
35
|
- - ">="
|
51
|
-
- !ruby/object:Gem::Version
|
36
|
+
- !ruby/object:Gem::Version
|
52
37
|
version: 0.3.6
|
53
|
-
|
38
|
+
type: :runtime
|
39
|
+
version_requirements: *id002
|
40
|
+
- !ruby/object:Gem::Dependency
|
54
41
|
name: oauth2
|
55
|
-
|
56
|
-
|
42
|
+
prerelease: false
|
43
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
57
45
|
- - ">="
|
58
|
-
- !ruby/object:Gem::Version
|
46
|
+
- !ruby/object:Gem::Version
|
59
47
|
version: 0.5.0
|
60
48
|
type: :runtime
|
49
|
+
version_requirements: *id003
|
50
|
+
- !ruby/object:Gem::Dependency
|
51
|
+
name: google-api-client
|
61
52
|
prerelease: false
|
62
|
-
|
63
|
-
requirements:
|
53
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
54
|
+
requirements:
|
64
55
|
- - ">="
|
65
|
-
- !ruby/object:Gem::Version
|
66
|
-
version: 0.
|
67
|
-
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
version: 0.7.0
|
58
|
+
type: :runtime
|
59
|
+
version_requirements: *id004
|
60
|
+
- !ruby/object:Gem::Dependency
|
68
61
|
name: rake
|
69
|
-
requirement: !ruby/object:Gem::Requirement
|
70
|
-
requirements:
|
71
|
-
- - ">="
|
72
|
-
- !ruby/object:Gem::Version
|
73
|
-
version: 0.8.0
|
74
|
-
type: :development
|
75
62
|
prerelease: false
|
76
|
-
|
77
|
-
requirements:
|
63
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
64
|
+
requirements:
|
78
65
|
- - ">="
|
79
|
-
- !ruby/object:Gem::Version
|
66
|
+
- !ruby/object:Gem::Version
|
80
67
|
version: 0.8.0
|
68
|
+
type: :development
|
69
|
+
version_requirements: *id005
|
81
70
|
description: A library to read/write files/spreadsheets in Google Drive/Docs.
|
82
|
-
email:
|
71
|
+
email:
|
83
72
|
- gimite+github@gmail.com
|
84
73
|
executables: []
|
74
|
+
|
85
75
|
extensions: []
|
86
|
-
|
76
|
+
|
77
|
+
extra_rdoc_files:
|
87
78
|
- README.rdoc
|
88
79
|
- doc_src/google_drive/acl.rb
|
89
80
|
- doc_src/google_drive/acl_entry.rb
|
90
|
-
files:
|
81
|
+
files:
|
91
82
|
- README.rdoc
|
92
|
-
- doc_src/google_drive/acl.rb
|
93
|
-
- doc_src/google_drive/acl_entry.rb
|
94
83
|
- lib/google_drive.rb
|
84
|
+
- lib/google_drive/spreadsheet.rb
|
85
|
+
- lib/google_drive/oauth2_fetcher.rb
|
86
|
+
- lib/google_drive/table.rb
|
87
|
+
- lib/google_drive/list_row.rb
|
88
|
+
- lib/google_drive/worksheet.rb
|
89
|
+
- lib/google_drive/file.rb
|
90
|
+
- lib/google_drive/error.rb
|
91
|
+
- lib/google_drive/collection.rb
|
95
92
|
- lib/google_drive/acl.rb
|
93
|
+
- lib/google_drive/client_login_fetcher.rb
|
94
|
+
- lib/google_drive/session.rb
|
95
|
+
- lib/google_drive/oauth1_fetcher.rb
|
96
96
|
- lib/google_drive/acl_entry.rb
|
97
97
|
- lib/google_drive/authentication_error.rb
|
98
|
-
- lib/google_drive/
|
99
|
-
- lib/google_drive/client_login_fetcher.rb
|
100
|
-
- lib/google_drive/collection.rb
|
101
|
-
- lib/google_drive/error.rb
|
102
|
-
- lib/google_drive/file.rb
|
98
|
+
- lib/google_drive/util.rb
|
103
99
|
- lib/google_drive/list.rb
|
104
|
-
- lib/google_drive/
|
105
|
-
- lib/google_drive/oauth1_fetcher.rb
|
106
|
-
- lib/google_drive/oauth2_fetcher.rb
|
100
|
+
- lib/google_drive/basic_fetcher.rb
|
107
101
|
- lib/google_drive/record.rb
|
108
|
-
-
|
109
|
-
-
|
110
|
-
- lib/google_drive/table.rb
|
111
|
-
- lib/google_drive/util.rb
|
112
|
-
- lib/google_drive/worksheet.rb
|
102
|
+
- doc_src/google_drive/acl.rb
|
103
|
+
- doc_src/google_drive/acl_entry.rb
|
113
104
|
homepage: https://github.com/gimite/google-drive-ruby
|
114
|
-
licenses:
|
105
|
+
licenses:
|
115
106
|
- New BSD
|
116
107
|
metadata: {}
|
108
|
+
|
117
109
|
post_install_message:
|
118
|
-
rdoc_options:
|
119
|
-
-
|
110
|
+
rdoc_options:
|
111
|
+
- --main
|
120
112
|
- README.rdoc
|
121
|
-
require_paths:
|
113
|
+
require_paths:
|
122
114
|
- lib
|
123
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
124
|
-
requirements:
|
115
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
116
|
+
requirements:
|
125
117
|
- - ">="
|
126
|
-
- !ruby/object:Gem::Version
|
127
|
-
version:
|
128
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
129
|
-
requirements:
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
version: 1.9.2
|
120
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
130
122
|
- - ">="
|
131
|
-
- !ruby/object:Gem::Version
|
132
|
-
version:
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: "0"
|
133
125
|
requirements: []
|
126
|
+
|
134
127
|
rubyforge_project:
|
135
|
-
rubygems_version: 2.
|
128
|
+
rubygems_version: 2.0.14
|
136
129
|
signing_key:
|
137
130
|
specification_version: 4
|
138
131
|
summary: A library to read/write files/spreadsheets in Google Drive/Docs.
|
139
132
|
test_files: []
|
133
|
+
|