rdropbox 1.0.0 → 1.1.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 +10 -0
- data/README.rdoc +7 -2
- data/Rakefile +0 -2
- data/VERSION +1 -1
- data/lib/dropbox.rb +27 -4
- data/lib/dropbox/api.rb +53 -7
- data/lib/dropbox/entry.rb +7 -1
- data/lib/dropbox/event.rb +0 -1
- data/{dropbox.gemspec → rdropbox.gemspec} +11 -10
- data/spec/dropbox/api_spec.rb +57 -0
- data/spec/dropbox/entry_spec.rb +30 -0
- metadata +21 -6
data/ChangeLog
ADDED
data/README.rdoc
CHANGED
@@ -2,6 +2,10 @@
|
|
2
2
|
|
3
3
|
An easy-to-use third-party interface to the RESTful Dropbox API.
|
4
4
|
|
5
|
+
== Installation
|
6
|
+
|
7
|
+
gem install dropbox
|
8
|
+
|
5
9
|
== Tutorial by Example
|
6
10
|
|
7
11
|
First things first: Be sure you've gotten a consumer key and secret from
|
@@ -12,7 +16,6 @@ http://developers.dropbox.com
|
|
12
16
|
puts "Visit #{session.authorize_url} to log in to Dropbox. Hit enter when you have done this."
|
13
17
|
gets
|
14
18
|
session.authorize
|
15
|
-
session.sandbox = true
|
16
19
|
|
17
20
|
# STEP 2: Play!
|
18
21
|
session.upload('testfile.txt')
|
@@ -48,7 +51,7 @@ account, and then upload a file to their Dropbox.
|
|
48
51
|
return redirect_to(:action => 'authorize') unless dropbox_session.authorized?
|
49
52
|
|
50
53
|
if request.method == :post then
|
51
|
-
dropbox_session.upload params[:file], 'My Uploads'
|
54
|
+
dropbox_session.upload params[:file], 'My Uploads'
|
52
55
|
render :text => 'Uploaded OK'
|
53
56
|
else
|
54
57
|
# display a multipart file field form
|
@@ -67,6 +70,8 @@ account, and then upload a file to their Dropbox.
|
|
67
70
|
* The Dropbox::Memoization module has some handy utility methods for memoizing
|
68
71
|
server responses to reduce network calls. It's plug-in compatible with any
|
69
72
|
caching strategy you might already have (memcache, etc.).
|
73
|
+
* If you're using pingbacks, check out Dropbox::Event and Dropbox::Revision.
|
74
|
+
Those classes parse pingbacks from Dropbox into Ruby objects.
|
70
75
|
|
71
76
|
== Note on Patches/Pull Requests
|
72
77
|
|
data/Rakefile
CHANGED
@@ -17,8 +17,6 @@ begin
|
|
17
17
|
gem.add_runtime_dependency "oauth", ">= 0.3.6"
|
18
18
|
gem.add_runtime_dependency "json", ">= 1.2.0"
|
19
19
|
gem.add_runtime_dependency "multipart-post", ">= 1.0"
|
20
|
-
|
21
|
-
gem.rubyforge_project = "dropbox"
|
22
20
|
end
|
23
21
|
Jeweler::GemcutterTasks.new
|
24
22
|
Jeweler::RubyforgeTasks.new
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.
|
1
|
+
1.1.0
|
data/lib/dropbox.rb
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
$stderr.puts "DEPRECATION NOTICE: The rdropbox gem has been renamed dropbox."
|
2
|
+
$stderr.puts "Please uninstall this gem and install dropbox instead."
|
3
|
+
$stderr.puts "Future updates will only be pushed to the dropbox gemspec."
|
4
|
+
|
1
5
|
# Defines the Dropbox module.
|
2
6
|
|
3
7
|
require 'cgi'
|
@@ -8,8 +12,19 @@ require 'set'
|
|
8
12
|
require 'time'
|
9
13
|
require 'tempfile'
|
10
14
|
|
11
|
-
|
12
|
-
|
15
|
+
require 'extensions/array'
|
16
|
+
require 'extensions/hash'
|
17
|
+
require 'extensions/module'
|
18
|
+
require 'extensions/object'
|
19
|
+
require 'extensions/string'
|
20
|
+
require 'extensions/to_bool'
|
21
|
+
|
22
|
+
require 'dropbox/memoization'
|
23
|
+
require 'dropbox/api'
|
24
|
+
require 'dropbox/entry'
|
25
|
+
require 'dropbox/event'
|
26
|
+
require 'dropbox/revision'
|
27
|
+
require 'dropbox/session'
|
13
28
|
|
14
29
|
# Container module for the all Dropbox API classes.
|
15
30
|
|
@@ -21,9 +36,17 @@ module Dropbox
|
|
21
36
|
# The SSL host serving API requests.
|
22
37
|
SSL_HOST = "https://api.dropbox.com"
|
23
38
|
# Alternate hosts for other API requests.
|
24
|
-
ALTERNATE_HOSTS = {
|
39
|
+
ALTERNATE_HOSTS = {
|
40
|
+
'event_content' => 'http://api-content.dropbox.com',
|
41
|
+
'files' => 'http://api-content.dropbox.com',
|
42
|
+
'thumbnails' => 'http://api-content.dropbox.com'
|
43
|
+
}
|
25
44
|
# Alternate SSL hosts for other API requests.
|
26
|
-
ALTERNATE_SSL_HOSTS = {
|
45
|
+
ALTERNATE_SSL_HOSTS = {
|
46
|
+
'event_content' => 'https://api-content.dropbox.com',
|
47
|
+
'files' => 'https://api-content.dropbox.com',
|
48
|
+
'thumbnails' => 'https://api-content.dropbox.com'
|
49
|
+
}
|
27
50
|
|
28
51
|
def self.api_url(*paths_and_options) # :nodoc:
|
29
52
|
params = paths_and_options.extract_options!
|
data/lib/dropbox/api.rb
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
# Defines the Dropbox::API module.
|
2
2
|
|
3
|
-
require "#{File.expand_path File.dirname(__FILE__)}/memoization"
|
4
3
|
require 'json'
|
5
4
|
require 'net/http/post/multipart'
|
6
5
|
|
@@ -29,9 +28,9 @@ module Dropbox
|
|
29
28
|
# are inaccessible.
|
30
29
|
# * In Dropbox mode, the root is the user's Dropbox folder, and all files are
|
31
30
|
# accessible. This mode is typically only available to certain API users.
|
32
|
-
# * In metadata-only mode, the root is the Dropbox folder, but
|
33
|
-
#
|
34
|
-
#
|
31
|
+
# * In metadata-only mode, the root is the Dropbox folder, but write access
|
32
|
+
# is not available. Operations that modify the user's files will
|
33
|
+
# fail.
|
35
34
|
#
|
36
35
|
# You should configure the Dropbox::Session instance to use whichever mode
|
37
36
|
# you chose when you set up your application:
|
@@ -63,8 +62,8 @@ module Dropbox
|
|
63
62
|
alias :dir :entry
|
64
63
|
|
65
64
|
# Returns a +Struct+ with information about the user's account. See
|
66
|
-
#
|
67
|
-
#
|
65
|
+
# https://www.dropbox.com/developers/docs#account-info for more information
|
66
|
+
# on the data returned.
|
68
67
|
|
69
68
|
def account
|
70
69
|
get('account', 'info', :ssl => @ssl).to_struct_recursively
|
@@ -89,6 +88,53 @@ module Dropbox
|
|
89
88
|
api_body :get, 'files', root(options), *rest
|
90
89
|
#TODO streaming, range queries
|
91
90
|
end
|
91
|
+
|
92
|
+
# Downloads a minimized thumbnail for a file. Pass the path to the file,
|
93
|
+
# optionally the size of the thumbnail you want, and any additional options.
|
94
|
+
# See https://www.dropbox.com/developers/docs#thumbnails for a list of valid
|
95
|
+
# size specifiers.
|
96
|
+
#
|
97
|
+
# Returns the content of the thumbnail image as a +String+. The thumbnail
|
98
|
+
# data is in JPEG format. Returns +nil+ if the file does not have a
|
99
|
+
# thumbnail. You can check if a file has a thumbnail using the metadata
|
100
|
+
# method.
|
101
|
+
#
|
102
|
+
# Because of the way this API method works, if you pass in the name of a
|
103
|
+
# file that does not exist, you will not receive a 404, but instead just get
|
104
|
+
# +nil+.
|
105
|
+
#
|
106
|
+
# Options:
|
107
|
+
#
|
108
|
+
# +mode+:: Temporarily changes the API mode. See the MODES array.
|
109
|
+
#
|
110
|
+
# Examples:
|
111
|
+
#
|
112
|
+
# Get the thumbnail for an image (default thunmbnail size):
|
113
|
+
#
|
114
|
+
# session.thumbnail('my/image.jpg')
|
115
|
+
#
|
116
|
+
# Get the thumbnail for an image in the +medium+ size:
|
117
|
+
#
|
118
|
+
# 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
|
+
|
126
|
+
path.sub! /^\//, ''
|
127
|
+
rest = Dropbox.check_path(path).split('/')
|
128
|
+
rest << { :ssl => @ssl }
|
129
|
+
rest.last[:size] = size if size
|
130
|
+
|
131
|
+
begin
|
132
|
+
api_body :get, 'thumbnails', root(options), *rest
|
133
|
+
rescue Dropbox::UnsuccessfulResponseError => e
|
134
|
+
raise unless e.response.code.to_i == 404
|
135
|
+
return nil
|
136
|
+
end
|
137
|
+
end
|
92
138
|
|
93
139
|
# Uploads a file to a path relative to the configured mode's root. The
|
94
140
|
# +remote_path+ parameter is taken to be the path portion _only_; the name
|
@@ -314,7 +360,7 @@ module Dropbox
|
|
314
360
|
# true).
|
315
361
|
#
|
316
362
|
# For information on the schema of the return struct, see the Dropbox API
|
317
|
-
# at
|
363
|
+
# at https://www.dropbox.com/developers/docs#metadata
|
318
364
|
#
|
319
365
|
# The +modified+ key will be converted into a +Time+ instance. The +is_dir+
|
320
366
|
# key will also be available as <tt>directory?</tt>.
|
data/lib/dropbox/entry.rb
CHANGED
@@ -82,6 +82,12 @@ module Dropbox
|
|
82
82
|
@session.download path, options
|
83
83
|
end
|
84
84
|
alias :body :download
|
85
|
+
|
86
|
+
# Delegates to Dropbox::API#thumbnail.
|
87
|
+
|
88
|
+
def thumbnail(*args)
|
89
|
+
@session.thumbnail path, *args
|
90
|
+
end
|
85
91
|
|
86
92
|
# Delegates to Dropbox::API#link.
|
87
93
|
|
@@ -93,4 +99,4 @@ module Dropbox
|
|
93
99
|
"#<#{self.class.to_s} #{path}>"
|
94
100
|
end
|
95
101
|
end
|
96
|
-
end
|
102
|
+
end
|
data/lib/dropbox/event.rb
CHANGED
@@ -4,26 +4,27 @@
|
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
|
-
s.name = %q{
|
8
|
-
s.version = "1.
|
7
|
+
s.name = %q{rdropbox}
|
8
|
+
s.version = "1.1.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-05-
|
13
|
-
s.description = %q{An easy-to-use
|
12
|
+
s.date = %q{2010-05-27}
|
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 = [
|
16
|
-
"
|
16
|
+
"ChangeLog",
|
17
|
+
"LICENSE",
|
17
18
|
"README.rdoc"
|
18
19
|
]
|
19
20
|
s.files = [
|
20
21
|
".document",
|
21
22
|
".gitignore",
|
23
|
+
"ChangeLog",
|
22
24
|
"LICENSE",
|
23
25
|
"README.rdoc",
|
24
26
|
"Rakefile",
|
25
27
|
"VERSION",
|
26
|
-
"dropbox.gemspec",
|
27
28
|
"lib/dropbox.rb",
|
28
29
|
"lib/dropbox/api.rb",
|
29
30
|
"lib/dropbox/entry.rb",
|
@@ -37,6 +38,7 @@ Gem::Specification.new do |s|
|
|
37
38
|
"lib/extensions/object.rb",
|
38
39
|
"lib/extensions/string.rb",
|
39
40
|
"lib/extensions/to_bool.rb",
|
41
|
+
"rdropbox.gemspec",
|
40
42
|
"spec/dropbox/api_spec.rb",
|
41
43
|
"spec/dropbox/entry_spec.rb",
|
42
44
|
"spec/dropbox/event_spec.rb",
|
@@ -49,9 +51,8 @@ Gem::Specification.new do |s|
|
|
49
51
|
s.homepage = %q{http://github.com/RISCfuture/dropbox}
|
50
52
|
s.rdoc_options = ["--charset=UTF-8"]
|
51
53
|
s.require_paths = ["lib"]
|
52
|
-
s.
|
53
|
-
s.
|
54
|
-
s.summary = %q{Ruby Dropbox interface}
|
54
|
+
s.rubygems_version = %q{1.3.7}
|
55
|
+
s.summary = %q{Ruby client library for the official Dropbox API}
|
55
56
|
s.test_files = [
|
56
57
|
"spec/dropbox/api_spec.rb",
|
57
58
|
"spec/dropbox/entry_spec.rb",
|
@@ -66,7 +67,7 @@ Gem::Specification.new do |s|
|
|
66
67
|
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
67
68
|
s.specification_version = 3
|
68
69
|
|
69
|
-
if Gem::Version.new(Gem::
|
70
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
70
71
|
s.add_development_dependency(%q<rspec>, [">= 1.2.9"])
|
71
72
|
s.add_runtime_dependency(%q<oauth>, [">= 0.3.6"])
|
72
73
|
s.add_runtime_dependency(%q<json>, [">= 1.2.0"])
|
data/spec/dropbox/api_spec.rb
CHANGED
@@ -96,6 +96,63 @@ describe Dropbox::API do
|
|
96
96
|
@session.download(path)
|
97
97
|
end
|
98
98
|
end
|
99
|
+
|
100
|
+
describe "#thumbnail" do
|
101
|
+
it "should call the thumbnails API method" do
|
102
|
+
should_receive_api_method_with_arguments @token_mock, :get, 'thumbnails', {}, @response, 'path/to/file', 'sandbox'
|
103
|
+
@session.thumbnail "path/to/file"
|
104
|
+
end
|
105
|
+
|
106
|
+
it "should strip a leading slash" do
|
107
|
+
should_receive_api_method_with_arguments @token_mock, :get, 'thumbnails', {}, @response, 'path/to/file', 'sandbox'
|
108
|
+
@session.thumbnail "/path/to/file"
|
109
|
+
end
|
110
|
+
|
111
|
+
it "should return the body of the response" do
|
112
|
+
@token_mock.stub!(:get).and_return(@response)
|
113
|
+
@session.thumbnail("path/to/file").should eql("response body")
|
114
|
+
end
|
115
|
+
|
116
|
+
it "should check the path" do
|
117
|
+
path = "test/path"
|
118
|
+
Dropbox.should_receive(:check_path).once.with(path).and_return(path)
|
119
|
+
@token_mock.stub!(:get).and_return(@response)
|
120
|
+
|
121
|
+
@session.thumbnail(path)
|
122
|
+
end
|
123
|
+
|
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
|
+
it "should raise an error if too many arguments are given" do
|
130
|
+
lambda { @session.thumbnail "path/to/file", 'large', 'oops', :foo => 'bar' }.should raise_error(ArgumentError)
|
131
|
+
end
|
132
|
+
|
133
|
+
it "should raise an error if invalid arguments are given" do
|
134
|
+
lambda { @session.thumbnail "path/to/file", 'large', :not_string }.should raise_error(ArgumentError)
|
135
|
+
lambda { @session.thumbnail "path/to/file", 'large', 'oops', 'not_hash' }.should raise_error(ArgumentError)
|
136
|
+
end
|
137
|
+
|
138
|
+
it "should return nil if a 404 is received" do
|
139
|
+
request_mock = mock('Request')
|
140
|
+
response_mock = mock('Response', :code => '404')
|
141
|
+
error = Dropbox::UnsuccessfulResponseError.new(request_mock, response_mock)
|
142
|
+
@token_mock.stub!(:get).and_raise(error)
|
143
|
+
|
144
|
+
@session.thumbnail('foo').should be_nil
|
145
|
+
end
|
146
|
+
|
147
|
+
it "should raise any other response codes" do
|
148
|
+
request_mock = mock('Request')
|
149
|
+
response_mock = mock('Response', :code => '500')
|
150
|
+
error = Dropbox::UnsuccessfulResponseError.new(request_mock, response_mock)
|
151
|
+
@token_mock.stub!(:get).and_raise(error)
|
152
|
+
|
153
|
+
lambda { @session.thumbnail('foo') }.should raise_error(Dropbox::UnsuccessfulResponseError)
|
154
|
+
end
|
155
|
+
end
|
99
156
|
|
100
157
|
describe "#copy" do
|
101
158
|
before :each do
|
data/spec/dropbox/entry_spec.rb
CHANGED
@@ -125,6 +125,36 @@ describe Dropbox::Entry do
|
|
125
125
|
@entry.download(:sandbox => true)
|
126
126
|
end
|
127
127
|
end
|
128
|
+
|
129
|
+
describe "#thumbnail" do
|
130
|
+
it "should delegate to the session and return the result" do
|
131
|
+
result = mock('result')
|
132
|
+
@session.should_receive(:thumbnail).once.with(@path).and_return(result)
|
133
|
+
|
134
|
+
@entry.thumbnail.should eql(result)
|
135
|
+
end
|
136
|
+
|
137
|
+
it "should pass along a size" do
|
138
|
+
result = mock('result')
|
139
|
+
@session.should_receive(:thumbnail).once.with(@path, 'medium').and_return(result)
|
140
|
+
|
141
|
+
@entry.thumbnail('medium').should eql(result)
|
142
|
+
end
|
143
|
+
|
144
|
+
it "should pass along options" do
|
145
|
+
result = mock('result')
|
146
|
+
@session.should_receive(:thumbnail).once.with(@path, { :sandbox => true }).and_return(result)
|
147
|
+
|
148
|
+
@entry.thumbnail(:sandbox => true).should eql(result)
|
149
|
+
end
|
150
|
+
|
151
|
+
it "should pass along a size and options" do
|
152
|
+
result = mock('result')
|
153
|
+
@session.should_receive(:thumbnail).once.with(@path, 'medium', { :sandbox => true }).and_return(result)
|
154
|
+
|
155
|
+
@entry.thumbnail('medium', :sandbox => true).should eql(result)
|
156
|
+
end
|
157
|
+
end
|
128
158
|
|
129
159
|
describe "#link" do
|
130
160
|
it "should delegate to the session and return the result" do
|
metadata
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rdropbox
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
+
hash: 19
|
4
5
|
prerelease: false
|
5
6
|
segments:
|
6
7
|
- 1
|
8
|
+
- 1
|
7
9
|
- 0
|
8
|
-
|
9
|
-
version: 1.0.0
|
10
|
+
version: 1.1.0
|
10
11
|
platform: ruby
|
11
12
|
authors:
|
12
13
|
- Tim Morgan
|
@@ -14,16 +15,18 @@ autorequire:
|
|
14
15
|
bindir: bin
|
15
16
|
cert_chain: []
|
16
17
|
|
17
|
-
date: 2010-05-
|
18
|
+
date: 2010-05-27 00:00:00 -07:00
|
18
19
|
default_executable:
|
19
20
|
dependencies:
|
20
21
|
- !ruby/object:Gem::Dependency
|
21
22
|
name: rspec
|
22
23
|
prerelease: false
|
23
24
|
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
24
26
|
requirements:
|
25
27
|
- - ">="
|
26
28
|
- !ruby/object:Gem::Version
|
29
|
+
hash: 13
|
27
30
|
segments:
|
28
31
|
- 1
|
29
32
|
- 2
|
@@ -35,9 +38,11 @@ dependencies:
|
|
35
38
|
name: oauth
|
36
39
|
prerelease: false
|
37
40
|
requirement: &id002 !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
38
42
|
requirements:
|
39
43
|
- - ">="
|
40
44
|
- !ruby/object:Gem::Version
|
45
|
+
hash: 31
|
41
46
|
segments:
|
42
47
|
- 0
|
43
48
|
- 3
|
@@ -49,9 +54,11 @@ dependencies:
|
|
49
54
|
name: json
|
50
55
|
prerelease: false
|
51
56
|
requirement: &id003 !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
52
58
|
requirements:
|
53
59
|
- - ">="
|
54
60
|
- !ruby/object:Gem::Version
|
61
|
+
hash: 31
|
55
62
|
segments:
|
56
63
|
- 1
|
57
64
|
- 2
|
@@ -63,9 +70,11 @@ dependencies:
|
|
63
70
|
name: multipart-post
|
64
71
|
prerelease: false
|
65
72
|
requirement: &id004 !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
66
74
|
requirements:
|
67
75
|
- - ">="
|
68
76
|
- !ruby/object:Gem::Version
|
77
|
+
hash: 15
|
69
78
|
segments:
|
70
79
|
- 1
|
71
80
|
- 0
|
@@ -79,16 +88,17 @@ executables: []
|
|
79
88
|
extensions: []
|
80
89
|
|
81
90
|
extra_rdoc_files:
|
91
|
+
- ChangeLog
|
82
92
|
- LICENSE
|
83
93
|
- README.rdoc
|
84
94
|
files:
|
85
95
|
- .document
|
86
96
|
- .gitignore
|
97
|
+
- ChangeLog
|
87
98
|
- LICENSE
|
88
99
|
- README.rdoc
|
89
100
|
- Rakefile
|
90
101
|
- VERSION
|
91
|
-
- dropbox.gemspec
|
92
102
|
- lib/dropbox.rb
|
93
103
|
- lib/dropbox/api.rb
|
94
104
|
- lib/dropbox/entry.rb
|
@@ -102,6 +112,7 @@ files:
|
|
102
112
|
- lib/extensions/object.rb
|
103
113
|
- lib/extensions/string.rb
|
104
114
|
- lib/extensions/to_bool.rb
|
115
|
+
- rdropbox.gemspec
|
105
116
|
- spec/dropbox/api_spec.rb
|
106
117
|
- spec/dropbox/entry_spec.rb
|
107
118
|
- spec/dropbox/event_spec.rb
|
@@ -120,23 +131,27 @@ rdoc_options:
|
|
120
131
|
require_paths:
|
121
132
|
- lib
|
122
133
|
required_ruby_version: !ruby/object:Gem::Requirement
|
134
|
+
none: false
|
123
135
|
requirements:
|
124
136
|
- - ">="
|
125
137
|
- !ruby/object:Gem::Version
|
138
|
+
hash: 3
|
126
139
|
segments:
|
127
140
|
- 0
|
128
141
|
version: "0"
|
129
142
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
143
|
+
none: false
|
130
144
|
requirements:
|
131
145
|
- - ">="
|
132
146
|
- !ruby/object:Gem::Version
|
147
|
+
hash: 3
|
133
148
|
segments:
|
134
149
|
- 0
|
135
150
|
version: "0"
|
136
151
|
requirements: []
|
137
152
|
|
138
|
-
rubyforge_project:
|
139
|
-
rubygems_version: 1.3.
|
153
|
+
rubyforge_project:
|
154
|
+
rubygems_version: 1.3.7
|
140
155
|
signing_key:
|
141
156
|
specification_version: 3
|
142
157
|
summary: Ruby client library for the official Dropbox API
|