dropbox 1.2.3 → 1.3.0

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 CHANGED
@@ -1,3 +1,14 @@
1
+ 1.3.0 (2011-07-19)
2
+
3
+ * NOTE: Removed the ability to automate the OAuth form.
4
+ * Added a method allowing users to manually set the access token and secret (in
5
+ case you are doing your own OAuth elsewhere).
6
+ * The mode (Dropbox or Sandbox) is now serialized.
7
+ * Fixed a bug that would cause files uploaded into deep paths to fail due to
8
+ name length limitations.
9
+ * Fixed a bug that would cause abnormal OAuth requests when deserializing an
10
+ authorized session.
11
+
1
12
  1.2.3 (2011-01-14)
2
13
 
3
14
  * Now supports caching metadata calls
data/Gemfile CHANGED
@@ -2,10 +2,10 @@ source :rubygems
2
2
 
3
3
  gem 'oauth', '>= 0.3.6'
4
4
  gem 'json', '>= 1.2.0'
5
- gem 'multipart-post', '>= 1.0'
6
- gem 'mechanize', '>= 1.0.0'
5
+ gem 'multipart-post', '>= 1.1.0'
7
6
 
8
7
  group :development do
9
8
  gem 'jeweler'
10
9
  gem 'rspec', '>= 2.0'
10
+ gem 'mechanize'
11
11
  end
@@ -3,25 +3,32 @@ GEM
3
3
  specs:
4
4
  diff-lcs (1.1.2)
5
5
  git (1.2.5)
6
- jeweler (1.5.2)
7
- bundler (~> 1.0.0)
6
+ jeweler (1.6.4)
7
+ bundler (~> 1.0)
8
8
  git (>= 1.2.5)
9
9
  rake
10
- json (1.4.6)
11
- mechanize (1.0.0)
12
- nokogiri (>= 1.2.1)
13
- multipart-post (1.1.0)
14
- nokogiri (1.4.4)
15
- oauth (0.4.4)
16
- rake (0.8.7)
17
- rspec (2.4.0)
18
- rspec-core (~> 2.4.0)
19
- rspec-expectations (~> 2.4.0)
20
- rspec-mocks (~> 2.4.0)
21
- rspec-core (2.4.0)
22
- rspec-expectations (2.4.0)
10
+ json (1.5.3)
11
+ mechanize (2.0.1)
12
+ net-http-digest_auth (>= 1.1.1, ~> 1.1)
13
+ net-http-persistent (~> 1.8)
14
+ nokogiri (~> 1.4)
15
+ webrobots (>= 0.0.9, ~> 0.0)
16
+ multipart-post (1.1.2)
17
+ net-http-digest_auth (1.1.1)
18
+ net-http-persistent (1.8)
19
+ nokogiri (1.5.0)
20
+ oauth (0.4.5)
21
+ rake (0.9.2)
22
+ rspec (2.6.0)
23
+ rspec-core (~> 2.6.0)
24
+ rspec-expectations (~> 2.6.0)
25
+ rspec-mocks (~> 2.6.0)
26
+ rspec-core (2.6.4)
27
+ rspec-expectations (2.6.0)
23
28
  diff-lcs (~> 1.1.2)
24
- rspec-mocks (2.4.0)
29
+ rspec-mocks (2.6.0)
30
+ webrobots (0.0.10)
31
+ nokogiri (>= 1.4.4)
25
32
 
26
33
  PLATFORMS
27
34
  ruby
@@ -29,7 +36,7 @@ PLATFORMS
29
36
  DEPENDENCIES
30
37
  jeweler
31
38
  json (>= 1.2.0)
32
- mechanize (>= 1.0.0)
33
- multipart-post (>= 1.0)
39
+ mechanize
40
+ multipart-post (>= 1.1.0)
34
41
  oauth (>= 0.3.6)
35
42
  rspec (>= 2.0)
@@ -19,13 +19,23 @@ http://developers.dropbox.com
19
19
  session.authorize
20
20
 
