aliyun-oss 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (56) hide show
  1. data/COPYING +19 -0
  2. data/INSTALL +35 -0
  3. data/README +443 -0
  4. data/Rakefile +333 -0
  5. data/bin/oss +6 -0
  6. data/bin/setup.rb +11 -0
  7. data/lib/aliyun/oss.rb +55 -0
  8. data/lib/aliyun/oss/acl.rb +132 -0
  9. data/lib/aliyun/oss/authentication.rb +222 -0
  10. data/lib/aliyun/oss/base.rb +241 -0
  11. data/lib/aliyun/oss/bucket.rb +320 -0
  12. data/lib/aliyun/oss/connection.rb +279 -0
  13. data/lib/aliyun/oss/error.rb +70 -0
  14. data/lib/aliyun/oss/exceptions.rb +134 -0
  15. data/lib/aliyun/oss/extensions.rb +364 -0
  16. data/lib/aliyun/oss/logging.rb +304 -0
  17. data/lib/aliyun/oss/object.rb +612 -0
  18. data/lib/aliyun/oss/owner.rb +45 -0
  19. data/lib/aliyun/oss/parsing.rb +100 -0
  20. data/lib/aliyun/oss/response.rb +181 -0
  21. data/lib/aliyun/oss/service.rb +52 -0
  22. data/lib/aliyun/oss/version.rb +13 -0
  23. data/support/faster-xml-simple/lib/faster_xml_simple.rb +188 -0
  24. data/support/faster-xml-simple/test/regression_test.rb +48 -0
  25. data/support/faster-xml-simple/test/test_helper.rb +18 -0
  26. data/support/faster-xml-simple/test/xml_simple_comparison_test.rb +47 -0
  27. data/support/rdoc/code_info.rb +212 -0
  28. data/test/acl_test.rb +70 -0
  29. data/test/authentication_test.rb +114 -0
  30. data/test/base_test.rb +137 -0
  31. data/test/bucket_test.rb +75 -0
  32. data/test/connection_test.rb +218 -0
  33. data/test/error_test.rb +71 -0
  34. data/test/extensions_test.rb +346 -0
  35. data/test/fixtures.rb +90 -0
  36. data/test/fixtures/buckets.yml +133 -0
  37. data/test/fixtures/errors.yml +34 -0
  38. data/test/fixtures/headers.yml +3 -0
  39. data/test/fixtures/logging.yml +15 -0
  40. data/test/fixtures/loglines.yml +5 -0
  41. data/test/fixtures/logs.yml +7 -0
  42. data/test/fixtures/policies.yml +16 -0
  43. data/test/logging_test.rb +90 -0
  44. data/test/mocks/fake_response.rb +27 -0
  45. data/test/object_test.rb +221 -0
  46. data/test/parsing_test.rb +67 -0
  47. data/test/remote/acl_test.rb +28 -0
  48. data/test/remote/bucket_test.rb +147 -0
  49. data/test/remote/logging_test.rb +86 -0
  50. data/test/remote/object_test.rb +350 -0
  51. data/test/remote/test_file.data +0 -0
  52. data/test/remote/test_helper.rb +34 -0
  53. data/test/response_test.rb +69 -0
  54. data/test/service_test.rb +24 -0
  55. data/test/test_helper.rb +110 -0
  56. metadata +185 -0
