dropbox 1.1.2 → 1.2.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/.gitignore CHANGED
@@ -21,6 +21,7 @@ coverage
21
21
  rdoc
22
22
  pkg
23
23
  .rvmrc
24
+ .bundle
24
25
 
25
26
  ## PROJECT::SPECIFIC
26
27
  keys.json
File without changes
data/ChangeLog CHANGED
@@ -1,3 +1,11 @@
1
+ 1.2 (2010-10-31)
2
+
3
+ * Updated thumbnail method for changes in the thumbnail API.
4
+ * Added the ability to upload files from +StringIO+ objects.
5
+ * Added option to customize uploaded file's remote name.
6
+ * Added proxy support for additional actions.
7
+ * Modernized gem: RSpec 2.0 compatible, now uses Bundler, etc.
8
+
1
9
  1.1.2 (2010-10-6)
2
10
 
3
11
  * Added ability to perform OAuth authorization on behalf of the user.
data/Gemfile ADDED
@@ -0,0 +1,14 @@
1
+ source :rubygems
2
+
3
+ # DEPENDENCIES
4
+ gem 'oauth', '>= 0.3.6'
5
+ gem 'json', '>= 1.2.0'
6
+ gem 'multipart-post', '>= 1.0'
7
+ gem 'mechanize', '>= 1.0.0'
8
+
9
+
10
+ # DEVELOPMENT
11
+ gem 'jeweler'
12
+
13
+ # TEST
14
+ gem 'rspec', '>= 2.0'
data/Gemfile.lock ADDED
@@ -0,0 +1,40 @@
1
+ GEM
2
+ remote: http://rubygems.org/
3
+ specs:
4
+ diff-lcs (1.1.2)
5
+ gemcutter (0.6.1)
6
+ git (1.2.5)
7
+ jeweler (1.4.0)
8
+ gemcutter (>= 0.1.0)
9
+ git (>= 1.2.5)
10
+ rubyforge (>= 2.0.0)
11
+ json (1.4.6)
12
+ json_pure (1.4.6)
13
+ mechanize (1.0.0)
14
+ nokogiri (>= 1.2.1)
15
+ multipart-post (1.0.1)
16
+ nokogiri (1.4.3.1)
17
+ oauth (0.4.3)
18
+ rspec (2.0.1)
19
+ rspec-core (~> 2.0.1)
20
+ rspec-expectations (~> 2.0.1)
21
+ rspec-mocks (~> 2.0.1)
22
+ rspec-core (2.0.1)
23
+ rspec-expectations (2.0.1)
24
+ diff-lcs (>= 1.1.2)
25
+ rspec-mocks (2.0.1)
26
+ rspec-core (~> 2.0.1)
27
+ rspec-expectations (~> 2.0.1)
28
+ rubyforge (2.0.4)
29
+ json_pure (>= 1.1.7)
30
+
31
+ PLATFORMS
32
+ ruby
33
+
34
+ DEPENDENCIES
35
+ jeweler
36
+ json (>= 1.2.0)
37
+ mechanize (>= 1.0.0)
38
+ multipart-post (>= 1.0)
39
+ oauth (>= 0.3.6)
40
+ rspec (>= 2.0)
data/Rakefile CHANGED
@@ -1,48 +1,32 @@
1
- require 'rubygems'
2
1
  require 'rake'
3
-
4
2
  begin
5
- require 'jeweler'
6
- Jeweler::Tasks.new do |gem|
7
- gem.name = "dropbox"
8
- gem.version = File.read("VERSION").chomp.strip
9
- gem.summary = %Q{Ruby client library for the official Dropbox API}
10
- gem.description = %Q{An easy-to-use client library for the official Dropbox API.}
11
- gem.email = "dropbox@timothymorgan.info"
12
- gem.homepage = "http://github.com/RISCfuture/dropbox"
13
- gem.authors = ["Tim Morgan"]
14
-
15
- gem.files += FileList["lib/dropbox/*.rb"]
16
- gem.add_development_dependency "rspec", ">= 1.2.9"
17
- gem.add_runtime_dependency "oauth", ">= 0.3.6"
18
- gem.add_runtime_dependency "json", ">= 1.2.0"
19
- gem.add_runtime_dependency "multipart-post", ">= 1.0"
20
- gem.add_runtime_dependency "mechanize", ">= 1.0.0"
21
- end
22
- Jeweler::GemcutterTasks.new
23
- Jeweler::RubyforgeTasks.new
3
+ require 'bundler'
24
4
  rescue LoadError
25
- puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
26
- end
27
-
28
- require 'spec/rake/spectask'
29
- Spec::Rake::SpecTask.new(:spec) do |spec|
30
- spec.libs << 'lib' << 'spec'
31
- spec.spec_files = FileList['spec/**/*_spec.rb']
5
+ puts "Bundler is not installed; install with `gem install bundler`."
6
+ exit 1
32
7
  end
33
8
 
34
- Spec::Rake::SpecTask.new(:rcov) do |spec|
35
- spec.libs << 'lib' << 'spec'
36
- spec.pattern = 'spec/**/*_spec.rb'
37
- spec.rcov = true
9
+ Bundler.require :default
10
+
11
+ Jeweler::Tasks.new do |gem|
12
+ gem.name = "dropbox"
13
+ gem.summary = %Q{Ruby client library for the official Dropbox API}
14
+ gem.description = %Q{An easy-to-use client library for the official Dropbox API.}
15
+ gem.email = "dropbox@timothymorgan.info"
16
+ gem.homepage = "http://github.com/RISCfuture/dropbox"
17
+ gem.authors = [ "Tim Morgan" ]
18
+ gem.add_dependency 'oauth', '>= 0.3.6'
19
+ gem.add_dependency 'json', '>= 1.2.0'
20
+ gem.add_dependency 'multipart-post', '>= 1.0'
21
+ gem.add_dependency 'mechanize', '>= 1.0.0'
38
22
  end
23
+ Jeweler::GemcutterTasks.new
39
24
 
40
- task :spec => :check_dependencies
41
-
42
- task :default => :spec
25
+ require 'rspec/core/rake_task'
26
+ RSpec::Core::RakeTask.new
43
27
 
44
28
  require 'rake/rdoctask'
45
- Rake::RDocTask.new do |rdoc|
29
+ Rake::RDocTask.new(:doc) do |rdoc|
46
30
  version = File.exist?('VERSION') ? File.read('VERSION').chomp.strip : ""
47
31
 
48
32
  rdoc.rdoc_dir = 'rdoc'
@@ -51,3 +35,5 @@ Rake::RDocTask.new do |rdoc|
51
35
  rdoc.rdoc_files.include('LICENSE')
52
36
  rdoc.rdoc_files.include('lib/**/*.rb')
53
37
  end
