baidupan 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -15,3 +15,4 @@ spec/reports
15
15
  test/tmp
16
16
  test/version_tmp
17
17
  tmp
18
+ .rvmrc
data/.rvmrc CHANGED
@@ -1 +1,2 @@
1
- rvm use ruby-2.0.0-p247@common
1
+ #rvm use ruby-2.0.0-p247@common
2
+ rvm use ruby-1.9.3-p448@common
@@ -3,6 +3,7 @@ require 'multi_json'
3
3
 
4
4
  require "baidupan/version"
5
5
  require "baidupan/config"
6
+ require "baidupan/core_ext"
6
7
 
7
8
  require 'pry'
8
9
 
@@ -10,7 +11,7 @@ module Baidupan
10
11
  PAN_BASE_URL = "https://pcs.baidu.com/rest/2.0/pcs"
11
12
 
12
13
  class Base
13
- attr_reader :body
14
+ attr_reader :body, :response
14
15
 
15
16
  def initialize(url, method=:get, params={}, body={}, opts={})
16
17
  @options = {
@@ -22,6 +23,7 @@ module Baidupan
22
23
  @options.merge!(opts)
23
24
  @request = Typhoeus::Request.new(url, @options)
24
25
  @request.on_complete do |response|
26
+ @response = response
25
27
  if response.success?
26
28
  if response.headers["Content-Disposition"] =~ /attachment;file/ or response.headers["Content-Type"] =~ /image\//
27
29
  @body = response.body
@@ -10,13 +10,12 @@ module Baidupan::Cmd
10
10
  def print_item(item)
11
11
  new_items = []
12
12
  new_items << item[:fs_id]
13
- new_items << "#{item[:path].sub(Baidupan::Config.app_root + '/', '')}"
13
+ new_items << "#{item[:path].sub(Baidupan::Config.app_root + '/', '')}#{"/" if item[:isdir] == 1}"
14
14
  new_items << "#{Time.at(item[:mtime])}"
15
15
  print_in_columns new_items
16
16
  end
17
17
  end
18
18
 
19
-
20
19
  desc 'list [Remote path]', 'list files under Remote path'
21
20
  def list(rpath=nil)
22
21
  res = Baidupan::FsCmd.list(rpath)
@@ -53,7 +52,6 @@ overwrite:表示覆盖同名文件;newcopy:表示生成文件副本并进
53
52
  opts.delete(:recursive)
54
53
  end
55
54
 
56
-
57
55
  files = Dir.glob(File.join(ldir, file_pattern)).select{|f| File.file?(f)}
58
56
 
59
57
  if options[:show]
@@ -97,5 +95,56 @@ overwrite:表示覆盖同名文件;newcopy:表示生成文件副本并进
97
95
  File.binwrite(lpath, res.body)
98
96
  say "download and save at'#{lpath}'..."
99
97
  end
98
+
99
+ desc 'url [remote path]', 'get a stream-file url for using online, e.g. <img src="_streamurl" />'
100
+ def url(rpath)
101
+ say Baidupan::FsCmd.url(rpath)
102
+ end
103
+
104
+ desc "thumbnail rpath", "获取缩略图"
105
+ option :quality, type: :numeric, desc: "缩略图的质量,默认为“100”,取值范围(0,100]", default: 100
106
+ option :height, type: :numeric, desc: "指定缩略图的高度,取值范围为(0,1600]", default: 200
107
+ option :width, type: :numeric, desc: "指定缩略图的宽度,取值范围为(0,1600]", default: 200
108
+ def thumbnail(rpath)
109
+ opts = options.dup
110
+ say Baidupan::FsCmd.thumbnail(rpath, opts)
111
+ end
112
+
113
+ desc 'mkdir rpath', 'mkdir remote path, e.g. mkdir path/to/newdir'
114
+ def mkdir(rpath)
115
+ print_item Baidupan::FsCmd.mkdir(rpath).body
116
+ end
117
+
118
+ desc 'move from_rpath, to_rpath', 'move a remote path/to/from --> path/to/to'
119
+ def mv(from_rpath, to_rpath)
120
+ to_rpath += File.basename(from_rpath) if to_rpath[-1] == '/'
121
+ say "from_rpath不能和to_rpath相同" and return if from_rpath == to_rpath
122
+
123
+ body = Baidupan::FsCmd.move(from_rpath, to_rpath).body
124
+
125
+ say "success to mv file #{body[:extra][:list][0][:from]} ---> #{body[:extra][:list][0][:to]}"
126
+ end
127
+
128
+ desc 'copy from_rpath, to_rpath', 'copy a remote path/to/from --> path/to/to'
129
+ def copy(from_rpath, to_rpath)
130
+ to_rpath += File.basename(from_rpath) if to_rpath[-1] == '/'
131
+ say "from_rpath不能和to_rpath相同" and return if from_rpath == to_rpath
132
+
133
+ body = Baidupan::FsCmd.copy(from_rpath, to_rpath).body
134
+ say "success to cp file #{body[:extra][:list][0][:from]} ---> #{body[:extra][:list][0][:to]}"
135
+ end
136
+ map cp: :copy
137
+
138
+ desc 'delete rpath', 'delete a remote path'
139
+ option :force, type: :boolean, default: false
140
+ def delete(rpath)
141
+ if options[:force] || yes?("Are you sure to delte #{rpath}?")
142
+ response = Baidupan::FsCmd.delete(rpath).response
143
+ say "success to delete #{rpath}"if response.success?
144
+ else
145
+ say "Cancel to delete #{rpath}"
146
+ end
147
+ end
148
+ map del: :delete
100
149
  end
101
150
  end
@@ -19,8 +19,17 @@ module Baidupan
19
19
  single_instance.config[method.to_sym]
20
20
  end
21
21
 
22
- def file_path
23
- File.join(self.base_url, 'file')
22
+ def file_path(*files)
23
+ base_file = File.join(self.base_url, 'file')
24
+ files.each do |file|
25
+ base_file = File.join(base_file, file.to_s)
26
+ end
27
+
28
+ base_file
29
+ end
30
+
31
+ def thumbnail
32
+ File.join(self.base_url, 'thumbnail')
24
33
  end
25
34
 
26
35
  def time_format
@@ -29,7 +38,7 @@ module Baidupan
29
38
 
30
39
  def join_path(*files)
31
40
  files.inject(self.app_root) do |rpath, lpath|
32
- File.join(rpath, lpath)
41
+ File.join(rpath, lpath.to_s)
33
42
  end
34
43
  end
35
44
  end
@@ -0,0 +1 @@
1
+ require 'baidupan/core_ext/hash'
@@ -0,0 +1,5 @@
1
+ class Hash
2
+ def to_query_str
3
+ map{|k, v| "&#{k}=#{v}"}.join
4
+ end
5
+ end
@@ -6,7 +6,7 @@ module Baidupan
6
6
  class FsCmd < Base
7
7
  class << self
8
8
 
9
- def list(rpath, **opts)
9
+ def list(rpath, opts={})
10
10
  opts.merge!(common_params(:list, path: "#{Config.app_root}/#{rpath}"))
11
11
  get(Config.file_path, opts)
12
12
  end
@@ -22,9 +22,42 @@ module Baidupan
22
22
  end
23
23
 
24
24
  def download(rpath, lpath, opts={})
25
- params = common_params(:download, path: "#{Config.app_root}/#{rpath}")
25
+ params = common_params(:download, path: "#{Config.join(rpath)}")
26
26
  get(Config.file_path, params, opts.merge(followlocation: true))
27
27
  end
28
+
29
+ def url(rpath)
30
+ params = common_params(:download, path: "#{Config.join_path(rpath)}")
31
+ "#{Config.file_path}?#{params.to_query_str}"
32
+ end
33
+
34
+ def thumbnail(rpath, opts={})
35
+ params = common_params(:generate, path: "#{Config.join_path(rpath)}").merge(opts)
36
+ "#{Config.thumbnail}?" + params.to_query_str
37
+ end
38
+
39
+ def mkdir(rpath)
40
+ post(Config.file_path, common_params(:mkdir, path: "#{Config.join_path(rpath)}"))
41
+ end
42
+
43
+ def move(from_rpath, to_rpath)
44
+ params = common_params(:move,
45
+ from: "#{Config.join_path(from_rpath)}",
46
+ to: "#{Config.join_path(to_rpath)}")
47
+ post(Config.file_path, params)
48
+ end
49
+
50
+ def copy(from_rpath, to_rpath)
51
+ params = common_params(:copy,
52
+ from: "#{Config.join_path(from_rpath)}",
53
+ to: "#{Config.join_path(to_rpath)}")
54
+ post(Config.file_path, params)
55
+ end
56
+
57
+ def delete(rpath)
58
+ params = common_params(:delete, path: "#{Config.join_path(rpath)}")
59
+ post(Config.file_path, params)
60
+ end
28
61
  end
29
62
  end
30
63
  end
@@ -1,3 +1,3 @@
1
1
  module Baidupan
2
- VERSION = "0.0.5"
2
+ VERSION = "0.0.6"
3
3
  end
metadata CHANGED
@@ -1,18 +1,20 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: baidupan
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - AndyHu
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2013-09-28 00:00:00.000000000 Z
12
+ date: 2013-09-29 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: bundler
15
16
  requirement: !ruby/object:Gem::Requirement
17
+ none: false
16
18
  requirements:
17
19
  - - ~>
18
20
  - !ruby/object:Gem::Version
@@ -20,6 +22,7 @@ dependencies:
20
22
  type: :development
21
23
  prerelease: false
22
24
  version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
23
26
  requirements:
24
27
  - - ~>
25
28
  - !ruby/object:Gem::Version
@@ -27,20 +30,23 @@ dependencies:
27
30
  - !ruby/object:Gem::Dependency
28
31
  name: rake
29
32
  requirement: !ruby/object:Gem::Requirement
33
+ none: false
30
34
  requirements:
31
- - - '>='
35
+ - - ! '>='
32
36
  - !ruby/object:Gem::Version
33
37
  version: '0'
34
38
  type: :development
35
39
  prerelease: false
36
40
  version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
37
42
  requirements:
38
- - - '>='
43
+ - - ! '>='
39
44
  - !ruby/object:Gem::Version
40
45
  version: '0'
41
46
  - !ruby/object:Gem::Dependency
42
47
  name: typhoeus
43
48
  requirement: !ruby/object:Gem::Requirement
49
+ none: false
44
50
  requirements:
45
51
  - - ~>
46
52
  - !ruby/object:Gem::Version
@@ -48,6 +54,7 @@ dependencies:
48
54
  type: :development
49
55
  prerelease: false
50
56
  version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
51
58
  requirements:
52
59
  - - ~>
53
60
  - !ruby/object:Gem::Version
@@ -55,6 +62,7 @@ dependencies:
55
62
  - !ruby/object:Gem::Dependency
56
63
  name: multi_json
57
64
  requirement: !ruby/object:Gem::Requirement
65
+ none: false
58
66
  requirements:
59
67
  - - ~>
60
68
  - !ruby/object:Gem::Version
@@ -62,6 +70,7 @@ dependencies:
62
70
  type: :development
63
71
  prerelease: false
64
72
  version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
65
74
  requirements:
66
75
  - - ~>
67
76
  - !ruby/object:Gem::Version
@@ -69,6 +78,7 @@ dependencies:
69
78
  - !ruby/object:Gem::Dependency
70
79
  name: pry
71
80
  requirement: !ruby/object:Gem::Requirement
81
+ none: false
72
82
  requirements:
73
83
  - - ~>
74
84
  - !ruby/object:Gem::Version
@@ -76,6 +86,7 @@ dependencies:
76
86
  type: :development
77
87
  prerelease: false
78
88
  version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
79
90
  requirements:
80
91
  - - ~>
81
92
  - !ruby/object:Gem::Version
@@ -83,6 +94,7 @@ dependencies:
83
94
  - !ruby/object:Gem::Dependency
84
95
  name: pry-nav
85
96
  requirement: !ruby/object:Gem::Requirement
97
+ none: false
86
98
  requirements:
87
99
  - - ~>
88
100
  - !ruby/object:Gem::Version
@@ -90,6 +102,7 @@ dependencies:
90
102
  type: :development
91
103
  prerelease: false
92
104
  version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
93
106
  requirements:
94
107
  - - ~>
95
108
  - !ruby/object:Gem::Version
@@ -97,15 +110,17 @@ dependencies:
97
110
  - !ruby/object:Gem::Dependency
98
111
  name: thor
99
112
  requirement: !ruby/object:Gem::Requirement
113
+ none: false
100
114
  requirements:
101
- - - '>='
115
+ - - ! '>='
102
116
  - !ruby/object:Gem::Version
103
117
  version: '0'
104
118
  type: :runtime
105
119
  prerelease: false
106
120
  version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
107
122
  requirements:
108
- - - '>='
123
+ - - ! '>='
109
124
  - !ruby/object:Gem::Version
110
125
  version: '0'
111
126
  description: 利用百度云盘接口, 实现文件备份功能
@@ -128,30 +143,33 @@ files:
128
143
  - lib/baidupan/cmd/base.rb
129
144
  - lib/baidupan/cmd/fs_cmd.rb
130
145
  - lib/baidupan/config.rb
146
+ - lib/baidupan/core_ext.rb
147
+ - lib/baidupan/core_ext/hash.rb
131
148
  - lib/baidupan/fs_cmd.rb
132
149
  - lib/baidupan/version.rb
133
150
  homepage: http://ml-china.org
134
151
  licenses:
135
152
  - MIT
136
- metadata: {}
137
153
  post_install_message:
138
154
  rdoc_options: []
139
155
  require_paths:
140
156
  - lib
141
157
  required_ruby_version: !ruby/object:Gem::Requirement
158
+ none: false
142
159
  requirements:
143
- - - '>='
160
+ - - ! '>='
144
161
  - !ruby/object:Gem::Version
145
162
  version: '0'
146
163
  required_rubygems_version: !ruby/object:Gem::Requirement
164
+ none: false
147
165
  requirements:
148
- - - '>='
166
+ - - ! '>='
149
167
  - !ruby/object:Gem::Version
150
168
  version: '0'
151
169
  requirements: []
152
170
  rubyforge_project:
153
- rubygems_version: 2.1.4
171
+ rubygems_version: 1.8.25
154
172
  signing_key:
155
- specification_version: 4
173
+ specification_version: 3
156
174
  summary: 文件上传和查看等功能
157
175
  test_files: []
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: a7bf29bd9e970583b16dcc95efbe8bd58c555d81
4
- data.tar.gz: 50a1d6c214706ab0bead3a76a36c7201dde7b63c
5
- SHA512:
6
- metadata.gz: e9615c5148eff1c8ab80e5351296ff70898dc9f1fcb8dabfc62fa32b09e1c196bcd4d7757e59ec88cafe6e80c19de99843e6db2cc5721722f0989dd685bb4ab2
7
- data.tar.gz: 63de6c09ef2a05555c8a550d0748133e3d490f37dd6bedfe8b968e977382ef7ac5bc79870e159b098062f3e633c3f44122a74b0347fb33925be5d4db9299b9a9