Class: COS::Resource
- Inherits:
-
Object
- Object
- COS::Resource
- Defined in:
- lib/cos/resource.rb
Instance Attribute Summary collapse
-
#bucket ⇒ Object
readonly
Returns the value of attribute bucket.
-
#dir_count ⇒ Object
readonly
Returns the value of attribute dir_count.
-
#file_count ⇒ Object
readonly
Returns the value of attribute file_count.
-
#path ⇒ Object
readonly
Returns the value of attribute path.
Instance Method Summary collapse
-
#fetch ⇒ Object
获取列表.
-
#initialize(bucket, path, options = {}) ⇒ Resource
constructor
实例化COS资源迭代器.
-
#next ⇒ Object
实现迭代器.
-
#to_enum ⇒ Object
返回迭代器.
Constructor Details
#initialize(bucket, path, options = {}) ⇒ Resource
实例化COS资源迭代器
10 11 12 13 14 15 16 17 |
# File 'lib/cos/resource.rb', line 10 def initialize(bucket, path, = {}) @bucket = bucket @path = path @more = @results = Array.new @dir_count = 0 @file_count = 0 end |
Instance Attribute Details
#bucket ⇒ Object (readonly)
Returns the value of attribute bucket.
7 8 9 |
# File 'lib/cos/resource.rb', line 7 def bucket @bucket end |
#dir_count ⇒ Object (readonly)
Returns the value of attribute dir_count.
7 8 9 |
# File 'lib/cos/resource.rb', line 7 def dir_count @dir_count end |
#file_count ⇒ Object (readonly)
Returns the value of attribute file_count.
7 8 9 |
# File 'lib/cos/resource.rb', line 7 def file_count @file_count end |
#path ⇒ Object (readonly)
Returns the value of attribute path.
7 8 9 |
# File 'lib/cos/resource.rb', line 7 def path @path end |
Instance Method Details
#fetch ⇒ Object
获取列表
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/cos/resource.rb', line 39 def fetch client = bucket.client resp = client.api.list(path, @more.merge({bucket: bucket.bucket_name})) # 遍历结果转换为对应的对象 @results = resp[:infos].map do |r| if r[:filesize].nil? # 目录 COSDir.new(r.merge({ bucket: bucket, path: Util.get_list_path(path, r[:name]) })) else # 文件 COSFile.new(r.merge({ bucket: bucket, path: Util.get_list_path(path, r[:name], true) })) end end || [] @dir_count = resp[:dir_count] @file_count = resp[:file_count] @more[:context] = resp[:context] @more[:has_more] = resp[:has_more] end |
#next ⇒ Object
实现迭代器
20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/cos/resource.rb', line 20 def next loop do # 从接口获取下一页结果 fetch_more if @results.empty? # 取出结果 r = @results.shift break unless r yield r end end |
#to_enum ⇒ Object
返回迭代器
34 35 36 |
# File 'lib/cos/resource.rb', line 34 def to_enum self.enum_for(:next) end |