slipsquare 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +11 -0
- data/.travis.yml +9 -0
- data/CHANGELOG.md +21 -0
- data/CONTRIBUTING.md +28 -0
- data/Gemfile +4 -0
- data/LICENSE.md +22 -0
- data/README.md +93 -0
- data/Rakefile +6 -0
- data/bin/slipsquare +7 -0
- data/lib/slipsquare.rb +6 -0
- data/lib/slipsquare/cli.rb +105 -0
- data/lib/slipsquare/config.rb +67 -0
- data/lib/slipsquare/middleware.rb +106 -0
- data/lib/slipsquare/middleware/account.rb +14 -0
- data/lib/slipsquare/middleware/ask_for_credentials.rb +39 -0
- data/lib/slipsquare/middleware/base.rb +28 -0
- data/lib/slipsquare/middleware/check_configuration.rb +18 -0
- data/lib/slipsquare/middleware/check_credentials.rb +27 -0
- data/lib/slipsquare/middleware/chunked_upload.rb +29 -0
- data/lib/slipsquare/middleware/delete_file.rb +13 -0
- data/lib/slipsquare/middleware/download_file.rb +25 -0
- data/lib/slipsquare/middleware/inject_client.rb +27 -0
- data/lib/slipsquare/middleware/inject_configuration.rb +15 -0
- data/lib/slipsquare/middleware/list_files.rb +19 -0
- data/lib/slipsquare/middleware/make_directory.rb +25 -0
- data/lib/slipsquare/middleware/upload_file.rb +17 -0
- data/lib/slipsquare/version.rb +3 -0
- data/slipsquare.gemspec +34 -0
- data/spec/cli/account.rb +24 -0
- data/spec/cli/authorize_spec.rb +46 -0
- data/spec/cli/chunked_upload_spec.rb +39 -0
- data/spec/cli/delete_file.rb +23 -0
- data/spec/cli/download_file.rb +43 -0
- data/spec/cli/get_keys_spec.rb +30 -0
- data/spec/cli/help_cli_spec.rb +17 -0
- data/spec/cli/ls_spec.rb +36 -0
- data/spec/cli/mkdir_spec.rb +52 -0
- data/spec/cli/upload_file.rb +33 -0
- data/spec/cli/verify_spec.rb +33 -0
- data/spec/cli/version_cli_spec.rb +16 -0
- data/spec/config_spec.rb +70 -0
- data/spec/fixtures/account.json +11 -0
- data/spec/fixtures/chunked_upload.json +5 -0
- data/spec/fixtures/commit_chunked_upload.json +13 -0
- data/spec/fixtures/find_foo_directory.json +15 -0
- data/spec/fixtures/ls_path_success.json +29 -0
- data/spec/fixtures/ls_success.json +14 -0
- data/spec/fixtures/mkdir_success.json +12 -0
- data/spec/fixtures/mkdir_success_multiple_path.json +12 -0
- data/spec/fixtures/upload_success.json +13 -0
- data/spec/fixtures/verify_success.json +14 -0
- data/spec/middleware/base_spec.rb +15 -0
- data/spec/middleware/check_configuration_spec.rb +16 -0
- data/spec/middleware/inject_configuration_spec.rb +16 -0
- data/spec/shared/environment.rb +49 -0
- data/spec/spec_helper.rb +20 -0
- data/tmp/.gitkeep +0 -0
- metadata +270 -0
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Slipsquare::CLI do
|
4
|
+
include_context "spec"
|
5
|
+
|
6
|
+
describe "delete" do
|
7
|
+
it "deletes a folder" do
|
8
|
+
|
9
|
+
stub_request(:get, "https://api.dropbox.com/1/metadata/dropbox/foo?").
|
10
|
+
with(:headers => {'Accept'=>'*/*', 'Authorization'=>/OAuth oauth_consumer_key="#{app_key}", oauth_nonce="\S+", oauth_signature="\S+", oauth_signature_method="HMAC-SHA1", oauth_timestamp="\S+", oauth_token="#{app_token}", oauth_version="1.0"/, 'User-Agent'=>'OAuth gem v0.4.7'}).
|
11
|
+
to_return(:status => 200, :body => fixture('find_foo_directory'))
|
12
|
+
|
13
|
+
@cli.delete('foo')
|
14
|
+
expect($stdout.string).to eq <<-eos
|
15
|
+
Deleting file on Dropbox...
|
16
|
+
To be implemented...
|
17
|
+
eos
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Slipsquare::CLI do
|
4
|
+
include_context "spec"
|
5
|
+
|
6
|
+
after :each do
|
7
|
+
File.delete("otacon.txt") if File.exist?("otacon.txt")
|
8
|
+
end
|
9
|
+
|
10
|
+
describe "download" do
|
11
|
+
|
12
|
+
it "downloads a simple text file" do
|
13
|
+
|
14
|
+
stub_request(:get, "https://api-content.dropbox.com/1/files/dropbox/otacon.txt?").
|
15
|
+
with(:headers => {'Accept'=>'*/*', 'Authorization'=>/OAuth oauth_consumer_key="#{app_key}", oauth_nonce="\S+", oauth_signature="\S+", oauth_signature_method="HMAC-SHA1", oauth_timestamp="\S+", oauth_token="#{app_token}", oauth_version="1.0"/, 'User-Agent'=>'OAuth gem v0.4.7'}).
|
16
|
+
to_return(:status => 200, :body => "Do you think love can bloom even on a battlefield?")
|
17
|
+
|
18
|
+
@cli.download('otacon.txt')
|
19
|
+
expect($stdout.string).to eq <<-eos
|
20
|
+
Download file...
|
21
|
+
File 'otacon.txt' downloaded successfully!
|
22
|
+
eos
|
23
|
+
|
24
|
+
File.read("otacon.txt").should eql "Do you think love can bloom even on a battlefield?"
|
25
|
+
end
|
26
|
+
|
27
|
+
it "outputs a message if file not found" do
|
28
|
+
|
29
|
+
stub_request(:get, "https://api-content.dropbox.com/1/files/dropbox/ghost.txt?").
|
30
|
+
with(:headers => {'Accept'=>'*/*', 'Authorization'=>/OAuth oauth_consumer_key="#{app_key}", oauth_nonce="\S+", oauth_signature="\S+", oauth_signature_method="HMAC-SHA1", oauth_timestamp="\S+", oauth_token="#{app_token}", oauth_version="1.0"/, 'User-Agent'=>'OAuth gem v0.4.7'}).
|
31
|
+
to_return(:status => 404)
|
32
|
+
|
33
|
+
expect { @cli.download('ghost.txt') }.to raise_error(SystemExit)
|
34
|
+
expect($stdout.string).to eq <<-eos
|
35
|
+
Download file...
|
36
|
+
File Not Found! Could not download
|
37
|
+
eos
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
43
|
+
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Slipsquare::CLI do
|
4
|
+
include_context "spec"
|
5
|
+
|
6
|
+
describe "get-keys" do
|
7
|
+
|
8
|
+
before(:each) do
|
9
|
+
Time.stub!(:now).and_return('123456')
|
10
|
+
end
|
11
|
+
|
12
|
+
it "shows the keys helper text" do
|
13
|
+
|
14
|
+
@cli.options = @cli.options.merge(:get_keys => true)
|
15
|
+
@cli.get_keys
|
16
|
+
|
17
|
+
expect($stdout.string).to eq <<-eos
|
18
|
+
Please open this URL from your Browser, and login: https://www2.dropbox.com/developers/apps
|
19
|
+
Click \"Create app\" button, and choose the following options:
|
20
|
+
Type: Dropbox API app
|
21
|
+
Data: Files and Datastores
|
22
|
+
Permission type: Full Dropbox
|
23
|
+
File Types: All file types
|
24
|
+
App name: Slipsquare123456
|
25
|
+
Cick on the \"Create\" button, and note down the 'app key' and 'app secret'
|
26
|
+
eos
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Slipsquare::CLI do
|
4
|
+
include_context "spec"
|
5
|
+
|
6
|
+
describe "help" do
|
7
|
+
it "shows a help message" do
|
8
|
+
@cli.help
|
9
|
+
expect($stdout.string).to match("Commands:")
|
10
|
+
end
|
11
|
+
|
12
|
+
it "shows a help message for specific commands" do
|
13
|
+
@cli.help "authorize"
|
14
|
+
expect($stdout.string).to match("Usage:")
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
data/spec/cli/ls_spec.rb
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Slipsquare::CLI do
|
4
|
+
include_context "spec"
|
5
|
+
|
6
|
+
describe "ls called with no path" do
|
7
|
+
it "returns confirmation text when verify passes" do
|
8
|
+
stub_request(:get, "https://api.dropbox.com/1/metadata/dropbox/?").
|
9
|
+
with(:headers => {'Accept'=>'*/*', 'Authorization'=> /OAuth oauth_consumer_key="#{app_key}", oauth_nonce="\S+", oauth_signature="\S+", oauth_signature_method="HMAC-SHA1", oauth_timestamp="\S+", oauth_token="#{app_token}", oauth_version="1.0"/, 'User-Agent'=>'OAuth gem v0.4.7'}).
|
10
|
+
to_return(:status => 200, :body => fixture("ls_success"))
|
11
|
+
@cli.ls
|
12
|
+
expect($stdout.string).to eq <<-eos
|
13
|
+
Listing files from Dropbox...
|
14
|
+
PATH | MIME_TYPE | SIZE
|
15
|
+
------------------------------------------------
|
16
|
+
/Getting_Started.pdf | application/pdf | 225.4KB
|
17
|
+
eos
|
18
|
+
end
|
19
|
+
|
20
|
+
it "ls called with basic path" do
|
21
|
+
stub_request(:get, "https://api.dropbox.com/1/metadata/dropbox/awesome?").
|
22
|
+
with(:headers => {'Accept'=>'*/*', 'Authorization'=> /OAuth oauth_consumer_key="#{app_key}", oauth_nonce="\S+", oauth_signature="\S+", oauth_signature_method="HMAC-SHA1", oauth_timestamp="\S+", oauth_token="#{app_token}", oauth_version="1.0"/, 'User-Agent'=>'OAuth gem v0.4.7'}).
|
23
|
+
to_return(:status => 200, :body => fixture("ls_path_success"))
|
24
|
+
@cli.ls('awesome')
|
25
|
+
expect($stdout.string).to eq <<-eos
|
26
|
+
Listing files from Dropbox...
|
27
|
+
PATH | MIME_TYPE | SIZE
|
28
|
+
------------------------------------------
|
29
|
+
/Awesome/latest.txt | text/plain | 0 bytes
|
30
|
+
eos
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
|
@@ -0,0 +1,52 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Slipsquare::CLI do
|
4
|
+
include_context "spec"
|
5
|
+
|
6
|
+
describe "mkdir" do
|
7
|
+
it "creates the folder" do
|
8
|
+
stub_request(:post, "https://api.dropbox.com/1/fileops/create_folder").
|
9
|
+
with(
|
10
|
+
:body => {"path"=>"new_folder", "root"=>"dropbox"},
|
11
|
+
:headers => {'Accept'=>'*/*', 'Authorization'=> /OAuth oauth_consumer_key="#{app_key}", oauth_nonce="\S+", oauth_signature="\S+", oauth_signature_method="HMAC-SHA1", oauth_timestamp="\S+", oauth_token="#{app_token}", oauth_version="1.0"/, 'Content-Length'=>'0', 'Content-Type'=>'application/x-www-form-urlencoded', 'User-Agent'=>'OAuth gem v0.4.7'}).
|
12
|
+
to_return(:status => 200, :body => fixture("mkdir_success"))
|
13
|
+
@cli.mkdir('new_folder')
|
14
|
+
expect($stdout.string).to eq <<-eos
|
15
|
+
Creating directory on Dropbox...
|
16
|
+
Directory `new_folder` created successfully
|
17
|
+
eos
|
18
|
+
end
|
19
|
+
|
20
|
+
it "creates the folder within a folder" do
|
21
|
+
stub_request(:post, "https://api.dropbox.com/1/fileops/create_folder").
|
22
|
+
with(
|
23
|
+
:body => {"path"=>"/qux/foo/bar", "root"=>"dropbox"},
|
24
|
+
:headers => {'Accept'=>'*/*', 'Authorization'=> /OAuth oauth_consumer_key="#{app_key}", oauth_nonce="\S+", oauth_signature="\S+", oauth_signature_method="HMAC-SHA1", oauth_timestamp="\S+", oauth_token="#{app_token}", oauth_version="1.0"/, 'Content-Length'=>'0', 'Content-Type'=>'application/x-www-form-urlencoded', 'User-Agent'=>'OAuth gem v0.4.7'}).
|
25
|
+
to_return(:status => 200, :body => fixture("mkdir_success"))
|
26
|
+
@cli.mkdir('/qux/foo/bar')
|
27
|
+
expect($stdout.string).to eq <<-eos
|
28
|
+
Creating directory on Dropbox...
|
29
|
+
Directory `/qux/foo/bar` created successfully
|
30
|
+
eos
|
31
|
+
end
|
32
|
+
|
33
|
+
it "still creates folders with illegal characters" do
|
34
|
+
stub_request(:post, "https://api.dropbox.com/1/fileops/create_folder").
|
35
|
+
with(
|
36
|
+
:body => {"path"=>"new_folder", "root"=>"dropbox"},
|
37
|
+
:headers => {'Accept'=>'*/*', 'Authorization'=> /OAuth oauth_consumer_key="#{app_key}", oauth_nonce="\S+", oauth_signature="\S+", oauth_signature_method="HMAC-SHA1", oauth_timestamp="\S+", oauth_token="#{app_token}", oauth_version="1.0"/, 'Content-Length'=>'0', 'Content-Type'=>'application/x-www-form-urlencoded', 'User-Agent'=>'OAuth gem v0.4.7'}).
|
38
|
+
to_return(:status => 200, :body => fixture("mkdir_success"))
|
39
|
+
@cli.mkdir('\\\:\?\*\new_folder<\>\"\|')
|
40
|
+
expect($stdout.string).to eq <<-eos
|
41
|
+
Creating directory on Dropbox...
|
42
|
+
Illegal character found! Escaping...
|
43
|
+
Escaped directory path: new_folder
|
44
|
+
Directory `new_folder` created successfully
|
45
|
+
eos
|
46
|
+
end
|
47
|
+
|
48
|
+
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
52
|
+
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Slipsquare::CLI do
|
4
|
+
include_context "spec"
|
5
|
+
|
6
|
+
before :each do
|
7
|
+
File.open("foo.txt", 'w') {|f| f.write("Laugh and grow fat...") }
|
8
|
+
end
|
9
|
+
|
10
|
+
after :each do
|
11
|
+
File.delete("foo.txt") if File.exist?("foo.txt")
|
12
|
+
end
|
13
|
+
|
14
|
+
describe "upload" do
|
15
|
+
|
16
|
+
it "uploads a simple text file" do
|
17
|
+
|
18
|
+
stub_request(:put, "https://api-content.dropbox.com/1/files_put/dropbox/foo.txt?").
|
19
|
+
with(:body => "Laugh and grow fat...",
|
20
|
+
:headers => {'Accept'=>'*/*', 'Authorization'=>/OAuth oauth_body_hash="\S+", oauth_consumer_key="#{app_key}", oauth_nonce="\S+", oauth_signature="\S+", oauth_signature_method="HMAC-SHA1", oauth_timestamp="\S+", oauth_token="#{app_token}", oauth_version="1.0"/, 'Content-Length'=>'21', 'Content-Type'=>'application/octet-stream', 'User-Agent'=>'OAuth gem v0.4.7'}).
|
21
|
+
to_return(:status => 200, :body => fixture('upload_success'))
|
22
|
+
|
23
|
+
@cli.upload('foo.txt')
|
24
|
+
expect($stdout.string).to eq <<-eos
|
25
|
+
Uploading file...
|
26
|
+
File 'foo.txt' uploaded successfully
|
27
|
+
eos
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Slipsquare::CLI do
|
4
|
+
include_context "spec"
|
5
|
+
|
6
|
+
describe "verify" do
|
7
|
+
it "returns confirmation text when verify passes" do
|
8
|
+
stub_request(:get, "https://api.dropbox.com/1/metadata/dropbox/?").
|
9
|
+
with(:headers => {'Accept'=>'*/*', 'Authorization'=> /OAuth oauth_consumer_key="#{app_key}", oauth_nonce="\S+", oauth_signature="\S+", oauth_signature_method="HMAC-SHA1", oauth_timestamp="\S+", oauth_token="#{app_token}", oauth_version="1.0"/, 'User-Agent'=>'OAuth gem v0.4.7'}).
|
10
|
+
to_return(:status => 200, :body => fixture("verify_success"))
|
11
|
+
@cli.verify
|
12
|
+
expect($stdout.string).to eq <<-eos
|
13
|
+
Checking credentials with Dropbox...
|
14
|
+
Connection to dropbox successful!
|
15
|
+
eos
|
16
|
+
end
|
17
|
+
|
18
|
+
it "returns error string when verify fails" do
|
19
|
+
stub_request(:get, "https://api.dropbox.com/1/metadata/dropbox/?").
|
20
|
+
with(:headers => {'Accept'=>'*/*', 'Authorization'=> /OAuth oauth_consumer_key="#{app_key}", oauth_nonce="\S+", oauth_signature="\S+", oauth_signature_method="HMAC-SHA1", oauth_timestamp="\S+", oauth_token="#{app_token}", oauth_version="1.0"/, 'User-Agent'=>'OAuth gem v0.4.7'}).
|
21
|
+
to_return(:status => 401, :body => "", :headers => {})
|
22
|
+
expect { @cli.verify }.to raise_error(SystemExit)
|
23
|
+
expect($stdout.string).to eq <<-eos
|
24
|
+
Checking credentials with Dropbox...
|
25
|
+
Connection to Dropbox failed (401 - Bad or expired token)
|
26
|
+
Check your .slipsquare file, and double check your credentials are correct
|
27
|
+
eos
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Slipsquare::CLI do
|
4
|
+
include_context "spec"
|
5
|
+
|
6
|
+
describe "version" do
|
7
|
+
it "shows the correct version" do
|
8
|
+
|
9
|
+
@cli.options = @cli.options.merge(:version => true)
|
10
|
+
@cli.version
|
11
|
+
|
12
|
+
expect($stdout.string.chomp).to eq("Slipsquare #{Slipsquare::VERSION.to_s}")
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
data/spec/config_spec.rb
ADDED
@@ -0,0 +1,70 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Slipsquare::Configuration do
|
4
|
+
include_context "spec"
|
5
|
+
|
6
|
+
let(:tmp_path) { project_path + "/tmp/slipsquare" }
|
7
|
+
|
8
|
+
after :each do
|
9
|
+
# Clean up the temp file.
|
10
|
+
File.delete(project_path + "/tmp/slipsquare") if File.exist?(project_path + "/tmp/slipsquare")
|
11
|
+
end
|
12
|
+
|
13
|
+
it "is a singleton" do
|
14
|
+
expect(Slipsquare::Configuration).to be_a Class
|
15
|
+
expect do
|
16
|
+
Slipsquare::Configuration.new
|
17
|
+
end.to raise_error(NoMethodError, /private method `new' called/)
|
18
|
+
end
|
19
|
+
|
20
|
+
it "has a data attribute" do
|
21
|
+
config = Slipsquare::Configuration.instance
|
22
|
+
expect(config.data).to be
|
23
|
+
end
|
24
|
+
|
25
|
+
describe "the file" do
|
26
|
+
let(:app_key) { "foo" }
|
27
|
+
let(:secret_key) { "bar" }
|
28
|
+
let(:app_token) { "baz" }
|
29
|
+
let(:app_secret) { "blegga" }
|
30
|
+
|
31
|
+
let(:config) { config = Slipsquare::Configuration.instance }
|
32
|
+
|
33
|
+
before :each do
|
34
|
+
# Create a temporary file
|
35
|
+
config.create_config_file(app_key, secret_key, app_token, app_secret)
|
36
|
+
end
|
37
|
+
|
38
|
+
it "can be created" do
|
39
|
+
expect(File.exist?(tmp_path)).to be_true
|
40
|
+
end
|
41
|
+
|
42
|
+
it "can be loaded" do
|
43
|
+
data = config.load_config_file
|
44
|
+
expect(data).to_not be_nil
|
45
|
+
end
|
46
|
+
|
47
|
+
describe "the file format"
|
48
|
+
let(:data) { YAML.load_file(tmp_path) }
|
49
|
+
|
50
|
+
it "should have an app key" do
|
51
|
+
auth = data["authentication"]
|
52
|
+
expect(auth).to have_key("app_key")
|
53
|
+
end
|
54
|
+
|
55
|
+
it "should have a secret key" do
|
56
|
+
auth = data["authentication"]
|
57
|
+
expect(auth).to have_key("secret_key")
|
58
|
+
end
|
59
|
+
|
60
|
+
it "should have an app token" do
|
61
|
+
client = data["client"]
|
62
|
+
expect(client).to have_key("app_token")
|
63
|
+
end
|
64
|
+
|
65
|
+
it "should have an app secret" do
|
66
|
+
client = data["client"]
|
67
|
+
expect(client).to have_key("app_secret")
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
{
|
2
|
+
"size": "225.4KB",
|
3
|
+
"rev": "35e97029684fe",
|
4
|
+
"thumb_exists": false,
|
5
|
+
"bytes": 230783,
|
6
|
+
"modified": "Tue, 19 Jul 2011 21:55:38 +0000",
|
7
|
+
"path": "/foo.txt",
|
8
|
+
"is_dir": false,
|
9
|
+
"icon": "page_white_acrobat",
|
10
|
+
"root": "dropbox",
|
11
|
+
"mime_type": "application/pdf",
|
12
|
+
"revision": 220823
|
13
|
+
}
|
@@ -0,0 +1,15 @@
|
|
1
|
+
[
|
2
|
+
{
|
3
|
+
"size": "0 bytes",
|
4
|
+
"rev": "35c1f029684fe",
|
5
|
+
"thumb_exists": false,
|
6
|
+
"bytes": 0,
|
7
|
+
"modified": "Mon, 18 Jul 2011 20:13:43 +0000",
|
8
|
+
"path": "/Foo/",
|
9
|
+
"is_dir": false,
|
10
|
+
"icon": "page_white_text",
|
11
|
+
"root": "dropbox",
|
12
|
+
"mime_type": "text/plain",
|
13
|
+
"revision": 220191
|
14
|
+
}
|
15
|
+
]
|
@@ -0,0 +1,29 @@
|
|
1
|
+
{
|
2
|
+
"size": "0 bytes",
|
3
|
+
"hash": "37eb1ba1849d4b0fb0b28caf7ef3af52",
|
4
|
+
"bytes": 0,
|
5
|
+
"thumb_exists": false,
|
6
|
+
"rev": "714f029684fe",
|
7
|
+
"modified": "Wed, 27 Apr 2011 22:18:51 +0000",
|
8
|
+
"path": "/Awesome",
|
9
|
+
"is_dir": true,
|
10
|
+
"icon": "folder_public",
|
11
|
+
"root": "dropbox",
|
12
|
+
"contents": [
|
13
|
+
{
|
14
|
+
"size": "0 bytes",
|
15
|
+
"rev": "35c1f029684fe",
|
16
|
+
"thumb_exists": false,
|
17
|
+
"bytes": 0,
|
18
|
+
"modified": "Mon, 18 Jul 2011 20:13:43 +0000",
|
19
|
+
"client_mtime": "Wed, 20 Apr 2011 16:20:19 +0000",
|
20
|
+
"path": "/Awesome/latest.txt",
|
21
|
+
"is_dir": false,
|
22
|
+
"icon": "page_white_text",
|
23
|
+
"root": "dropbox",
|
24
|
+
"mime_type": "text/plain",
|
25
|
+
"revision": 220191
|
26
|
+
}
|
27
|
+
],
|
28
|
+
"revision": 29007
|
29
|
+
}
|