21
21
  # STEP 2: Play!
22
- session.upload('testfile.txt')
23
- uploaded_file = session.file('testfile.txt', '/')
22
+ session.upload('testfile.txt', '/')
23
+ uploaded_file = session.file('testfile.txt')
24
24
  puts uploaded_file.metadata.size
25
25
 
26
26
  uploaded_file.move 'new_name.txt'
27
27
  uploaded_file.delete
28
28
 
29
+ # STEP 3: Save session for later
30
+ File.open('serialized_session.txt', 'w') do |f|
31
+ f.puts session.serialize
32
+ end
33
+
34
+ # STEP 4: Play with saved session!
35
+ new_session = Dropbox::Session.deserialize(File.read('serialized_session.txt'))
36
+ account = new_session.account
37
+ puts account.display_name
38
+
29
39
  == Tutorial by Example, Rails Edition
30
40
 
31
41
  A simple Rails controller that allows a user to first authorize their Dropbox
data/Rakefile CHANGED
@@ -23,7 +23,7 @@ Jeweler::RubygemsDotOrgTasks.new
23
23
  require 'rspec/core/rake_task'
24
24
  RSpec::Core::RakeTask.new
25
25
 
26
- require 'rake/rdoctask'
26
+ require 'rdoc/task'
27
27
  Rake::RDocTask.new(:doc) do |rdoc|
28
28
  version = File.exist?('VERSION') ? File.read('VERSION').chomp.strip : ""
29
29
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.2.3
1
+ 1.3.0
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{dropbox}
8
- s.version = "1.2.3"
8
+ s.version = "1.3.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Tim Morgan"]
12
- s.date = %q{2011-01-14}
12
+ s.date = %q{2011-07-19}
13
13
  s.description = %q{An easy-to-use client library for the official Dropbox API.}
14
14
  s.email = %q{dropbox@timothymorgan.info}
15
15
  s.extra_rdoc_files = [
@@ -53,45 +53,34 @@ Gem::Specification.new do |s|
53
53
  ]