Binary file
@@ -0,0 +1,34 @@
1
+ # -*- encoding : utf-8 -*-
2
+ require 'test/unit'
3
+ require 'uri'
4
+ $:.unshift File.dirname(__FILE__) + '/../../lib'
5
+ require 'aliyun/oss'
6
+ begin
7
+ require_library_or_gem 'breakpoint'
8
+ rescue LoadError
9
+ end
10
+
11
+ TEST_BUCKET = 'aliyun-oss-tests'
12
+ TEST_FILE = File.dirname(__FILE__) + '/test_file.data'
13
+
14
+ class Test::Unit::TestCase
15
+ include Aliyun::OSS
16
+ def establish_real_connection
17
+ Base.establish_connection!(
18
+ :access_key_id => ENV['OSS_ACCESS_KEY_ID'],
19
+ :secret_access_key => ENV['OSS_SECRET_ACCESS_KEY']
20
+ )
21
+ end
22
+
23
+ def disconnect!
24
+ Base.disconnect
25
+ end
26
+
27
+ class TestBucket < Bucket
28
+ set_current_bucket_to TEST_BUCKET
29
+ end
30
+
31
+ class TestOSSObject < OSSObject
32
+ set_current_bucket_to TEST_BUCKET
33
+ end
34
+ end
@@ -0,0 +1,69 @@
1
+ # -*- encoding : utf-8 -*-
2
+ require File.dirname(__FILE__) + '/test_helper'
3
+ class BaseResponseTest < Test::Unit::TestCase
4
+ def setup
5
+ @headers = {'content-type' => 'text/plain', 'date' => Time.now}
6
+ @response = FakeResponse.new()
7
+ @base_response = Base::Response.new(@response)
8
+ end
9
+
10
+ def test_status_predicates
11
+ response = Proc.new {|code| Base::Response.new(FakeResponse.new(:code => code))}
12
+ assert response[200].success?
13
+ assert response[300].redirect?
14
+ assert response[400].client_error?
15
+ assert response[500].server_error?
16
+ end
17
+
18
+ def test_headers_passed_along_from_original_response
19
+ assert_equal @response.headers, @base_response.headers
20
+ assert_equal @response['date'], @base_response['date']
21
+ original_headers, new_headers = {}, {}
22
+ @response.headers.each {|k,v| original_headers[k] = v}
23
+ @base_response.each {|k,v| new_headers[k] = v}
24
+ assert_equal original_headers, new_headers
25
+ end
26
+ end
27
+
28
+ class ErrorResponseTest < Test::Unit::TestCase
29
+ def test_error_responses_are_always_in_error
30
+ assert Error::Response.new(FakeResponse.new).error?
31
+ assert Error::Response.new(FakeResponse.new(:code => 200)).error?
32
+ assert Error::Response.new(FakeResponse.new(:headers => {'content-type' => 'text/plain'})).error?
33
+ end
34
+ end
35
+
36
+ class OSSObjectResponseTest < Test::Unit::TestCase
37
+ def test_etag_extracted
38
+ mock_connection_for(OSSObject, :returns => {:headers => {"etag" => %("acbd18db4cc2f85cedef654fccc4a4d8")}}).once
39
+ object_response = OSSObject.create('name_does_not_matter', 'data does not matter', 'bucket does not matter')
40
+ assert_equal "acbd18db4cc2f85cedef654fccc4a4d8", object_response.etag
41
+ end
42
+ end
43
+
44
+ class ResponseClassFinderTest < Test::Unit::TestCase
45
+ class CampfireBucket < Bucket
46
+ end
47
+
48
+ class BabyBase < Base
49
+ end
50
+
51
+ def test_on_base
52
+ assert_equal Base::Response, FindResponseClass.for(Base)
53
+ assert_equal Base::Response, FindResponseClass.for(Aliyun::OSS::Base)
54
+
55
+ end
56
+
57
+ def test_on_subclass_with_corresponding_response_class
58
+ assert_equal Bucket::Response, FindResponseClass.for(Bucket)
59
+ assert_equal Bucket::Response, FindResponseClass.for(Aliyun::OSS::Bucket)
60
+ end
61
+
62
+ def test_on_subclass_with_intermediary_parent_that_has_corresponding_response_class
63
+ assert_equal Bucket::Response, FindResponseClass.for(CampfireBucket)
64
+ end
65
+
66
+ def test_on_subclass_with_no_corresponding_response_class_and_no_intermediary_parent
67
+ assert_equal Base::Response, FindResponseClass.for(BabyBase)
68
+ end
69
+ end
@@ -0,0 +1,24 @@
1
+ # -*- encoding : utf-8 -*-
2
+ require File.dirname(__FILE__) + '/test_helper'
3
+
4
+ class ServiceTest < Test::Unit::TestCase
5
+ def test_bucket_list_with_empty_bucket_list
6
+ mock_connection_for(Service, :returns => {:body => Fixtures::Buckets.empty_bucket_list, :code => 200})
7
+ list = Service.buckets(:reload)
8
+ assert_equal [], list
9
+ end
10
+
11
+ def test_bucket_list_with_bucket_list_containing_one_bucket
12
+ mock_connection_for(Service, :returns => {:body => Fixtures::Buckets.bucket_list_with_one_bucket, :code => 200})
13
+ list = Service.buckets(:reload)
14
+ assert_equal 1, list.size
15
+ assert_equal 'marcel_molina', list.first.name
16
+ end
17
+
18
+ def test_bucket_list_with_bucket_list_containing_more_than_one_bucket
19
+ mock_connection_for(Service, :returns => {:body => Fixtures::Buckets.bucket_list_with_more_than_one_bucket, :code => 200})
20
+ list = Service.buckets(:reload)
21
+ assert_equal 2, list.size
22
+ assert_equal %w(marcel_molina marcel_molina_jr), list.map {|bucket| bucket.name}.sort
23
+ end
24
+ end
@@ -0,0 +1,110 @@
1
+ # -*- encoding : utf-8 -*-
2
+ require 'test/unit'
3
+ $:.unshift File.dirname(__FILE__) + '/../lib'
4
+ require 'aliyun/oss'
5
+ require File.dirname(__FILE__) + '/mocks/fake_response'
6
+ require File.dirname(__FILE__) + '/fixtures'
7
+ begin
8
+ require_library_or_gem 'ruby-debug'
9
+ rescue LoadError
10
+ end
11
+ require_library_or_gem 'flexmock'
12
+ require_library_or_gem 'flexmock/test_unit'
13
+
14
+
15
+ module AliyunDocExampleData
16
+ module Example1
17
+ module_function
18
+
19
+ def request
20
+ request = Net::HTTP::Put.new('/quotes/nelson')
21
+ request['Content-Md5'] = 'c8fdb181845a4ca6b8fec737b3581d76'
22
+ request['Content-Type'] = 'text/html'
23
+ request['Date'] = 'Thu, 17 Nov 2005 18:49:58 GMT'
24
+ request['X-OSS-Meta-Author'] = 'foo@bar.com'
25
+ request['X-OSS-Magic'] = 'abracadabra'
26
+ request
27
+ end
28
+
29
+ def canonical_string
30
+ "PUT\nc8fdb181845a4ca6b8fec737b3581d76\ntext/html\nThu, 17 Nov 2005 18:49:58 GMT\nx-oss-magic:abracadabra\nx-oss-meta-author:foo@bar.com\n/quotes/nelson"
31
+ end
32
+
33
+ def access_key_id
34
+ '44CF9590006BF252F707'
35
+ end
36
+
37
+ def secret_access_key
38
+ 'OtxrzxIsfpFjA7SwPzILwy8Bw21TLhquhboDYROV'
39
+ end
40
+
41
+ def signature
42
+ '63mwfl+zYIOG6k95yxbgMruQ6QI='
43
+ end
44
+
45
+ def authorization_header
46
+ 'OSS 44CF9590006BF252F707:63mwfl+zYIOG6k95yxbgMruQ6QI='
47
+ end
48
+ end
49
+
50
+ module Example3
51
+ module_function
52
+
53
+ def request
54
+ request = Net::HTTP::Get.new('/quotes/nelson')
55
+ request['Date'] = date
56
+ request
57
+ end
58
+
59
+ def date
60
+ 'Thu Mar 9 01:24:20 CST 2006'
61
+ end
62
+
63
+ def access_key_id
64
+ Example1.access_key_id
65
+ end
66
+
67
+ def secret_access_key
68
+ Example1.secret_access_key
69
+ end
70
+
71
+ def expires
72
+ 1141889120
73
+ end
74
+
75
+ def query_string
76
+ 'OSSAccessKeyId=44CF9590006BF252F707&Expires=1141889120&Signature=vjbyPxybdZaNmGa%2ByT272YEAiv4%3D'
77
+ end
78
+
79
+ def canonical_string
80
+ "GET\n\n\n1141889120\n/quotes/nelson"
81
+ end
82
+
83
+ end
84
+ end
85
+
86
+ class Test::Unit::TestCase
87
+ include Aliyun::OSS
88
+
89
+ def sample_proxy_settings
90
+ {:host => 'http://google.com', :port => 8080, :user => 'marcel', :password => 'secret'}
91
+ end
92
+
93
+ def mock_connection_for(klass, options = {})
94
+ data = options[:returns]
95
+ return_values = case data
96
+ when Hash
97
+ FakeResponse.new(data)
98
+ when Array
99
+ data.map {|hash| FakeResponse.new(hash)}
100
+ else
101
+ abort "Response data for mock connection must be a Hash or an Array. Was #{data.inspect}."
102
+ end
103
+
104
+ connection = flexmock('Mock connection') do |mock|
105
+ mock.should_receive(:request).and_return(*return_values).at_least.once
106
+ end
107
+
108
+ flexmock(klass).should_receive(:connection).and_return(connection)
109
+ end
110
+ end
metadata ADDED
@@ -0,0 +1,185 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: aliyun-oss
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.7.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - mangege
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-10-04 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: xml-simple
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: builder
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: mime-types
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ description: Client library for Aliyun's Simple Storage Service's REST API
63
+ email: mr.mangege@gmail.com
64
+ executables:
65
+ - oss
66
+ extensions: []
67
+ extra_rdoc_files:
68
+ - README
69
+ - COPYING
70
+ - INSTALL
71
+ files:
72
+ - Rakefile
73
+ - lib/aliyun/oss.rb
74
+ - lib/aliyun/oss/error.rb
75
+ - lib/aliyun/oss/connection.rb
76
+ - lib/aliyun/oss/extensions.rb
77
+ - lib/aliyun/oss/logging.rb
78
+ - lib/aliyun/oss/bucket.rb
79
+ - lib/aliyun/oss/authentication.rb
80
+ - lib/aliyun/oss/owner.rb
81
+ - lib/aliyun/oss/response.rb
82
+ - lib/aliyun/oss/object.rb
83
+ - lib/aliyun/oss/acl.rb
84
+ - lib/aliyun/oss/parsing.rb
85
+ - lib/aliyun/oss/exceptions.rb
86
+ - lib/aliyun/oss/base.rb
87
+ - lib/aliyun/oss/version.rb
88
+ - lib/aliyun/oss/service.rb
89
+ - bin/oss
90
+ - bin/setup.rb
91
+ - support/rdoc/code_info.rb
92
+ - support/faster-xml-simple/test/xml_simple_comparison_test.rb
93
+ - support/faster-xml-simple/test/test_helper.rb
94
+ - support/faster-xml-simple/test/regression_test.rb
95
+ - support/faster-xml-simple/lib/faster_xml_simple.rb
96
+ - test/acl_test.rb
97
+ - test/bucket_test.rb
98
+ - test/base_test.rb
99
+ - test/logging_test.rb
100
+ - test/authentication_test.rb
101
+ - test/service_test.rb
102
+ - test/error_test.rb
103
+ - test/fixtures/logs.yml
104
+ - test/fixtures/policies.yml
105
+ - test/fixtures/buckets.yml
106
+ - test/fixtures/errors.yml
107
+ - test/fixtures/headers.yml
108
+ - test/fixtures/logging.yml
109
+ - test/fixtures/loglines.yml
110
+ - test/test_helper.rb
111
+ - test/fixtures.rb
112
+ - test/mocks/fake_response.rb
113
+ - test/remote/acl_test.rb
114
+ - test/remote/test_file.data
115
+ - test/remote/bucket_test.rb
116
+ - test/remote/logging_test.rb
117
+ - test/remote/test_helper.rb
118
+ - test/remote/object_test.rb
119
+ - test/object_test.rb
120
+ - test/connection_test.rb
121
+ - test/extensions_test.rb
122
+ - test/response_test.rb
123
+ - test/parsing_test.rb
124
+ - README
125
+ - COPYING
126
+ - INSTALL
127
+ homepage: https://github.com/mangege/aliyun-oss-sdk-for-ruby
128
+ licenses: []
129
+ post_install_message:
130
+ rdoc_options:
131
+ - --title
132
+ - Aliyun::OSS -- Support for Aliyun OSS's REST api
133
+ - --main
134
+ - README
135
+ - --line-numbers
136
+ - --inline-source
137
+ require_paths:
138
+ - lib
139
+ required_ruby_version: !ruby/object:Gem::Requirement
140
+ none: false
141
+ requirements:
142
+ - - ! '>='
143
+ - !ruby/object:Gem::Version
144
+ version: '0'
145
+ required_rubygems_version: !ruby/object:Gem::Requirement
146
+ none: false
147
+ requirements:
148
+ - - ! '>='
149
+ - !ruby/object:Gem::Version
150
+ version: '0'
151
+ requirements: []
152
+ rubyforge_project:
153
+ rubygems_version: 1.8.24
154
+ signing_key:
155
+ specification_version: 3
156
+ summary: Client library for Aliyun's Simple Storage Service's REST API
157
+ test_files:
158
+ - test/acl_test.rb
159
+ - test/bucket_test.rb
160
+ - test/base_test.rb
161
+ - test/logging_test.rb
162
+ - test/authentication_test.rb
163
+ - test/service_test.rb
164
+ - test/error_test.rb
165
+ - test/fixtures/logs.yml
166
+ - test/fixtures/policies.yml
167
+ - test/fixtures/buckets.yml
168
+ - test/fixtures/errors.yml
169
+ - test/fixtures/headers.yml
170
+ - test/fixtures/logging.yml
171
+ - test/fixtures/loglines.yml
172
+ - test/test_helper.rb
173
+ - test/fixtures.rb
174
+ - test/mocks/fake_response.rb
175
+ - test/remote/acl_test.rb
176
+ - test/remote/test_file.data
177
+ - test/remote/bucket_test.rb
178
+ - test/remote/logging_test.rb
179
+ - test/remote/test_helper.rb
180
+ - test/remote/object_test.rb
181
+ - test/object_test.rb
182
+ - test/connection_test.rb
183
+ - test/extensions_test.rb
184
+ - test/response_test.rb
185
+ - test/parsing_test.rb