aliyun-sdk 0.1.7 → 0.1.8

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d8c0d1b86615b56e888dced9498d7e1e4a4a1e39
4
- data.tar.gz: af031c11e58a4d25fc9eb6afba56d1d9a0982b34
3
+ metadata.gz: 5464cc7eae38bc5a03989a659ecebe5ad29b20c5
4
+ data.tar.gz: 7b700d86e7985b53227aee212ed097d9d68f9c83
5
5
  SHA512:
6
- metadata.gz: 83fd2fb0d5344b83840456d1c128e5f7c3fcb78852f573551f208903547bbe324569ab0d1914856980ac7eab8389d1f58533fb569ca0b88354b08b0414b770ce
7
- data.tar.gz: 89e4ff7882cde22a27c5271cd9989e03bd8217908fda2afda229a3544e8d8cfbea546cc0312f740141b0efd289a5d9d87a9e27a33ac9b5bdaac8b8263017ee0a
6
+ metadata.gz: 3a98134dfb618c8359e66d8914918d05fc1b20efe2589cf3d9f094b001a0aab38c3c0292465f6457ae07cc2941c65843ed960ad88e83bd18c9eeabfbbb6c35c2
7
+ data.tar.gz: 0c8d4c5b7aa671664c2f5f433d44c7307f2ad4b38387c839f2ca6b1d27c857fc106e6c2c03cf1d8be2ce7200a2de10c338f22665ac3e5e547729f73df0f81a71
@@ -1,5 +1,11 @@
1
1
  ## Change Log
2
2
 
3
+ ### v0.1.8
4
+
5
+ - Fix StreamWriter string encoding problem
6
+ - Add ruby version and os version in User-Agent
7
+ - Some comments & examples refine
8
+
3
9
  ### v0.1.7
4
10
 
5
11
  - Fix StreamWriter#inspect bug
data/README.md CHANGED
@@ -149,7 +149,7 @@ Object的common prefix,包含在`list_objects`的结果中。
149
149
 
150
150
  objs = bucket.list_objects(:prefix => '/foo/', :delimiter => '/')
151
151
  objs.each do |i|
152
- if i.is_a?(Object) # a object
152
+ if i.is_a?(Aliyun::OSS::Object) # a object
153
153
  puts "object: #{i.key}"
154
154
  else
155
155
  puts "common prefix: #{i}"
@@ -330,13 +330,13 @@ Bucket的权限。
330
330
 
331
331
  SDK的examples/目录下有一些展示SDK功能的示例程序,用户稍加配置就可以直
332
332
  接运行。examples需要的权限信息和bucket信息从用户`HOME`目录下的配置文件
333
- `~/.oss.yml`中读取,其中应该包含以下字段:
333
+ `~/.oss.yml`中读取,其中应该包含以下字段(**注意冒号后面需要有一个空格**):
334
334
 
335
335
  endpoint: oss-cn-hangzhou.aliyuncs.com
336
336
  cname: false
337
- id: ACCESS KEY ID
338
- key: ACCESS KEY SECRET
339
- bucket: BUCKET NAME
337
+ access_key_id: <ACCESS KEY ID>
338
+ access_key_secret: <ACCESS KEY SECRET>
339
+ bucket: <BUCKET NAME>
340
340
 
341
341
  用户需要创建(如果不存在)或者修改其中的内容,然后运行:
342
342
 
@@ -11,8 +11,8 @@ conf = YAML.load(File.read(File.expand_path(conf_file)))
11
11
  client = Aliyun::OSS::Client.new(
12
12
  :endpoint => conf['endpoint'],
13
13
  :cname => conf['cname'],
14
- :access_key_id => conf['id'],
15
- :access_key_secret => conf['key'])
14
+ :access_key_id => conf['access_key_id'],
15
+ :access_key_secret => conf['access_key_secret'])
16
16
  bucket = client.get_bucket(conf['bucket'])
17
17
 
18
18
  # 辅助打印函数
@@ -11,8 +11,8 @@ conf = YAML.load(File.read(File.expand_path(conf_file)))
11
11
  bucket = Aliyun::OSS::Client.new(
12
12
  :endpoint => conf['endpoint'],
13
13
  :cname => conf['cname'],
14
- :access_key_id => conf['id'],
15
- :access_key_secret => conf['key']).get_bucket(conf['bucket'])
14
+ :access_key_id => conf['access_key_id'],
15
+ :access_key_secret => conf['access_key_secret']).get_bucket(conf['bucket'])
16
16
 
17
17
  # 辅助打印函数
18
18
  def demo(msg)
