aliyun-sdk 0.1.7 → 0.1.8

Sign up to get free protection for your applications and to get access to all the features.
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: