my_bitcasa 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +18 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +29 -0
- data/Rakefile +1 -0
- data/example/delete.rb +17 -0
- data/example/directory.rb +15 -0
- data/example/download_photo_legacy_thumbs.rb +27 -0
- data/example/download_photo_thumbs.rb +27 -0
- data/example/download_photos.rb +27 -0
- data/example/list.rb +15 -0
- data/example/login.rb +15 -0
- data/example/mkdir.rb +15 -0
- data/example/recursive_directory.rb +27 -0
- data/example/rename.rb +19 -0
- data/example/setting.yml.example +2 -0
- data/example/share.rb +19 -0
- data/example/upload.rb +18 -0
- data/example/zip_download_photos.rb +26 -0
- data/lib/my_bitcasa/api_error.rb +6 -0
- data/lib/my_bitcasa/authorization_error.rb +6 -0
- data/lib/my_bitcasa/bitcasa_base.rb +11 -0
- data/lib/my_bitcasa/bitcasa_drive.rb +15 -0
- data/lib/my_bitcasa/bitcasa_file.rb +61 -0
- data/lib/my_bitcasa/bitcasa_folder.rb +46 -0
- data/lib/my_bitcasa/bitcasa_item.rb +38 -0
- data/lib/my_bitcasa/bitcasa_share.rb +13 -0
- data/lib/my_bitcasa/connection.rb +102 -0
- data/lib/my_bitcasa/connection_error.rb +6 -0
- data/lib/my_bitcasa/connection_finalizer.rb +12 -0
- data/lib/my_bitcasa/connection_pool.rb +26 -0
- data/lib/my_bitcasa/data_accessor.rb +31 -0
- data/lib/my_bitcasa/delete.rb +26 -0
- data/lib/my_bitcasa/directory.rb +59 -0
- data/lib/my_bitcasa/download.rb +105 -0
- data/lib/my_bitcasa/downloadable.rb +60 -0
- data/lib/my_bitcasa/error.rb +4 -0
- data/lib/my_bitcasa/legacy_thumbnail.rb +33 -0
- data/lib/my_bitcasa/list.rb +71 -0
- data/lib/my_bitcasa/login_engine/phantomjs.rb +29 -0
- data/lib/my_bitcasa/login_engine/phantomjs_login.js +58 -0
- data/lib/my_bitcasa/login_engine/pure.rb +47 -0
- data/lib/my_bitcasa/login_engine/selenium.rb +87 -0
- data/lib/my_bitcasa/login_engine.rb +15 -0
- data/lib/my_bitcasa/mkdir.rb +26 -0
- data/lib/my_bitcasa/profile.rb +39 -0
- data/lib/my_bitcasa/rename.rb +24 -0
- data/lib/my_bitcasa/response_format_error.rb +6 -0
- data/lib/my_bitcasa/response_middleware.rb +39 -0
- data/lib/my_bitcasa/share.rb +30 -0
- data/lib/my_bitcasa/thumbnail.rb +33 -0
- data/lib/my_bitcasa/upload.rb +42 -0
- data/lib/my_bitcasa/version.rb +3 -0
- data/lib/my_bitcasa/zip_download.rb +21 -0
- data/lib/my_bitcasa.rb +38 -0
- data/my_bitcasa.gemspec +28 -0
- metadata +198 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: b30b86157aaa37b3c027b5102a0c4fe273f867ff
|
4
|
+
data.tar.gz: 03de3c75b415c1103a7463c992a0a814a97ac710
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: aab4e288e5dedad85236e5d8a4069dc7710c2e254dfc881b95518ef3179f730543d7a4ecd5608c620f18dfe13b6aadba24655b6566568315997242df65adef2a
|
7
|
+
data.tar.gz: f292f2898a7265b084e4ec4eca609d604362d46768a3714cb2ec16295a58512f1fcea5a0e84d67839d7173cf0c51bde9cebbc70466c3690b6ab7c7974728a778
|
data/.gitignore
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2013 yoshida
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
# MyBitcasa
|
2
|
+
|
3
|
+
MyBitcasa is an unofficial Bitcasa SDK.
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Add this line to your application's Gemfile:
|
8
|
+
|
9
|
+
gem 'my_bitcasa'
|
10
|
+
|
11
|
+
And then execute:
|
12
|
+
|
13
|
+
$ bundle
|
14
|
+
|
15
|
+
Or install it yourself as:
|
16
|
+
|
17
|
+
$ gem install my_bitcasa
|
18
|
+
|
19
|
+
## Example
|
20
|
+
|
21
|
+
https://github.com/yoshida-eth0/ruby-my_bitcasa/tree/master/example
|
22
|
+
|
23
|
+
## Contributing
|
24
|
+
|
25
|
+
1. Fork it
|
26
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
27
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
28
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
29
|
+
5. Create new Pull Request
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
data/example/delete.rb
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
$LOAD_PATH << File.expand_path("../lib", File.dirname(__FILE__))
|
2
|
+
|
3
|
+
require 'my_bitcasa'
|
4
|
+
require 'yaml'
|
5
|
+
require 'pp'
|
6
|
+
|
7
|
+
setting = YAML.load_file(File.expand_path("setting.yml", File.dirname(__FILE__)))
|
8
|
+
MyBitcasa.establish_connection(setting.symbolize_keys)
|
9
|
+
|
10
|
+
drive = MyBitcasa::Directory.new("/").select{|item| item.drive?}.first
|
11
|
+
|
12
|
+
drive.each do |item|
|
13
|
+
if item.name.match(/^my_bitcasa_example_/)
|
14
|
+
puts "delete: #{item.name}"
|
15
|
+
item.delete
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
$LOAD_PATH << File.expand_path("../lib", File.dirname(__FILE__))
|
2
|
+
|
3
|
+
require 'my_bitcasa'
|
4
|
+
require 'yaml'
|
5
|
+
require 'pp'
|
6
|
+
|
7
|
+
setting = YAML.load_file(File.expand_path("setting.yml", File.dirname(__FILE__)))
|
8
|
+
MyBitcasa.establish_connection(setting.symbolize_keys)
|
9
|
+
|
10
|
+
puts "====="
|
11
|
+
puts "Root file list"
|
12
|
+
puts "====="
|
13
|
+
MyBitcasa::Direcoty.new("/").each do |item|
|
14
|
+
pp item
|
15
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
$LOAD_PATH << File.expand_path("../lib", File.dirname(__FILE__))
|
2
|
+
|
3
|
+
require 'my_bitcasa'
|
4
|
+
require 'yaml'
|
5
|
+
require 'pp'
|
6
|
+
|
7
|
+
setting = YAML.load_file(File.expand_path("setting.yml", File.dirname(__FILE__)))
|
8
|
+
MyBitcasa.establish_connection(setting.symbolize_keys)
|
9
|
+
|
10
|
+
def recursive(path, remainder, &block)
|
11
|
+
MyBitcasa::Directory.new(path).each do |item|
|
12
|
+
if item.folder?
|
13
|
+
recursive(item.path, remainder-1, &block) if 0<remainder
|
14
|
+
else
|
15
|
+
yield item
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
recursive("/", 1) do |item|
|
21
|
+
if item.category=="photos"
|
22
|
+
puts "name: #{item.name}"
|
23
|
+
puts "path: #{item.path}"
|
24
|
+
puts "saved: " + item.legacy_thumbnail.save("./")
|
25
|
+
puts "-----"
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
$LOAD_PATH << File.expand_path("../lib", File.dirname(__FILE__))
|
2
|
+
|
3
|
+
require 'my_bitcasa'
|
4
|
+
require 'yaml'
|
5
|
+
require 'pp'
|
6
|
+
|
7
|
+
setting = YAML.load_file(File.expand_path("setting.yml", File.dirname(__FILE__)))
|
8
|
+
MyBitcasa.establish_connection(setting.symbolize_keys)
|
9
|
+
|
10
|
+
def recursive(path, remainder, &block)
|
11
|
+
MyBitcasa::Directory.new(path).each do |item|
|
12
|
+
if item.folder?
|
13
|
+
recursive(item.path, remainder-1, &block) if 0<remainder
|
14
|
+
else
|
15
|
+
yield item
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
recursive("/", 1) do |item|
|
21
|
+
if item.category=="photos"
|
22
|
+
puts "name: #{item.name}"
|
23
|
+
puts "path: #{item.path}"
|
24
|
+
puts "saved: " + item.thumbnail.save("./")
|
25
|
+
puts "-----"
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
$LOAD_PATH << File.expand_path("../lib", File.dirname(__FILE__))
|
2
|
+
|
3
|
+
require 'my_bitcasa'
|
4
|
+
require 'yaml'
|
5
|
+
require 'pp'
|
6
|
+
|
7
|
+
setting = YAML.load_file(File.expand_path("setting.yml", File.dirname(__FILE__)))
|
8
|
+
MyBitcasa.establish_connection(setting.symbolize_keys)
|
9
|
+
|
10
|
+
def recursive(path, remainder, &block)
|
11
|
+
MyBitcasa::Download.new(path).each do |item|
|
12
|
+
if item.folder?
|
13
|
+
recursive(item.path, remainder-1, &block) if 0<remainder
|
14
|
+
else
|
15
|
+
yield item
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
recursive("/", 1) do |item|
|
21
|
+
if item.category=="photos"
|
22
|
+
puts "name: #{item.name}"
|
23
|
+
puts "path: #{item.path}"
|
24
|
+
puts "saved: " + item.save("./")
|
25
|
+
puts "-----"
|
26
|
+
end
|
27
|
+
end
|
data/example/list.rb
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
$LOAD_PATH << File.expand_path("../lib", File.dirname(__FILE__))
|
2
|
+
|
3
|
+
require 'my_bitcasa'
|
4
|
+
require 'yaml'
|
5
|
+
require 'pp'
|
6
|
+
|
7
|
+
setting = YAML.load_file(File.expand_path("setting.yml", File.dirname(__FILE__)))
|
8
|
+
MyBitcasa.establish_connection(setting.symbolize_keys)
|
9
|
+
|
10
|
+
MyBitcasa::List.new(search: "my_bitcasa_example_").each do |item|
|
11
|
+
puts "category: #{item.category}"
|
12
|
+
puts "name: #{item.name}"
|
13
|
+
puts "path: #{item.path}"
|
14
|
+
puts "-----"
|
15
|
+
end
|
data/example/login.rb
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
$LOAD_PATH << File.expand_path("../lib", File.dirname(__FILE__))
|
2
|
+
|
3
|
+
require 'my_bitcasa'
|
4
|
+
require 'yaml'
|
5
|
+
require 'pp'
|
6
|
+
|
7
|
+
setting = YAML.load_file(File.expand_path("setting.yml", File.dirname(__FILE__)))
|
8
|
+
MyBitcasa.establish_connection(setting.symbolize_keys)
|
9
|
+
|
10
|
+
puts "====="
|
11
|
+
puts "Profile"
|
12
|
+
puts "====="
|
13
|
+
|
14
|
+
profile = MyBitcasa::Profile.new
|
15
|
+
pp profile
|
data/example/mkdir.rb
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
$LOAD_PATH << File.expand_path("../lib", File.dirname(__FILE__))
|
2
|
+
|
3
|
+
require 'my_bitcasa'
|
4
|
+
require 'yaml'
|
5
|
+
require 'pp'
|
6
|
+
|
7
|
+
setting = YAML.load_file(File.expand_path("setting.yml", File.dirname(__FILE__)))
|
8
|
+
MyBitcasa.establish_connection(setting.symbolize_keys)
|
9
|
+
|
10
|
+
drive = MyBitcasa::Directory.new("/").select{|item| item.drive?}.first
|
11
|
+
|
12
|
+
folder = drive.mkdir("my_bitcasa_example_mkdir")
|
13
|
+
puts "category: #{folder.category}"
|
14
|
+
puts "name: #{folder.name}"
|
15
|
+
puts "path: #{folder.path}"
|
@@ -0,0 +1,27 @@
|
|
1
|
+
$LOAD_PATH << File.expand_path("../lib", File.dirname(__FILE__))
|
2
|
+
|
3
|
+
require 'my_bitcasa'
|
4
|
+
require 'yaml'
|
5
|
+
require 'pp'
|
6
|
+
|
7
|
+
setting = YAML.load_file(File.expand_path("setting.yml", File.dirname(__FILE__)))
|
8
|
+
MyBitcasa.establish_connection(setting.symbolize_keys)
|
9
|
+
|
10
|
+
puts "====="
|
11
|
+
puts "file list"
|
12
|
+
puts "====="
|
13
|
+
|
14
|
+
def recursive_directory(path, remainder)
|
15
|
+
MyBitcasa::Directory.new(path).each do |item|
|
16
|
+
puts "category: #{item.category}"
|
17
|
+
puts "name: #{item.name}"
|
18
|
+
puts "path: #{item.path}"
|
19
|
+
puts "-----"
|
20
|
+
|
21
|
+
if item.folder? && 0<remainder
|
22
|
+
recursive_directory(item.path, remainder-1)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
recursive_directory("/", 1)
|
data/example/rename.rb
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
$LOAD_PATH << File.expand_path("../lib", File.dirname(__FILE__))
|
2
|
+
|
3
|
+
require 'my_bitcasa'
|
4
|
+
require 'yaml'
|
5
|
+
require 'pp'
|
6
|
+
|
7
|
+
setting = YAML.load_file(File.expand_path("setting.yml", File.dirname(__FILE__)))
|
8
|
+
MyBitcasa.establish_connection(setting.symbolize_keys)
|
9
|
+
|
10
|
+
drive = MyBitcasa::Directory.new("/").select{|item| item.drive?}.first
|
11
|
+
|
12
|
+
drive.each do |item|
|
13
|
+
if item.name.match(/^my_bitcasa_example_/)
|
14
|
+
puts "from: #{item.name}"
|
15
|
+
item.rename(item.name+"_rename")
|
16
|
+
puts "to: #{item.name}"
|
17
|
+
puts "-----"
|
18
|
+
end
|
19
|
+
end
|
data/example/share.rb
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
$LOAD_PATH << File.expand_path("../lib", File.dirname(__FILE__))
|
2
|
+
|
3
|
+
require 'my_bitcasa'
|
4
|
+
require 'yaml'
|
5
|
+
require 'pp'
|
6
|
+
|
7
|
+
setting = YAML.load_file(File.expand_path("setting.yml", File.dirname(__FILE__)))
|
8
|
+
MyBitcasa.establish_connection(setting.symbolize_keys)
|
9
|
+
|
10
|
+
drive = MyBitcasa::Directory.new("/").select{|item| item.drive?}.first
|
11
|
+
|
12
|
+
drive.each do |item|
|
13
|
+
if item.name.match(/^my_bitcasa_example_/)
|
14
|
+
puts "name: #{item.name}"
|
15
|
+
share = item.share
|
16
|
+
puts "share url: #{share.short_url}"
|
17
|
+
puts "-----"
|
18
|
+
end
|
19
|
+
end
|
data/example/upload.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
$LOAD_PATH << File.expand_path("../lib", File.dirname(__FILE__))
|
2
|
+
|
3
|
+
require 'my_bitcasa'
|
4
|
+
require 'yaml'
|
5
|
+
require 'pp'
|
6
|
+
|
7
|
+
setting = YAML.load_file(File.expand_path("setting.yml", File.dirname(__FILE__)))
|
8
|
+
MyBitcasa.establish_connection(setting.symbolize_keys)
|
9
|
+
|
10
|
+
drive = MyBitcasa::Directory.new("/").select{|item| item.drive?}.first
|
11
|
+
|
12
|
+
puts "src: #{__FILE__}"
|
13
|
+
puts "dest: #{drive.path}"
|
14
|
+
puts "-----"
|
15
|
+
|
16
|
+
file = drive.upload(__FILE__, filename: "my_bitcasa_example_upload.rb")
|
17
|
+
puts "name: #{file.name}"
|
18
|
+
puts "path: #{file.path}"
|
@@ -0,0 +1,26 @@
|
|
1
|
+
$LOAD_PATH << File.expand_path("../lib", File.dirname(__FILE__))
|
2
|
+
|
3
|
+
require 'my_bitcasa'
|
4
|
+
require 'yaml'
|
5
|
+
require 'pp'
|
6
|
+
|
7
|
+
setting = YAML.load_file(File.expand_path("setting.yml", File.dirname(__FILE__)))
|
8
|
+
MyBitcasa.establish_connection(setting.symbolize_keys)
|
9
|
+
|
10
|
+
def recursive(path, remainder, &block)
|
11
|
+
MyBitcasa::Directory.new(path).each do |item|
|
12
|
+
if item.folder?
|
13
|
+
recursive(item.path, remainder-1, &block) if 0<remainder
|
14
|
+
else
|
15
|
+
yield item
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
photo_paths = enum_for(:recursive).each("/", 1).select {|item|
|
21
|
+
item.category=="photos"
|
22
|
+
}.map {|item|
|
23
|
+
item.path
|
24
|
+
}
|
25
|
+
|
26
|
+
MyBitcasa::ZipDownload.new(photo_paths).save("./")
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'my_bitcasa/bitcasa_folder'
|
2
|
+
|
3
|
+
module MyBitcasa
|
4
|
+
class BitcasaDrive < BitcasaFolder
|
5
|
+
data_reader :mount_point
|
6
|
+
data_reader :deleted?
|
7
|
+
data_reader :mirrored?
|
8
|
+
data_reader :origin_device
|
9
|
+
data_reader :origin_device_id
|
10
|
+
data_reader :sync_type
|
11
|
+
|
12
|
+
undef_method :rename
|
13
|
+
undef_method :delete
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
require 'my_bitcasa/bitcasa_item'
|
2
|
+
require 'my_bitcasa/downloadable'
|
3
|
+
require 'my_bitcasa/thumbnail'
|
4
|
+
require 'my_bitcasa/legacy_thumbnail'
|
5
|
+
require 'my_bitcasa/rename'
|
6
|
+
require 'my_bitcasa/delete'
|
7
|
+
require 'my_bitcasa/share'
|
8
|
+
|
9
|
+
module MyBitcasa
|
10
|
+
class BitcasaFile < BitcasaItem
|
11
|
+
include Downloadable
|
12
|
+
|
13
|
+
data_reader :album
|
14
|
+
data_reader :extension
|
15
|
+
data_reader :artist
|
16
|
+
data_reader :duplicates
|
17
|
+
data_reader :manifest_name
|
18
|
+
data_reader :mime
|
19
|
+
data_reader :id
|
20
|
+
data_reader :incomplete?
|
21
|
+
data_reader :size
|
22
|
+
|
23
|
+
downloadable_path {
|
24
|
+
"/file/#{self.id}"
|
25
|
+
}
|
26
|
+
downloadable_params {{
|
27
|
+
size: self.size,
|
28
|
+
mime: self.mime,
|
29
|
+
}}
|
30
|
+
downloadable_basename {
|
31
|
+
self.name
|
32
|
+
}
|
33
|
+
|
34
|
+
def thumbnail(size=:small)
|
35
|
+
Thumbnail.new(self, size)
|
36
|
+
end
|
37
|
+
|
38
|
+
def legacy_thumbnail(size=:small)
|
39
|
+
LegacyThumbnail.new(self, size)
|
40
|
+
end
|
41
|
+
|
42
|
+
def rename(to_basename)
|
43
|
+
to_basename = File.basename(to_basename)
|
44
|
+
to = File.dirname(self.path) + "/" + to_basename
|
45
|
+
Rename.new(self.path, to).rename
|
46
|
+
@item["path"] = to
|
47
|
+
@item["name"] = to_basename
|
48
|
+
self
|
49
|
+
end
|
50
|
+
|
51
|
+
def delete
|
52
|
+
Delete.new(self.path).delete
|
53
|
+
@item["deleted"] = true
|
54
|
+
true
|
55
|
+
end
|
56
|
+
|
57
|
+
def share
|
58
|
+
Share.new(self.name, self.path).share
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
require 'my_bitcasa/bitcasa_item'
|
2
|
+
require 'my_bitcasa/directory'
|
3
|
+
require 'my_bitcasa/upload'
|
4
|
+
require 'my_bitcasa/mkdir'
|
5
|
+
require 'my_bitcasa/rename'
|
6
|
+
require 'my_bitcasa/delete'
|
7
|
+
require 'my_bitcasa/share'
|
8
|
+
|
9
|
+
module MyBitcasa
|
10
|
+
class BitcasaFolder < BitcasaItem
|
11
|
+
include Enumerable
|
12
|
+
|
13
|
+
def each(&block)
|
14
|
+
Directory.new(self.path).each(&block)
|
15
|
+
end
|
16
|
+
|
17
|
+
def upload(src_path, content_type: nil, filename: nil)
|
18
|
+
Upload.new(self.path).upload(src_path, content_type: content_type, filename: filename)
|
19
|
+
end
|
20
|
+
alias_method :<<, :upload
|
21
|
+
|
22
|
+
def mkdir(basename)
|
23
|
+
path = "#{self.path}/#{basename}"
|
24
|
+
Mkdir.new(path).mkdir
|
25
|
+
end
|
26
|
+
|
27
|
+
def rename(to_basename)
|
28
|
+
to_basename = File.basename(to_basename)
|
29
|
+
to = File.dirname(self.path) + "/" + to_basename
|
30
|
+
Rename.new(self.path, to).rename
|
31
|
+
@item["path"] = to
|
32
|
+
@item["name"] = to_basename
|
33
|
+
self
|
34
|
+
end
|
35
|
+
|
36
|
+
def delete
|
37
|
+
Delete.new(self.path).delete
|
38
|
+
@item["deleted"] = true
|
39
|
+
true
|
40
|
+
end
|
41
|
+
|
42
|
+
def share
|
43
|
+
Share.new(self.name, self.path).share
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'my_bitcasa/bitcasa_base'
|
2
|
+
|
3
|
+
module MyBitcasa
|
4
|
+
class BitcasaItem < BitcasaBase
|
5
|
+
data_reader :category
|
6
|
+
data_reader :name
|
7
|
+
data_reader :mirrored?
|
8
|
+
data_reader :mtime
|
9
|
+
data_reader :path
|
10
|
+
data_reader :type
|
11
|
+
|
12
|
+
def drive?
|
13
|
+
folder? && !!self.mount_point
|
14
|
+
end
|
15
|
+
|
16
|
+
def folder?
|
17
|
+
self.category=="folders"
|
18
|
+
end
|
19
|
+
|
20
|
+
def file?
|
21
|
+
!folder?
|
22
|
+
end
|
23
|
+
|
24
|
+
class << self
|
25
|
+
def create(item)
|
26
|
+
if item["category"]=="folders"
|
27
|
+
if item["mount_point"]
|
28
|
+
BitcasaDrive.new(item)
|
29
|
+
else
|
30
|
+
BitcasaFolder.new(item)
|
31
|
+
end
|
32
|
+
else
|
33
|
+
BitcasaFile.new(item)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|