@@ -11,8 +11,8 @@ conf = YAML.load(File.read(File.expand_path(conf_file)))
11
11
  bucket = Aliyun::OSS::Client.new(
12
12
  :endpoint => conf['endpoint'],
13
13
  :cname => conf['cname'],
14
- :access_key_id => conf['id'],
15
- :access_key_secret => conf['key']).get_bucket(conf['bucket'])
14
+ :access_key_id => conf['access_key_id'],
15
+ :access_key_secret => conf['access_key_secret']).get_bucket(conf['bucket'])
16
16
 
17
17
  # 辅助打印函数
18
18
  def demo(msg)
@@ -11,8 +11,8 @@ conf = YAML.load(File.read(File.expand_path(conf_file)))
11
11
  bucket = Aliyun::OSS::Client.new(
12
12
  :endpoint => conf['endpoint'],
13
13
  :cname => conf['cname'],
14
- :access_key_id => conf['id'],
15
- :access_key_secret => conf['key']).get_bucket(conf['bucket'])
14
+ :access_key_id => conf['access_key_id'],
15
+ :access_key_secret => conf['access_key_secret']).get_bucket(conf['bucket'])
16
16
 
17
17
  # 辅助打印函数
18
18
  def demo(msg)
@@ -29,8 +29,8 @@ conf = YAML.load(File.read(File.expand_path(conf_file)))
29
29
  bucket = Aliyun::OSS::Client.new(
30
30
  :endpoint => conf['endpoint'],
31
31
  :cname => conf['cname'],
32
- :access_key_id => conf['id'],
33
- :access_key_secret => conf['key']).get_bucket(conf['bucket'])
32
+ :access_key_id => conf['access_key_id'],
33
+ :access_key_secret => conf['access_key_secret']).get_bucket(conf['bucket'])
34
34
 
35
35
  # 辅助打印函数
36
36
  def demo(msg)
@@ -178,8 +178,8 @@ module Aliyun
178
178
  # @option opts [Hash] :metas 设置object的meta,这是一些用户自定
179
179
  # 义的属性,它们会和object一起存储,在{#get_object}的时候会
180
180
  # 返回这些meta。属性的key不区分大小写。例如:{ 'year' => '2015' }
181
- # @yield [HTTP::StreamWriter] 如果调
182
- # 用的时候传递了block,则写入到object的数据由block指定
181
+ # @yield [HTTP::StreamWriter] 如果调用的时候传递了block,则写入
182
+ # object的数据由block指定
183
183
  # @example 流式上传数据
184
184
  # put_object('x'){ |stream| 100.times { |i| stream << i.to_s } }
185
185
  # put_object('x'){ |stream| stream << get_data }
@@ -188,9 +188,6 @@ module Aliyun
188
188
  # @example 指定Content-Type和metas
189
189
  # put_object('x', :file => '/tmp/x', :content_type => 'text/html',
190
190
  # :metas => {'year' => '2015', 'people' => 'mary'})
191
- # @note 采用streaming的方式时,提供的数据必须是有结束标记的数据。
192
- # 因为put_object会不断地从StreamWriter中读取数据上传到OSS,直到
193
- # 它读到的数据为nil停止。
194
191
  # @note 如果opts中指定了:file,则block会被忽略
195
192
  def put_object(key, opts = {}, &block)
196
193
  args = opts.dup
@@ -14,6 +14,9 @@ module Aliyun
14
14
 
15
15
  def initialize(opts = {})
16
16
  super(opts)
17
+
18
+ @access_key_id.strip! if @access_key_id
19
+ @access_key_secret.strip! if @access_key_secret
17
20
  normalize_endpoint if endpoint
18
21
  end
19
22
 
@@ -41,18 +41,22 @@ module Aliyun
41
41
  #
42
42
  class StreamWriter
43
43
  def initialize
44
- @chunks = []
44
+ @buffer = ""
45
45
  @producer = Fiber.new { yield self if block_given? }
46
46
  @producer.resume
47
47
  end
48
48
 
49
- # FIXME: it may return more than bytes, not sure if that's a problem
50
49
  def read(bytes = nil, outbuf = nil)
51
50
  ret = ""
52
51
  loop do
53
- c = @chunks.shift
54
- ret << c if c && !c.empty?
55
- break if bytes && ret.size >= bytes
52
+ if bytes
53
+ ret << @buffer.slice!(0, bytes)
54
+ break if ret.size >= bytes
55
+ else
56
+ ret << @buffer
57
+ @buffer.clear
58
+ end
59
+
56
60
  if @producer.alive?
57
61
  @producer.resume
58
62
  else
