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 CHANGED
@@ -1,7 +1,7 @@
1
- ---
2
- SHA1:
3
- metadata.gz: 2cbce1c15c9be6473d3104131f7e1a1d71703b21
4
- data.tar.gz: d3701c6aec63e20cd545ae60baac165811215bfa
5
- SHA512:
6
- metadata.gz: 1db4c6c2ba9e9d09e700d643e880aa6c88c3a51fd8652f941deae668213282e91840e43a13fe90bede4ed235290138f3f78fd6cd19754ca4afe4b35f8e6ce921
7
- data.tar.gz: 486dfdb9add97e068ce257e9d614edaa8368015c1cefcb870b5e1e22dfaf127e49a2c5567a8e24e0984d646645949c456eb49c3c45c68b0984941ae0a097a352
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
@@ -1,4 +1,4 @@
1
- This is a Ruby 1.8/1.9/2.0 library to read/write files/spreadsheets in Google Drive/Docs.
1
+ This is a Ruby 1.9/2.0 library to read/write files/spreadsheets in Google Drive/Docs.
2
2
 
3
3
  NOTE: This is NOT a library to create Google Drive App.
4
4
 
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+ can be nil or return value of Net::HTTP.Proxy. If +proxy+ is specified, all
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 OAuth1 or OAuth2 token.
22
+ # Authenticates with given OAuth2 token.
22
23
  #
23
- # +access_token+ can be either OAuth2 access_token string, OAuth2::AccessToken or OAuth::AccessToken.
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+ can be nil or return value of Net::HTTP.Proxy. If +proxy+ is specified, all
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 mail and password on console,
91
- # authenticates with them, stores the session to +path+ and returns it.
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
- # See login for description of parameter +proxy+.
78
+ # +path+ defaults to ENV["HOME"] + "/.ruby_google_drive.token".
94
79
  #
95
- # This method requires Highline library: http://rubyforge.org/projects/highline/
96
- def self.saved_session(path = ENV["HOME"] + "/.ruby_google_drive.token", proxy = nil)
97
- tokens = {}
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
- open(path) do |f|
100
- for auth in [:wise, :writely]
101
- line = f.gets()
102
- tokens[auth] = line && line.chomp()
103
- end
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
- session = Session.new(tokens, nil, proxy)
107
- session.on_auth_fail = proc() do
108
- begin
109
- require "highline"
110
- rescue LoadError
111
- raise(LoadError,
112
- "GoogleDrive.saved_session requires Highline library.\n" +
113
- "Run\n" +
114
- " \$ sudo gem install highline\n" +
115
- "to install it.")
116
- end
117
- highline = HighLine.new()
118
- mail = highline.ask("Mail: ")
119
- password = highline.ask("Password: "){ |q| q.echo = false }
120
- session.login(mail, password)
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(session.auth_token(:wise))
123
- f.puts(session.auth_token(:writely))
139
+ f.puts(JSON.dump(token_data))
124
140
  end
125
- true
126
- end
127
- if !session.auth_token
128
- session.on_auth_fail.call()
141
+
129
142
  end
130
- return session
143
+
144
+ return GoogleDrive.login_with_oauth(auth.access_token)
145
+
131
146
  end
132
-
147
+
133
148
  end
@@ -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.edit_url, :header => header, :auth => :writely)
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.edit_url, :data => entry.to_xml(), :header => header, :auth => :writely)
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.document_feed_entry.css(
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
@@ -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.document_feed_entry.css("gd|resourceId").text
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 document_feed_entry(params).css("title").text
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.document_feed_entry.css("link[rel='alternate']")[0]["href"]
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.document_feed_entry.css(
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.document_feed_entry.css("content").map(){ |c| c["type"] }
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.document_feed_entry.css("content")
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.document_feed_entry.css(
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.document_feed_entry.css("link[rel='edit']").first["href"]
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"
@@ -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
- attr_accessor :on_auth_fail
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 = spreadsheet_feed_entry(params).css("title").text
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.document_feed_entry.css("link[rel='alternate']")[0]["href"]
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 "xls", "csv", "pdf", "ods", "tsv" or "html".
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")
@@ -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.10
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
- date: 2014-07-09 00:00:00.000000000 Z
12
- dependencies:
13
- - !ruby/object:Gem::Dependency
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
- version_requirements: !ruby/object:Gem::Requirement
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
- version_requirements: !ruby/object:Gem::Requirement
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
- - !ruby/object:Gem::Dependency
38
+ type: :runtime
39
+ version_requirements: *id002
40
+ - !ruby/object:Gem::Dependency
54
41
  name: oauth2
55
- requirement: !ruby/object:Gem::Requirement
56
- requirements:
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
- version_requirements: !ruby/object:Gem::Requirement
63
- requirements:
53
+ requirement: &id004 !ruby/object:Gem::Requirement
54
+ requirements:
64
55
  - - ">="
65
- - !ruby/object:Gem::Version
66
- version: 0.5.0
67
- - !ruby/object:Gem::Dependency
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
- version_requirements: !ruby/object:Gem::Requirement
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
- extra_rdoc_files:
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/basic_fetcher.rb
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/list_row.rb
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
- - lib/google_drive/session.rb
109
- - lib/google_drive/spreadsheet.rb
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
- - "--main"
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: '0'
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: '0'
123
+ - !ruby/object:Gem::Version
124
+ version: "0"
133
125
  requirements: []
126
+
134
127
  rubyforge_project:
135
- rubygems_version: 2.2.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
+