38
+
39
+ task(default: :spec)
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.1.2
1
+ 1.2.0
data/dropbox.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{dropbox}
8
- s.version = "1.1.2"
8
+ s.version = "1.2.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{2010-10-06}
12
+ s.date = %q{2010-10-31}
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 = [
@@ -20,7 +20,10 @@ Gem::Specification.new do |s|
20
20
  s.files = [
21
21
  ".document",
22
22
  ".gitignore",
23
+ ".rspec",
23
24
  "ChangeLog",
25
+ "Gemfile",
26
+ "Gemfile.lock",
24
27
  "LICENSE",
25
28
  "README.rdoc",
26
29
  "Rakefile",
@@ -46,7 +49,6 @@ Gem::Specification.new do |s|
46
49
  "spec/dropbox/revision_spec.rb",
47
50
  "spec/dropbox/session_spec.rb",
48
51
  "spec/dropbox_spec.rb",
49
- "spec/spec.opts",
50
52
  "spec/spec_helper.rb"
51
53
  ]
52
54
  s.homepage = %q{http://github.com/RISCfuture/dropbox}
@@ -69,20 +71,17 @@ Gem::Specification.new do |s|
69
71
  s.specification_version = 3
70
72
 
71
73
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
72
- s.add_development_dependency(%q<rspec>, [">= 1.2.9"])
73
74
  s.add_runtime_dependency(%q<oauth>, [">= 0.3.6"])
74
75
  s.add_runtime_dependency(%q<json>, [">= 1.2.0"])
75
76
  s.add_runtime_dependency(%q<multipart-post>, [">= 1.0"])
76
77
  s.add_runtime_dependency(%q<mechanize>, [">= 1.0.0"])
77
78
  else
78
- s.add_dependency(%q<rspec>, [">= 1.2.9"])
79
79
  s.add_dependency(%q<oauth>, [">= 0.3.6"])
80
80
  s.add_dependency(%q<json>, [">= 1.2.0"])
81
81
  s.add_dependency(%q<multipart-post>, [">= 1.0"])
82
82
  s.add_dependency(%q<mechanize>, [">= 1.0.0"])
83
83
  end
84
84
  else
85
- s.add_dependency(%q<rspec>, [">= 1.2.9"])
86
85
  s.add_dependency(%q<oauth>, [">= 0.3.6"])
87
86
  s.add_dependency(%q<json>, [">= 1.2.0"])
88
87
  s.add_dependency(%q<multipart-post>, [">= 1.0"])
data/lib/dropbox/api.rb CHANGED
@@ -88,7 +88,7 @@ module Dropbox
88
88
  api_body :get, 'files', root(options), *rest
89
89
  #TODO streaming, range queries
90
90
  end
91
-
91
+
92
92
  # Downloads a minimized thumbnail for a file. Pass the path to the file,
93
93
  # optionally the size of the thumbnail you want, and any additional options.
94
94
  # See https://www.dropbox.com/developers/docs#thumbnails for a list of valid
@@ -105,6 +105,8 @@ module Dropbox
105
105
  #
106
106
  # Options:
107
107
  #
108
+ # +format+:: The image format (see the API documentation for supported
109
+ # formats).
108
110
  # +mode+:: Temporarily changes the API mode. See the MODES array.
109
111
  #
110
112
  # Examples:
@@ -116,18 +118,13 @@ module Dropbox
116
118
  # Get the thumbnail for an image in the +medium+ size:
117
119
  #
118
120
  # session.thumbnail('my/image.jpg', 'medium')
119
-
120
- def thumbnail(*args)
121
- options = args.extract_options!
122
- path = args.shift
123
- size = args.shift
124
- raise ArgumentError, "thumbnail takes a path, an optional size, and optional options" unless path.kind_of?(String) and (size.kind_of?(String) or size.nil?) and args.empty?
125
-
121
+
122
+ def thumbnail(path, options={})\
126
123
  path = path.sub(/^\//, '')
127
124
  rest = Dropbox.check_path(path).split('/')
128
125
  rest << { :ssl => @ssl }
129
- rest.last[:size] = size if size
130
-
126
+ rest.last.merge! options
127
+
131
128
  begin
132
129
  api_body :get, 'thumbnails', root(options), *rest
133
130
  rescue Dropbox::UnsuccessfulResponseError => e
@@ -141,18 +138,22 @@ module Dropbox
141
138
  # of the remote file will be identical to that of the local file. You can
142
139
  # provide any of the following for the first parameter:
143
140
  #
144
- # * a +File+ object, in which case the name of the local file is used, or
145
- # * a path to a file, in which case that file's name is used.
141
+ # * a +File+ object (in which case the name of the local file is used),
142
+ # * a path to a file (in which case that file's name is used), or
143
+ # * a +StringIO+ (in which case the <tt>:as</tt> option must be specified.
146
144
  #
147
145
  # Options:
148
146
  #
149
147
  # +mode+:: Temporarily changes the API mode. See the MODES array.
148
+ # +as+:: Specify a custom name for the uploaded file (required when
149
+ # uploading from a +StringIO+ stream).
150
150
  #
151
151
  # Examples:
152
152
  #
153
153
  # session.upload 'music.pdf', '/' # upload a file by path to the root directory
154
154
  # session.upload 'music.pdf, 'music/' # upload a file by path to the music folder
155
155
  # session.upload File.new('music.pdf'), '/' # same as the first example
156
+ # session.upload open('http://www.example.com/index.html'), :as => 'example.html' # upload from a StringIO stream (requires open-uri)
156
157
 
157
158
  def upload(local_file, remote_path, options={})
158
159
  if local_file.kind_of?(File) or local_file.kind_of?(Tempfile) then
@@ -163,9 +164,15 @@ module Dropbox
163
164
  file = File.new(local_file)
164
165
  name = File.basename(local_file)
165
166
  local_path = local_file
167
+ elsif local_file.kind_of?(StringIO) then
168
+ raise(ArgumentError, "Must specify the :as option when uploading from StringIO") unless options[:as]
169
+ file = local_file
170
+ local_path = options[:as]
166
171
  else
167
- raise ArgumentError, "local_file must be a File or file path"
172
+ raise ArgumentError, "local_file must be a File, StringIO, or file path"
168
173
  end
174
+
175
+ name = options.delete(:as).to_s if options[:as]
169
176
 
170
177
  remote_path = remote_path.sub(/^\//, '')
171
178
  remote_path = Dropbox.check_path(remote_path).split('/')
@@ -188,8 +195,9 @@ module Dropbox
188
195
  name,
189
196
  local_path))
190
197
  request['authorization'] = oauth_signature.join(', ')
191
-
192
- response = Net::HTTP.start(uri.host, uri.port) { |http| http.request(request) }
198
+
199
+ proxy = URI.parse(@proxy || "")
200
+ response = Net::HTTP::Proxy(proxy.host, proxy.port).new(uri.host, uri.port).request(request)
193
201
  if response.kind_of?(Net::HTTPSuccess) then
194
202
  begin
195
203
  return JSON.parse(response.body).symbolize_keys_recursively.to_struct_recursively
@@ -264,7 +272,7 @@ module Dropbox
264
272
  # +mode+:: Temporarily changes the API mode. See the MODES array.
265
273
  #
266
274
  # TODO The API documentation says this method returns 404 if the path does not exist, but it actually returns 5xx.
267
-
275
+
268
276
  def delete(path, options={})
269
277
  path = path.sub(/^\//, '')
270
278
  path.sub! /\/$/, ''
@@ -388,7 +396,7 @@ module Dropbox
388
396
  #args.last[:hash] = options[:hash] if options[:hash]
389
397
  args.last[:list] = !(options[:suppress_list].to_bool)
390
398
  args.last[:ssl] = @ssl
391
-
399
+
392
400
  begin
393
401
  parse_metadata(get(*args)).to_struct_recursively
394
402
  rescue UnsuccessfulResponseError => error
@@ -419,7 +427,7 @@ module Dropbox
419
427
  metadata(path, options.merge(:suppress_list => false)).contents
420
428
  end
421
429
  alias :ls :list
422
-
430
+
423
431
  def event_metadata(target_events, options={}) # :nodoc:
424
432
  get 'event_metadata', :ssl => @ssl, :root => root(options), :target_events => target_events
425
433
  end
@@ -558,17 +566,17 @@ module Dropbox
558
566
  # limit.
559
567
 
560
568
  class TooManyEntriesError < FileError; end
561
-
569
+
562
570
  # Raised when the event_metadata method returns an error.
563
-
571
+
564
572
  class PingbackError < StandardError
565
573
  # The HTTP error code returned by the event_metadata method.
566
574
  attr_reader :code
567
-
575
+
568
576
  def initialize(code) # :nodoc
569
577
  @code = code
570
578
  end
571
-
579
+
572
580
  def to_s # :nodoc:
573
581
  "#{self.class.to_s} code #{@code}"
574
582
  end
@@ -131,7 +131,7 @@ module Dropbox
131
131
 
132
132
  login_form.login_email = @authorizing_user
133
133
  login_form.login_password = @authorizing_password
134
- auth_page = login_form.submit()
134
+ auth_page = login_form.submit
135
135
 
136
136
  auth_form = auth_page.form_with(:action => 'authorize')
137
137
  if auth_form
@@ -145,6 +145,12 @@ module Dropbox
145
145
  authorize
146
146
  end
147
147
 
148
+ # Returns the OAuth access_token which allows access to token and secret.
149
+
150
+ def access_token
151
+ @access_token || raise(UnauthorizedError, "You need to authorize the Dropbox user before you can call API methods")
152
+ end
153
+
148
154
  # Serializes this object into a string that can then be recreated with the
149
155
  # Dropbox::Session.deserialize method.
150
156
 
@@ -179,13 +185,9 @@ module Dropbox
179
185
 
180
186
  private
181
187
 
182
- def access_token
183
- @access_token || raise(UnauthorizedError, "You need to authorize the Dropbox user before you can call API methods")
184
- end
185
-
186
188
  def clone_with_host(host)
187
189
  session = dup
188
- consumer = OAuth::Consumer.new(@consumer.key, @consumer.secret, :site => host)
190
+ consumer = OAuth::Consumer.new(@consumer.key, @consumer.secret, :site => host, :proxy => @proxy)
189
191
  session.instance_variable_set :@consumer, consumer
190
192
  session.instance_variable_set :@access_token, OAuth::AccessToken.new(consumer, @access_token.token, @access_token.secret)
191
193
  return session
@@ -30,7 +30,8 @@ def stub_for_upload_testing
30
30
  @response.stub!(:kind_of?).with(Net::HTTPSuccess).and_return(true)
31
31
  @response.stub!(:body).and_return('{"test":"val"}')
32
32
 
33
- Net::HTTP.stub!(:start).and_return(@response)
33
+ @http = mock('Net::HTTP', :request => @response)
34
+ Net::HTTP.stub!(:new).and_return(@http)
34
35
  end
35
36
 
36
37
  def response_acts_as(subclass)
@@ -121,11 +122,6 @@ describe Dropbox::API do
121
122
  @session.thumbnail(path)
122
123
  end
123
124
 
124
- it "should pass along a size" do
125
- should_receive_api_method_with_arguments @token_mock, :get, 'thumbnails', { :size => 'medium' }, @response, 'path/to/file', 'sandbox'
126
- @session.thumbnail "path/to/file", 'medium'
127
- end
128
-
129
125
  it "should raise an error if too many arguments are given" do
130
126
  lambda { @session.thumbnail "path/to/file", 'large', 'oops', :foo => 'bar' }.should raise_error(ArgumentError)
131
127
  end
@@ -553,6 +549,11 @@ describe Dropbox::API do
553
549
  UploadIO.should_receive(:convert!).once.with(@file, anything, File.basename(__FILE__), __FILE__)
554
550
  @session.upload @file, 'remote/'
555
551
  end
552
+
553
+ it "should accept a custom file name via the :as parameter" do
554
+ UploadIO.should_receive(:convert!).once.with(@file, anything, 'myfile.txt', __FILE__)
555
+ @session.upload @file, 'remote/', :as => 'myfile.txt'
556
+ end
556
557
  end
557
558
 
558
559
  describe "given a String object" do
@@ -566,11 +567,32 @@ describe Dropbox::API do
566
567
  UploadIO.should_receive(:convert!).once.with(@file, anything, File.basename(__FILE__), __FILE__)
567
568
  @session.upload @string, 'remote/'
568
569
  end
570
+
571
+ it "should accept a custom file name via the :as parameter" do
572
+ UploadIO.should_receive(:convert!).once.with(@file, anything, 'myfile.txt', __FILE__)
573
+ @session.upload @string, 'remote/', :as => 'myfile.txt'
574
+ end
569
575
  end
570
576
 
571
577
  it "should raise an error if given an unknown argument type" do
572
578
  lambda { @session.upload 123, 'path' }.should raise_error(ArgumentError)
573
579
  end
580
+
581
+ describe "given a StringIO object and a filename" do
582
+ before :each do
583
+ @string_io = StringIO.new("test123")
584
+ @filename = "test.txt"
585
+ end
586
+
587
+ it "should use the StringIO as the stream and take filename from the options" do
588
+ UploadIO.should_receive(:convert!).once.with(@string_io, anything, @filename, @filename)
589
+ @session.upload @string_io, 'remote/', :as => @filename
590
+ end
591
+
592
+ it "should raise an exception if the :as option is not specified" do
593
+ lambda { @session.upload @string_io, 'remote/' }.should raise_error(ArgumentError)
594
+ end
595
+ end
574
596
  end
575
597
 
576
598
  describe "request" do
@@ -621,7 +643,8 @@ describe Dropbox::API do
621
643
 
622
644
  it "should send the request" do
623
645
  uri = URI.parse(Dropbox::ALTERNATE_HOSTS['files'])
624
- Net::HTTP.should_receive(:start).once.with(uri.host, uri.port).and_return(@response)
646
+ @http = mock('Net::HTTP', :request => @response)
647
+ Net::HTTP.stub!(:new).and_return(@http)
625
648
 
626
649
  @session.upload __FILE__, 'test'
627
650
  end
@@ -631,7 +654,8 @@ describe Dropbox::API do
631
654
  @session.authorize
632
655
 
633
656
  uri = URI.parse(Dropbox::ALTERNATE_SSL_HOSTS['files'])
634
- Net::HTTP.should_receive(:start).once.with(uri.host, uri.port).and_return(@response)
657
+ @http = mock('Net::HTTP', :request => @response)
658
+ Net::HTTP.stub!(:new).and_return(@http)
635
659
 
636
660
  @session.upload __FILE__, 'test'
637
661
  end
data/spec/spec_helper.rb CHANGED
@@ -1,9 +1,9 @@
1
+ Bundler.require :default, :test
2
+
1
3
  $LOAD_PATH.unshift(File.dirname(__FILE__))
2
4
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
3
- require 'rubygems'
4
- require 'dropbox.rb'
5
- require 'spec'
6
- require 'spec/autorun'
5
+
6
+ require 'dropbox'
7
7
 
8
8
  module ExternalKeysFileHelper
9
9
  def read_keys_file
@@ -11,7 +11,7 @@ module ExternalKeysFileHelper
11
11
  raise "Please add a keys.json file to the project directory containing your Dropbox API key and secret. See keys.json.example to get started."
12
12
  end
13
13
 
14
- keys_file_contents = open("keys.json", "r").read()
14
+ keys_file_contents = open("keys.json", "r").read
15
15
  data = JSON.parse(keys_file_contents)
16
16
  unless %w( key secret email password ).all? { |key| data.include? key }
17
17
  raise "Your keys.json file does contain all the required information. See keys.json.example for more help."
@@ -21,6 +21,6 @@ module ExternalKeysFileHelper
21
21
  end
22
22
  end
23
23
 
24
- Spec::Runner.configure do |config|
24
+ RSpec.configure do |config|
25
25
  config.include(ExternalKeysFileHelper)
26
26
  end
metadata CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
4
4
  prerelease: false
5
5
  segments:
6
6
  - 1
7
- - 1
8
7
  - 2
9
- version: 1.1.2
8
+ - 0
9
+ version: 1.2.0
10
10
  platform: ruby
11
11
  authors:
12
12
  - Tim Morgan
@@ -14,28 +14,12 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-10-06 00:00:00 -07:00
17
+ date: 2010-10-31 00:00:00 -07:00
18
18
  default_executable:
19
19
  dependencies:
20
- - !ruby/object:Gem::Dependency
21
- name: rspec
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
24
- none: false
25
- requirements:
26
- - - ">="
27
- - !ruby/object:Gem::Version
28
- segments:
29
- - 1
30
- - 2
31
- - 9
32
- version: 1.2.9
33
- type: :development
34
- version_requirements: *id001
35
20
  - !ruby/object:Gem::Dependency
36
21
  name: oauth
37
- prerelease: false
38
- requirement: &id002 !ruby/object:Gem::Requirement
22
+ requirement: &id001 !ruby/object:Gem::Requirement
39
23
  none: false
40
24
  requirements:
41
25
  - - ">="
@@ -46,11 +30,11 @@ dependencies:
46
30
  - 6
47
31
  version: 0.3.6
48
32
  type: :runtime
49
- version_requirements: *id002
33
+ prerelease: false
34
+ version_requirements: *id001
50
35
  - !ruby/object:Gem::Dependency
51
36
  name: json
52
- prerelease: false
53
- requirement: &id003 !ruby/object:Gem::Requirement
37
+ requirement: &id002 !ruby/object:Gem::Requirement
54
38
  none: false
55
39
  requirements:
56
40
  - - ">="
@@ -61,11 +45,11 @@ dependencies:
61
45
  - 0
62
46
  version: 1.2.0
63
47
  type: :runtime
64
- version_requirements: *id003
48
+ prerelease: false
49
+ version_requirements: *id002
65
50
  - !ruby/object:Gem::Dependency
66
51
  name: multipart-post
67
- prerelease: false
68
- requirement: &id004 !ruby/object:Gem::Requirement
52
+ requirement: &id003 !ruby/object:Gem::Requirement
69
53
  none: false
70
54
  requirements:
71
55
  - - ">="
@@ -75,11 +59,11 @@ dependencies:
75
59
  - 0
76
60
  version: "1.0"
77
61
  type: :runtime
78
- version_requirements: *id004
62
+ prerelease: false
63
+ version_requirements: *id003
79
64
  - !ruby/object:Gem::Dependency
80
65
  name: mechanize
81
- prerelease: false
82
- requirement: &id005 !ruby/object:Gem::Requirement
66
+ requirement: &id004 !ruby/object:Gem::Requirement
83
67
  none: false
84
68
  requirements:
85
69
  - - ">="
@@ -90,7 +74,8 @@ dependencies:
90
74
  - 0
91
75
  version: 1.0.0
92
76
  type: :runtime
93
- version_requirements: *id005
77
+ prerelease: false
78
+ version_requirements: *id004
94
79
  description: An easy-to-use client library for the official Dropbox API.
95
80
  email: dropbox@timothymorgan.info
96
81
  executables: []
@@ -104,7 +89,10 @@ extra_rdoc_files:
104
89
  files:
105
90
  - .document
106
91
  - .gitignore
92
+ - .rspec
107
93
  - ChangeLog
94
+ - Gemfile
95
+ - Gemfile.lock
108
96
  - LICENSE
109
97
  - README.rdoc
110
98
  - Rakefile
@@ -130,7 +118,6 @@ files:
130
118
  - spec/dropbox/revision_spec.rb
131
119
  - spec/dropbox/session_spec.rb
132
120
  - spec/dropbox_spec.rb
133
- - spec/spec.opts
134
121
  - spec/spec_helper.rb
135
122
  has_rdoc: true
136
123
  homepage: http://github.com/RISCfuture/dropbox
@@ -146,6 +133,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
146
133
  requirements:
147
134
  - - ">="
148
135
  - !ruby/object:Gem::Version
136
+ hash: -1468643052692495920
149
137
  segments:
150
138
  - 0
151
139
  version: "0"