@@ -76,7 +80,7 @@ module Aliyun
76
80
  end
77
81
 
78
82
  def write(chunk)
79
- @chunks << chunk
83
+ @buffer << chunk.to_s.force_encoding(Encoding::ASCII_8BIT)
80
84
  Fiber.yield
81
85
  self
82
86
  end
@@ -88,7 +92,7 @@ module Aliyun
88
92
  end
89
93
 
90
94
  def inspect
91
- "@chunks: " + @chunks.map { |c| c[0, 100].inspect }.join(';')
95
+ "@buffer: " + @buffer[0, 32].inspect + "...#{@buffer.size} bytes"
92
96
  end
93
97
  end
94
98
 
@@ -275,7 +279,7 @@ module Aliyun
275
279
  end
276
280
 
277
281
  def get_user_agent
278
- "aliyun-sdk-ruby/#{VERSION}"
282
+ "aliyun-sdk-ruby/#{VERSION} ruby-#{RUBY_VERSION}/#{RUBY_PLATFORM}"
279
283
  end
280
284
 
281
285
  end # HTTP
@@ -3,7 +3,7 @@
3
3
  module Aliyun
4
4
  module OSS
5
5
 
6
- VERSION = "0.1.7"
6
+ VERSION = "0.1.8"
7
7
 
8
8
  end # OSS
9
9
  end # Aliyun
@@ -10,11 +10,11 @@ module Aliyun
10
10
  describe Client do
11
11
 
12
12
  context "construct" do
13
- it "should setup endpoint and a/k", :focus => true do
13
+ it "should setup endpoint and a/k" do
14
14
  endpoint = 'oss-cn-hangzhou.aliyuncs.com'
15
15
  client = Client.new(
16
16
  :endpoint => endpoint,
17
- :access_key_id => 'xxx', :access_key_secret => 'yyy')
17
+ :access_key_id => 'xxx ', :access_key_secret => ' yyy ')
18
18
 
19
19
  config = client.instance_variable_get('@config')
20
20
  expect(config.endpoint.to_s).to eq("http://#{endpoint}")
@@ -10,14 +10,53 @@ module Aliyun
10
10
  context HTTP::StreamWriter do
11
11
  it "should read out chunks that are written" do
12
12
  s = HTTP::StreamWriter.new do |sr|
13
- 10.times{ |i| sr << "hello, #{i}" }
13
+ 100.times { sr << "x" }
14
14
  end
15
15
 
16
- 10.times do |i|
17
- bytes, outbuf = "hello, 0".size, ""
16
+ 10.times do
17
+ bytes, outbuf = 10, ''
18
18
  s.read(bytes, outbuf)
19
- expect(outbuf).to eq("hello, #{i}")
19
+ expect(outbuf).to eq("x"*10)
20
20
  end
21
+
22
+ outbuf = 'xxx'
23
+ r = s.read(10, outbuf)
24
+ expect(outbuf).to eq('')
25
+ expect(r).to be nil
26
+
27
+ r = s.read
28
+ expect(outbuf.empty?).to be true
29
+ expect(r).to eq('')
30
+ end
31
+
32
+ it "should convert chunk to string" do
33
+ s = HTTP::StreamWriter.new do |sr|
34
+ sr << 100 << 200
35
+ end
36
+
37
+ r = s.read
38
+ expect(r).to eq("100200")
39
+ end
40
+
41
+ it "should encode string to bytes" do
42
+ s = HTTP::StreamWriter.new do |sr|
43
+ 100.times { sr << "中" }
44
+ end
45
+
46
+ r = s.read(1)
47
+ expect(r).to eq('中'.force_encoding(Encoding::ASCII_8BIT)[0])
48
+ s.read(2)
49
+ r = s.read(3)
50
+ expect(r.force_encoding(Encoding::UTF_8)).to eq('中')
51
+
52
+ bytes = (100 - 2) * 3
53
+ outbuf = 'zzz'
54
+ r = s.read(bytes, outbuf)
55
+ expect(outbuf.size).to eq(bytes)
56
+ expect(r.size).to eq(bytes)
57
+
58
+ r = s.read
59
+ expect(r).to eq('')
21
60
  end
22
61
  end # StreamWriter
23
62
 
@@ -11,8 +11,8 @@ class TestContentType < Minitest::Test
11
11
  client = Aliyun::OSS::Client.new(
12
12
  :endpoint => conf['endpoint'],
13
13
  :cname => conf['cname'],
14
- :access_key_id => conf['id'],
15
- :access_key_secret => conf['key'])
14
+ :access_key_id => conf['access_key_id'],
15
+ :access_key_secret => conf['access_key_secret'])
16
16
  @bucket = client.get_bucket(conf['bucket'])
17
17
 
18
18
  @types = {
@@ -0,0 +1,81 @@
1
+ # coding: utf-8
2
+ require 'minitest/autorun'
3
+ require 'yaml'
4
+ $LOAD_PATH.unshift(File.expand_path("../../lib", __FILE__))
5
+ require 'aliyun/oss'
6
+
7
+ class TestEncoding < Minitest::Test
8
+ def setup
9
+ Aliyun::OSS::Logging.set_log_level(Logger::DEBUG)
10
+ conf_file = '~/.oss.yml'
11
+ conf = YAML.load(File.read(File.expand_path(conf_file)))
12
+ client = Aliyun::OSS::Client.new(
13
+ :endpoint => conf['endpoint'],
14
+ :cname => conf['cname'],
15
+ :access_key_id => conf['access_key_id'],
16
+ :access_key_secret => conf['access_key_secret'])
17
+ @bucket = client.get_bucket(conf['bucket'])
18
+ @prefix = 'tests/encoding/'
19
+ end
20
+
21
+ def get_key(k)
22
+ @prefix + k
23
+ end
24
+
25
+ def test_utf_8
26
+ key = get_key('utf-8')
27
+ @bucket.put_object(key) do |stream|
28
+ stream << '中国' << 'Ruby'
29
+ end
30
+ put = '中国Ruby'.force_encoding(Encoding::ASCII_8BIT)
31
+ got = ''
32
+ @bucket.get_object(key) { |c| got << c }
33
+ assert_equal put, got
34
+
35
+ File.open('/tmp/x', 'w') { |f| f.write('中国Ruby') }
36
+ @bucket.put_object(key, :file => '/tmp/x')
37
+ got = ''
38
+ @bucket.get_object(key) { |c| got << c }
39
+ assert_equal put, got
40
+ end
41
+
42
+ def test_gbk
43
+ key = get_key('gbk')
44
+ @bucket.put_object(key) do |stream|
45
+ stream << '中国'.encode(Encoding::GBK) << 'Ruby'.encode(Encoding::GBK)
46
+ end
47
+ put = '中国Ruby'.encode(Encoding::GBK).force_encoding(Encoding::ASCII_8BIT)
48
+ got = ''
49
+ @bucket.get_object(key) { |c| got << c }
50
+ assert_equal put, got
51
+
52
+ File.open('/tmp/x', 'w') { |f| f.write('中国Ruby'.encode(Encoding::GBK)) }
53
+ @bucket.put_object(key, :file => '/tmp/x')
54
+ got = ''
55
+ @bucket.get_object(key) { |c| got << c }
56
+ assert_equal put, got
57
+ end
58
+
59
+ def encode_number(i)
60
+ [i].pack('N')
61
+ end
62
+
63
+ def test_binary
64
+ key = get_key('bin')
65
+ @bucket.put_object(key) do |stream|
66
+ (0..1024).each { |i| stream << encode_number(i) }
67
+ end
68
+ put = (0..1024).reduce('') { |s, i| s << encode_number(i) }
69
+ got = ''
70
+ @bucket.get_object(key) { |c| got << c }
71
+ assert_equal put, got
72
+
73
+ File.open('/tmp/x', 'w') { |f|
74
+ (0..1024).each { |i| f.write(encode_number(i)) }
75
+ }
76
+ @bucket.put_object(key, :file => '/tmp/x')
77
+ got = ''
78
+ @bucket.get_object(key) { |c| got << c }
79
+ assert_equal put, got
80
+ end
81
+ end
@@ -12,8 +12,8 @@ class TestObjectKey < Minitest::Test
12
12
  client = Aliyun::OSS::Client.new(
13
13
  :endpoint => conf['endpoint'],
14
14
  :cname => conf['cname'],
15
- :access_key_id => conf['id'],
16
- :access_key_secret => conf['key'])
15
+ :access_key_id => conf['access_key_id'],
16
+ :access_key_secret => conf['access_key_secret'])
17
17
  @bucket = client.get_bucket(conf['bucket'])
18
18
  @prefix = 'tests/large_file/'
19
19
  end
@@ -4,15 +4,15 @@ require 'yaml'
4
4
  $LOAD_PATH.unshift(File.expand_path("../../lib", __FILE__))
5
5
  require 'aliyun/oss'
6
6
 
7
- class TestMultipart < Minitest::Unit::TestCase
7
+ class TestMultipart < Minitest::Test
8
8
  def setup