54
54
  s.homepage = %q{http://github.com/RISCfuture/dropbox}
55
55
  s.require_paths = ["lib"]
56
- s.rubygems_version = %q{1.3.7}
56
+ s.rubygems_version = %q{1.6.2}
57
57
  s.summary = %q{Ruby client library for the official Dropbox API}
58
- s.test_files = [
59
- "examples/upload_and_delete.rb",
60
- "spec/dropbox/api_spec.rb",
61
- "spec/dropbox/entry_spec.rb",
62
- "spec/dropbox/event_spec.rb",
63
- "spec/dropbox/revision_spec.rb",
64
- "spec/dropbox/session_spec.rb",
65
- "spec/dropbox_spec.rb",
66
- "spec/spec_helper.rb"
67
- ]
68
58
 
69
59
  if s.respond_to? :specification_version then
70
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
71
60
  s.specification_version = 3
72
61
 
73
62
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
74
63
  s.add_runtime_dependency(%q<oauth>, [">= 0.3.6"])
75
64
  s.add_runtime_dependency(%q<json>, [">= 1.2.0"])
76
- s.add_runtime_dependency(%q<multipart-post>, [">= 1.0"])
77
- s.add_runtime_dependency(%q<mechanize>, [">= 1.0.0"])
65
+ s.add_runtime_dependency(%q<multipart-post>, [">= 1.1.0"])
78
66
  s.add_development_dependency(%q<jeweler>, [">= 0"])
79
67
  s.add_development_dependency(%q<rspec>, [">= 2.0"])
68
+ s.add_development_dependency(%q<mechanize>, [">= 0"])
80
69
  else
81
70
  s.add_dependency(%q<oauth>, [">= 0.3.6"])
82
71
  s.add_dependency(%q<json>, [">= 1.2.0"])
83
- s.add_dependency(%q<multipart-post>, [">= 1.0"])
84
- s.add_dependency(%q<mechanize>, [">= 1.0.0"])
72
+ s.add_dependency(%q<multipart-post>, [">= 1.1.0"])
85
73
  s.add_dependency(%q<jeweler>, [">= 0"])
86
74
  s.add_dependency(%q<rspec>, [">= 2.0"])
75
+ s.add_dependency(%q<mechanize>, [">= 0"])
87
76
  end
88
77
  else
89
78
  s.add_dependency(%q<oauth>, [">= 0.3.6"])
90
79
  s.add_dependency(%q<json>, [">= 1.2.0"])
91
- s.add_dependency(%q<multipart-post>, [">= 1.0"])
92
- s.add_dependency(%q<mechanize>, [">= 1.0.0"])
80
+ s.add_dependency(%q<multipart-post>, [">= 1.1.0"])
93
81
  s.add_dependency(%q<jeweler>, [">= 0"])
94
82
  s.add_dependency(%q<rspec>, [">= 2.0"])
83
+ s.add_dependency(%q<mechanize>, [">= 0"])
95
84
  end
96
85
  end
97
86
 
@@ -1,6 +1,4 @@
1
1
  {
2
2
  "key": "abc123456789012",
3
3
  "secret": "abc123456789012",
4
- "email": "my@email.com",
5
- "password": "mypassword123"
6
4
  }
@@ -60,7 +60,7 @@ module Dropbox
60
60
 
61
61
  def self.check_path(path) # :nodoc:
62
62
  raise ArgumentError, "Backslashes are not allowed in Dropbox paths" if path.include?('\\')
63
- raise ArgumentError, "Dropbox paths are limited to 256 characters in length" if path.size > 256
63
+ raise ArgumentError, "File names are limited to 255 characters" if path.split('/').last.size > 255 unless path.empty?
64
64
  return path
65
65
  end
66
66
  end
@@ -1,7 +1,6 @@
1
1
  # Defines the Dropbox::Session class.
2
2
 
3
3
  require 'oauth'
4
- require 'mechanize'
5
4
 
6
5
  module Dropbox
7
6
 
@@ -48,11 +47,6 @@ module Dropbox
48
47
 
49
48
  class Session
50
49
  include API
51
-
52
- # The email of a Dropbox account to automatically authorize.
53
- attr_accessor :authorizing_user
54
- # The password of a Dropbox account to automatically authorize.
55
- attr_accessor :authorizing_password
56
50
 
57
51
  # Begins the authorization process. Provide the OAuth key and secret of your
58
52
  # API account, assigned by Dropbox. This is the first step in the
@@ -61,18 +55,10 @@ module Dropbox
61
55
  # Options:
62
56
  #
63
57
  # +ssl+:: If true, uses SSL to connect to the Dropbox API server.
64
- # +authorizing_user+:: The email of a Dropbox account to automatically
65
- # authorize.
66
- # +authorizing_password+:: The password of a Dropbox account to
67
- # automatically authorize.
68
58
 
69
59
  def initialize(oauth_key, oauth_secret, options={})
70
60
  @ssl = options[:ssl].to_bool
71
61
 
72
- # necessary for the automatic authorization in #authorize!
73
- @authorizing_user = options[:authorizing_user] if options[:authorizing_user]
74
- @authorizing_password = options[:authorizing_password] if options[:authorizing_password]
75
-
76
62
  @proxy = options[:proxy] || ENV["HTTP_PROXY"] || ENV["http_proxy"]
77
63
  @proxy = nil if options[:noproxy].to_bool
78
64
  @consumer = OAuth::Consumer.new(oauth_key, oauth_secret,
@@ -81,7 +67,7 @@ module Dropbox
81
67
  :request_token_path => "/#{Dropbox::VERSION}/oauth/request_token",
82
68
  :authorize_path => "/#{Dropbox::VERSION}/oauth/authorize",
83
69
  :access_token_path => "/#{Dropbox::VERSION}/oauth/access_token")
84
- @request_token = @consumer.get_request_token
70
+ @request_token = @consumer.get_request_token unless options[:already_authorized]
85
71
  end
86
72
 
87
73
  # Returns a URL that is used to complete the authorization process. Visiting
@@ -118,32 +104,6 @@ module Dropbox
118
104
  def authorized?
119
105
  @access_token.to_bool
120
106
  end
121
-
122
- # Automatically complete the authorization step of the OAuth process. You
123
- # must have provided the +authorizing_user+ and +authorizing_password+
124
- # options. Raises a Dropbox::UnauthorizedError on failure.
125
-
126
- def authorize!
127
- begin
128
- a = Mechanize.new
129
- a.get(authorize_url) do |page|
130
- login_form = page.form_with(:action => '/login')
131
-
132
- login_form.login_email = @authorizing_user
133
- login_form.login_password = @authorizing_password
134
- auth_page = login_form.submit
135
-
136
- auth_form = auth_page.form_with(:action => 'authorize')
137
- if auth_form
138
- auth_button = auth_form.button_with(:value => "Allow")
139
- auth_form.click_button
140
- end
141
- end
142
- rescue OAuth::Unauthorized => e
143
- raise Dropbox::UnauthorizedError
144
- end
145
- authorize
146
- end
147
107
 
148
108
  # Returns the OAuth access_token which allows access to token and secret.
149
109
 
@@ -156,9 +116,9 @@ module Dropbox
156
116
 
157
117
  def serialize
158
118
  if authorized? then
159
- [ @consumer.key, @consumer.secret, authorized?, @access_token.token, @access_token.secret, @ssl ].to_yaml
119
+ [ @consumer.key, @consumer.secret, authorized?, @access_token.token, @access_token.secret, @ssl, mode ].to_yaml
160
120
  else
161
- [ @consumer.key, @consumer.secret, authorized?, @request_token.token, @request_token.secret, @ssl ].to_yaml
121
+ [ @consumer.key, @consumer.secret, authorized?, @request_token.token, @request_token.secret, @ssl, mode ].to_yaml
162
122
  end
163
123
  end
164
124
 
@@ -166,19 +126,34 @@ module Dropbox
166
126
  # Returns the recreated instance.
167
127
 
168
128
  def self.deserialize(data)
169
- consumer_key, consumer_secret, authorized, token, token_secret, ssl = YAML.load(StringIO.new(data))
129
+ consumer_key, consumer_secret, authorized, token, token_secret, ssl, mode = YAML.load(StringIO.new(data))
170
130
  raise ArgumentError, "Must provide a properly serialized #{self.to_s} instance" unless [ consumer_key, consumer_secret, token, token_secret ].all? and authorized == true or authorized == false
171
131
 
172
- session = self.new(consumer_key, consumer_secret, :ssl => ssl)
132
+ session = self.new(consumer_key, consumer_secret, :ssl => ssl, :already_authorized => authorized)
173
133
  if authorized then
174
- session.instance_variable_set :@access_token, OAuth::AccessToken.new(session.instance_variable_get(:@consumer), token, token_secret)
134
+ session.set_access_token token, token_secret
175
135
  else
176
- session.instance_variable_set :@request_token, OAuth::RequestToken.new(session.instance_variable_get(:@consumer), token, token_secret)
136
+ session.set_request_token token, token_secret
177
137
  end
138
+ session.mode = mode if mode
178
139
 
179
140
  return session
180
141
  end
181
142
 
143
+ # Manually sets the OAuth request token. Use this method if you are doing
144
+ # your own OAuth elsewhere.
145
+
146
+ def set_request_token(token, token_secret)
147
+ @request_token = OAuth::RequestToken.new(@consumer, token, token_secret)
148
+ end
149
+
150
+ # Manually sets the OAuth access token. Use this method if you are doing
151
+ # your own OAuth elsewhere.
152
+
153
+ def set_access_token(token, token_secret)
154
+ @access_token = OAuth::AccessToken.new(@consumer, token, token_secret)
155
+ end
156
+
182
157
  def inspect # :nodoc:
183
158
  "#<#{self.class.to_s} #{@consumer.key} (#{'un' unless authorized?}authorized)>"
184
159
  end
@@ -1,4 +1,5 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+ require 'mechanize'
2
3
 
3
4
  describe Dropbox::Session do
4
5
  describe ".new" do
@@ -132,7 +133,7 @@ describe Dropbox::Session do
132
133
  @token_mock.stub!(:token).and_return("request token")
133
134
  @token_mock.stub!(:secret).and_return("request token secret")
134
135
 
135
- @session.serialize.should eql([ "consumer key", "consumer secret", false, "request token", "request token secret", false ].to_yaml)
136
+ @session.serialize.should eql([ "consumer key", "consumer secret", false, "request token", "request token secret", false, :sandbox ].to_yaml)
136
137
  end
137
138
 
138
139
  it "should serialize the SSL setting" do
@@ -142,7 +143,18 @@ describe Dropbox::Session do
142
143
  @token_mock.stub!(:token).and_return("request token")
143
144
  @token_mock.stub!(:secret).and_return("request token secret")
144
145
 
145
- @session.serialize.should eql([ "consumer key", "consumer secret", false, "request token", "request token secret", true ].to_yaml)
146
+ @session.serialize.should eql([ "consumer key", "consumer secret", false, "request token", "request token secret", true, :sandbox ].to_yaml)
147
+ end
148
+
149
+ it "should serialize the mode" do
150
+ @session = Dropbox::Session.new('foo', 'bar')
151
+ @consumer_mock.stub!(:key).and_return("consumer key")
152
+ @consumer_mock.stub!(:secret).and_return("consumer secret")
153
+ @token_mock.stub!(:token).and_return("request token")
154
+ @token_mock.stub!(:secret).and_return("request token secret")
155
+ @session.mode = :dropbox
156
+
157
+ @session.serialize.should eql([ "consumer key", "consumer secret", false, "request token", "request token secret", false, :dropbox ].to_yaml)
146
158
  end
147
159
  end
148
160
 
@@ -152,30 +164,61 @@ describe Dropbox::Session do
152
164
  end
153
165
 
154
166
  it "should raise an error if an improper YAML is provided" do
155
- lambda { Dropbox::Session.deserialize([ 1, 2, 3].to_yaml) }.should raise_error(ArgumentError)
167
+ lambda { Dropbox::Session.deserialize([ 1, 2, 3 ].to_yaml) }.should raise_error(ArgumentError)
156
168
  end
157
169
 
158
170
  it "should return a properly initialized unauthorized instance" do
159
- Dropbox::Session.should_receive(:new).once.with('key', 'secret', :ssl => true).and_return(@mock_session)
171
+ Dropbox::Session.should_receive(:new).once.with('key', 'secret', :ssl => true, :already_authorized => false).and_return(@mock_session)
172
+ @mock_session.should_receive(:mode=).once.with(:dropbox)
173
+ @mock_session.should_receive(:set_request_token).once.with('a', 'b')
160
174
 
161
- Dropbox::Session.deserialize([ 'key', 'secret', false, 'a', 'b', true ].to_yaml).should eql(@mock_session)
162
- #TODO request token remains opaque for purposes of testing
175
+ Dropbox::Session.deserialize([ 'key', 'secret', false, 'a', 'b', true, :dropbox ].to_yaml).should eql(@mock_session)
176
+ end
177
+
178
+ it "should return a properly initialized authorized instance" do
179
+ Dropbox::Session.should_receive(:new).once.with('key', 'secret', :ssl => true, :already_authorized => true).and_return(@mock_session)
180
+ @mock_session.should_receive(:mode=).once.with(:dropbox)
181
+ @mock_session.should_receive(:set_access_token).once.with('a', 'b')
182
+
183
+ Dropbox::Session.deserialize([ 'key', 'secret', true, 'a', 'b', true, :dropbox ].to_yaml).should eql(@mock_session)
163
184
  end
164
185
 
165
186
  it "should allow the SSL option to be left out" do
166
- Dropbox::Session.should_receive(:new).once.with('key', 'secret', :ssl => nil).and_return(@mock_session)
187
+ Dropbox::Session.should_receive(:new).once.with('key', 'secret', :ssl => nil, :already_authorized=>false).and_return(@mock_session)
188
+ @mock_session.stub!(:mode=)
189
+ @mock_session.stub!(:set_request_token)
167
190
 
168
191
  Dropbox::Session.deserialize([ 'key', 'secret', false, 'a', 'b' ].to_yaml).should eql(@mock_session)
169
192
  end
193
+
194
+ it "should allow the mode to be left out" do
195
+ @mock_session.stub!(:set_request_token)
196
+
197
+ Dropbox::Session.should_receive(:new).once.with('key', 'secret', :ssl => nil, :already_authorized=>false).and_return(@mock_session)
198
+ Dropbox::Session.deserialize([ 'key', 'secret', false, 'a', 'b' ].to_yaml).should eql(@mock_session)
199
+ end
170
200
  end
171
201
 
172
- describe "with Dropbox keys" do
202
+ describe "with actual HTTP calls" do
173
203
  before(:all) do
174
204
  @keys = read_keys_file
175
205
  end
176
206
 
177
207
  def new_session
178
- Dropbox::Session.new(@keys['key'], @keys['secret'], :authorizing_user => @keys['email'], :authorizing_password => @keys['password'])
208
+ Dropbox::Session.new(@keys['key'], @keys['secret'])
209
+ end
210
+
211
+ def authorize!(session)
212
+ if @keys['access_token'] and @keys['access_token_secret'] then
213
+ session.set_access_token @keys['access_token'], @keys['access_token_secret']
214
+ else
215
+ puts "Please authorize and then hit enter: #{session.authorize_url}"
216
+ $stdin.gets
217
+ session.authorize
218
+ @keys['access_token'] = session.access_token.token
219
+ @keys['access_token_secret'] = session.access_token.secret
220
+ write_keys_file @keys
221
+ end
179
222
  end
180
223
 
181
224
  describe "#authorized?" do
@@ -188,39 +231,15 @@ describe Dropbox::Session do
188
231
  end
189
232
 
190
233
  it "should be true for sessions that have been authorized" do
191
- @session.authorize!
234
+ authorize! @session
192
235
  @session.should be_authorized
193
236
  end
194
237
  end
195
238
 
196
- describe "#authorize!" do
197
- describe "with credentials" do
198
- before(:each) do
199
- @session = new_session
200
- end
201
-
202
- it "should not fail" do
203
- lambda { @session.authorize! }.should_not raise_error
204
- end
205
-
206
- it "should return the result of #authorize" do
207
- @session.should_receive(:authorize).and_return("winner!")
208
- @session.authorize!.should == "winner!"
209
- end
210
- end
211
-
212
- describe "with no credentials" do
213
- it "should fail" do
214
- @session = Dropbox::Session.new(@keys['key'], @keys['password'])
215
- lambda { @session.authorize! }.should raise_error
216
- end
217
- end
218
- end
219
-
220
239
  describe ".deserialize" do
221
240
  it "should return a properly initialized authorized instance" do
222
241
  @session = new_session
223
- @session.authorize!.should be_true
242
+ authorize! @session
224
243
  @session_clone = Dropbox::Session.deserialize(@session.serialize)
225
244
 
226
245
  @session.serialize.should == @session_clone.serialize
@@ -230,8 +249,8 @@ describe Dropbox::Session do
230
249
  describe "#serialize" do
231
250
  it "should return the consumer key and secret and the access token and secret in YAML form if authorized" do
232
251
  @session = new_session
233
- @session.authorize!.should be_true
234
- @session.serialize.should eql([ @keys['key'], @keys['secret'], true, @session.send(:access_token).token, @session.send(:access_token).secret, false ].to_yaml)
252
+ authorize! @session
253
+ @session.serialize.should eql([ @keys['key'], @keys['secret'], true, @keys['access_token'], @keys['access_token_secret'], false, :sandbox ].to_yaml)
235
254
  end
236
255
  end
237
256
  end
@@ -53,5 +53,10 @@ describe Dropbox do
53
53
  path = "valid path/here"
54
54
  lambda { Dropbox.check_path(path).should eql(path) }.should_not raise_error
55
55
  end
56
+
57
+ it "should allow a path that is empty" do
58
+ path = {}
59
+ lambda { Dropbox.check_path(path).should eql(path) }.should_not raise_error
60
+ end
56
61
  end
57
62
  end
@@ -20,6 +20,10 @@ module ExternalKeysFileHelper
20
20
 
21
21
  data
22
22
  end
23
+
24
+ def write_keys_file(keys)
25
+ File.open('keys.json', 'w') { |f| f.puts keys.to_json }
26
+ end
23
27
  end
24
28
 
25
29
  RSpec.configure do |config|
metadata CHANGED
@@ -1,119 +1,92 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: dropbox
3
- version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 1
7
- - 2
8
- - 3
9
- version: 1.2.3
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.3.0
5
+ prerelease:
10
6
  platform: ruby
11
- authors:
7
+ authors:
12
8
  - Tim Morgan
13
9
  autorequire:
14
10
  bindir: bin
15
11
  cert_chain: []
16
-
17
- date: 2011-01-14 00:00:00 -08:00
12
+ date: 2011-07-19 00:00:00.000000000 -07:00
18
13
  default_executable:
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
21
16
  name: oauth
22
- requirement: &id001 !ruby/object:Gem::Requirement
17
+ requirement: &2168044400 !ruby/object:Gem::Requirement
23
18
  none: false
24
- requirements:
25
- - - ">="
26
- - !ruby/object:Gem::Version
27
- segments:
28
- - 0
29
- - 3
30
- - 6
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
31
22
  version: 0.3.6
32
23
  type: :runtime
33
24
  prerelease: false
34
- version_requirements: *id001
35
- - !ruby/object:Gem::Dependency
25
+ version_requirements: *2168044400
26
+ - !ruby/object:Gem::Dependency
36
27
  name: json
37
- requirement: &id002 !ruby/object:Gem::Requirement
28
+ requirement: &2168043920 !ruby/object:Gem::Requirement
38
29
  none: false
39
- requirements:
40
- - - ">="
41
- - !ruby/object:Gem::Version
42
- segments:
43
- - 1
44
- - 2
45
- - 0
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
46
33
  version: 1.2.0
47
34
  type: :runtime
48
35
  prerelease: false
49
- version_requirements: *id002
50
- - !ruby/object:Gem::Dependency
36
+ version_requirements: *2168043920
37
+ - !ruby/object:Gem::Dependency
51
38
  name: multipart-post
52
- requirement: &id003 !ruby/object:Gem::Requirement
53
- none: false
54
- requirements:
55
- - - ">="
56
- - !ruby/object:Gem::Version
57
- segments:
58
- - 1
59
- - 0
60
- version: "1.0"
61
- type: :runtime
62
- prerelease: false
63
- version_requirements: *id003
64
- - !ruby/object:Gem::Dependency
65
- name: mechanize
66
- requirement: &id004 !ruby/object:Gem::Requirement
39
+ requirement: &2168043360 !ruby/object:Gem::Requirement
67
40
  none: false
68
- requirements:
69
- - - ">="
70
- - !ruby/object:Gem::Version
71
- segments:
72
- - 1
73
- - 0
74
- - 0
75
- version: 1.0.0
41
+ requirements:
42
+ - - ! '>='
43
+ - !ruby/object:Gem::Version
44
+ version: 1.1.0
76
45
  type: :runtime
77
46
  prerelease: false
78
- version_requirements: *id004
79
- - !ruby/object:Gem::Dependency
47
+ version_requirements: *2168043360
48
+ - !ruby/object:Gem::Dependency
80
49
  name: jeweler
81
- requirement: &id005 !ruby/object:Gem::Requirement
50
+ requirement: &2168042860 !ruby/object:Gem::Requirement
82
51
  none: false
83
- requirements:
84
- - - ">="
85
- - !ruby/object:Gem::Version
86
- segments:
87
- - 0
88
- version: "0"
52
+ requirements:
53
+ - - ! '>='
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
89
56
  type: :development
90
57
  prerelease: false
91
- version_requirements: *id005
92
- - !ruby/object:Gem::Dependency
58
+ version_requirements: *2168042860
59
+ - !ruby/object:Gem::Dependency
93
60
  name: rspec
94
- requirement: &id006 !ruby/object:Gem::Requirement
61
+ requirement: &2168042320 !ruby/object:Gem::Requirement
62
+ none: false
63
+ requirements:
64
+ - - ! '>='
65
+ - !ruby/object:Gem::Version
66
+ version: '2.0'
67
+ type: :development
68
+ prerelease: false
69
+ version_requirements: *2168042320
70
+ - !ruby/object:Gem::Dependency
71
+ name: mechanize
72
+ requirement: &2168041840 !ruby/object:Gem::Requirement
95
73
  none: false
96
- requirements:
97
- - - ">="
98
- - !ruby/object:Gem::Version
99
- segments:
100
- - 2
101
- - 0
102
- version: "2.0"
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
103
78
  type: :development
104
79
  prerelease: false
105
- version_requirements: *id006
80
+ version_requirements: *2168041840
106
81
  description: An easy-to-use client library for the official Dropbox API.
107
82
  email: dropbox@timothymorgan.info
108
83
  executables: []
109
-
110
84
  extensions: []
111
-
112
- extra_rdoc_files:
85
+ extra_rdoc_files:
113
86
  - ChangeLog
114
87
  - LICENSE
115
88
  - README.rdoc
116
- files:
89
+ files:
117
90
  - .document
118
91
  - .rspec
119
92
  - ChangeLog
@@ -149,42 +122,29 @@ files:
149
122
  has_rdoc: true
150
123
  homepage: http://github.com/RISCfuture/dropbox
151
124
  licenses: []
152
-
153
125
  post_install_message:
154
126
  rdoc_options: []
155
-
156
- require_paths:
127
+ require_paths:
157
128
  - lib
158
- required_ruby_version: !ruby/object:Gem::Requirement
129
+ required_ruby_version: !ruby/object:Gem::Requirement
159
130
  none: false
160
- requirements:
161
- - - ">="
162
- - !ruby/object:Gem::Version
163
- hash: -350803918686472919
164
- segments:
131
+ requirements:
132
+ - - ! '>='
133
+ - !ruby/object:Gem::Version
134
+ version: '0'
135
+ segments:
165
136
  - 0
166
- version: "0"
167
- required_rubygems_version: !ruby/object:Gem::Requirement
137
+ hash: 2154918313936808061
138
+ required_rubygems_version: !ruby/object:Gem::Requirement
168
139
  none: false
169
- requirements:
170
- - - ">="
171
- - !ruby/object:Gem::Version
172
- segments:
173
- - 0
174
- version: "0"
140
+ requirements:
141
+ - - ! '>='
142
+ - !ruby/object:Gem::Version
143
+ version: '0'
175
144
  requirements: []
176
-
177
145
  rubyforge_project:
178
- rubygems_version: 1.3.7
146
+ rubygems_version: 1.6.2
179
147
  signing_key:
180
148
  specification_version: 3
181
149
  summary: Ruby client library for the official Dropbox API
182
- test_files:
183
- - examples/upload_and_delete.rb
184
- - spec/dropbox/api_spec.rb
185
- - spec/dropbox/entry_spec.rb
186
- - spec/dropbox/event_spec.rb
187
- - spec/dropbox/revision_spec.rb
188
- - spec/dropbox/session_spec.rb
189
- - spec/dropbox_spec.rb
190
- - spec/spec_helper.rb
150
+ test_files: []