9
9
  conf_file = '~/.oss.yml'
10
10
  conf = YAML.load(File.read(File.expand_path(conf_file)))
11
11
  opts = {
12
12
  endpoint: conf['endpoint'],
13
13
  cname: conf['cname'],
14
- access_key_id: conf['id'],
15
- access_key_secret: conf['key'],
14
+ access_key_id: conf['access_key_id'],
15
+ access_key_secret: conf['access_key_secret'],
16
16
  }
17
17
  client = Aliyun::OSS::Client.new(opts)
18
18
  @bucket_name = conf['bucket']
@@ -12,8 +12,8 @@ class TestObjectKey < Minitest::Test
12
12
  client = Aliyun::OSS::Client.new(
13
13
  :endpoint => conf['endpoint'],
14
14
  :cname => conf['cname'],
15
- :access_key_id => conf['id'],
16
- :access_key_secret => conf['key'])
15
+ :access_key_id => conf['access_key_id'],
16
+ :access_key_secret => conf['access_key_secret'])
17
17
  @bucket = client.get_bucket(conf['bucket'])
18
18
  @prefix = 'tests/object_key/'
19
19
  @keys = {
@@ -11,8 +11,8 @@ class TestResumable < Minitest::Test
11
11
  client = Aliyun::OSS::Client.new(
12
12
  :endpoint => conf['endpoint'],
13
13
  :cname => conf['cname'],
14
- :access_key_id => conf['id'],
15
- :access_key_secret => conf['key'])
14
+ :access_key_id => conf['access_key_id'],
15
+ :access_key_secret => conf['access_key_secret'])
16
16
  @bucket = client.get_bucket(conf['bucket'])
17
17
  @prefix = 'tests/resumable/'
18
18
  end
metadata CHANGED
@@ -1,111 +1,111 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aliyun-sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
4
+ version: 0.1.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tianlong Wu
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-11-29 00:00:00.000000000 Z
11
+ date: 2015-12-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.6'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.6'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rest-client
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: '1.8'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ~>
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '1.8'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: bundler
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ~>
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
47
  version: '1.10'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ~>
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '1.10'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rake
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ~>
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
61
  version: '10.4'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ~>
66
+ - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '10.4'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rspec
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ~>
73
+ - - "~>"
74
74
  - !ruby/object:Gem::Version
75
75
  version: '3.3'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ~>
80
+ - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: '3.3'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: webmock
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ~>
87
+ - - "~>"
88
88
  - !ruby/object:Gem::Version
89
89
  version: '1.22'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - ~>
94
+ - - "~>"
95
95
  - !ruby/object:Gem::Version
96
96
  version: '1.22'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: simplecov
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - ~>
101
+ - - "~>"
102
102
  - !ruby/object:Gem::Version
103
103
  version: '0.10'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - ~>
108
+ - - "~>"
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0.10'
111
111
  description: A Ruby program to facilitate accessing Aliyun Object Storage Service
@@ -151,6 +151,7 @@ files:
151
151
  - spec/aliyun/oss/service_spec.rb
152
152
  - spec/aliyun/oss/util_spec.rb
153
153
  - tests/test_content_type.rb
154
+ - tests/test_encoding.rb
154
155
  - tests/test_large_file.rb
155
156
  - tests/test_multipart.rb
156
157
  - tests/test_object_key.rb
@@ -165,17 +166,17 @@ require_paths:
165
166
  - lib
166
167
  required_ruby_version: !ruby/object:Gem::Requirement
167
168
  requirements:
168
- - - '>='
169
+ - - ">="
169
170
  - !ruby/object:Gem::Version
170
171
  version: 1.9.3
171
172
  required_rubygems_version: !ruby/object:Gem::Requirement
172
173
  requirements:
173
- - - '>='
174
+ - - ">="
174
175
  - !ruby/object:Gem::Version
175
176
  version: '0'
176
177
  requirements: []
177
178
  rubyforge_project:
178
- rubygems_version: 2.5.0
179
+ rubygems_version: 2.4.5.1
179
180
  signing_key:
180
181
  specification_version: 4
181
182
  summary: Aliyun OSS SDK for Ruby
@@ -191,8 +192,8 @@ test_files:
191
192
  - spec/aliyun/oss/service_spec.rb
192
193
  - spec/aliyun/oss/util_spec.rb
193
194
  - tests/test_content_type.rb
195
+ - tests/test_encoding.rb
194
196
  - tests/test_large_file.rb
195
197
  - tests/test_multipart.rb
196
198
  - tests/test_object_key.rb
197
199
  - tests/test_resumable.rb
198
- has_rdoc: