s33r 0.4.2 → 0.5

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.
Files changed (114) hide show
  1. data/examples/cli/instant_download_server.rb +88 -0
  2. data/examples/cli/s3cli.rb +31 -52
  3. data/examples/cli/simple.rb +16 -6
  4. data/examples/fores33r/app/controllers/browser_controller.rb +12 -10
  5. data/examples/fores33r/app/helpers/application_helper.rb +2 -1
  6. data/examples/fores33r/app/views/browser/_upload.rhtml +1 -1
  7. data/examples/fores33r/app/views/browser/index.rhtml +4 -4
  8. data/examples/fores33r/config/environment.rb +5 -3
  9. data/examples/fores33r/log/development.log +2259 -0
  10. data/examples/fores33r/log/mongrel.log +59 -0
  11. data/examples/s3.yaml +2 -6
  12. data/lib/s33r/bucket.rb +103 -0
  13. data/lib/s33r/bucket_listing.rb +33 -76
  14. data/lib/s33r/client.rb +305 -446
  15. data/lib/s33r/networking.rb +197 -0
  16. data/lib/s33r/s33r_exception.rb +29 -18
  17. data/lib/s33r/s33r_http.rb +36 -18
  18. data/lib/s33r/s3_acl.rb +32 -52
  19. data/lib/s33r/s3_logging.rb +117 -0
  20. data/lib/s33r/s3_obj.rb +124 -69
  21. data/lib/s33r/utility.rb +447 -0
  22. data/test/cases/spec_acl.rb +10 -40
  23. data/test/cases/spec_bucket_listing.rb +12 -32
  24. data/test/cases/spec_logging.rb +47 -0
  25. data/test/cases/spec_networking.rb +11 -0
  26. data/test/cases/spec_s3_object.rb +44 -5
  27. data/test/cases/spec_utility.rb +264 -0
  28. data/test/files/acl.xml +0 -6
  29. data/test/files/config.yaml +5 -0
  30. data/test/files/logging_status_disabled.xml +3 -0
  31. data/test/files/logging_status_enabled.xml +7 -0
  32. data/test/test_setup.rb +7 -2
  33. metadata +16 -94
  34. data/examples/cli/acl_x.rb +0 -41
  35. data/examples/cli/logging_x.rb +0 -20
  36. data/examples/fores33r/README +0 -183
  37. data/html/classes/MIME.html +0 -120
  38. data/html/classes/MIME/InvalidContentType.html +0 -119
  39. data/html/classes/MIME/Type.html +0 -1173
  40. data/html/classes/MIME/Types.html +0 -566
  41. data/html/classes/Net.html +0 -108
  42. data/html/classes/Net/HTTPGenericRequest.html +0 -233
  43. data/html/classes/Net/HTTPResponse.html +0 -271
  44. data/html/classes/S33r.html +0 -986
  45. data/html/classes/S33r/BucketListing.html +0 -434
  46. data/html/classes/S33r/Client.html +0 -1575
  47. data/html/classes/S33r/LoggingResource.html +0 -222
  48. data/html/classes/S33r/NamedBucket.html +0 -693
  49. data/html/classes/S33r/OrderlyXmlMarkup.html +0 -165
  50. data/html/classes/S33r/S33rException.html +0 -124
  51. data/html/classes/S33r/S33rException/BucketListingMaxKeysError.html +0 -111
  52. data/html/classes/S33r/S33rException/BucketNotLogTargetable.html +0 -119
  53. data/html/classes/S33r/S33rException/InvalidBucketListing.html +0 -111
  54. data/html/classes/S33r/S33rException/InvalidPermission.html +0 -111
  55. data/html/classes/S33r/S33rException/InvalidS3GroupType.html +0 -111
  56. data/html/classes/S33r/S33rException/MalformedBucketName.html +0 -111
  57. data/html/classes/S33r/S33rException/MethodNotAvailable.html +0 -111
  58. data/html/classes/S33r/S33rException/MissingBucketName.html +0 -111
  59. data/html/classes/S33r/S33rException/MissingRequiredHeaders.html +0 -111
  60. data/html/classes/S33r/S33rException/MissingResource.html +0 -111
  61. data/html/classes/S33r/S33rException/S3FallenOver.html +0 -111
  62. data/html/classes/S33r/S33rException/TryingToPutEmptyResource.html +0 -117
  63. data/html/classes/S33r/S33rException/UnsupportedCannedACL.html +0 -111
  64. data/html/classes/S33r/S33rException/UnsupportedHTTPMethod.html +0 -111
  65. data/html/classes/S33r/S3ACL.html +0 -125
  66. data/html/classes/S33r/S3ACL/ACLDoc.html +0 -521
  67. data/html/classes/S33r/S3ACL/AmazonCustomer.html +0 -168
  68. data/html/classes/S33r/S3ACL/CanonicalUser.html +0 -212
  69. data/html/classes/S33r/S3ACL/Grant.html +0 -403
  70. data/html/classes/S33r/S3ACL/Grantee.html +0 -239
  71. data/html/classes/S33r/S3ACL/Group.html +0 -178
  72. data/html/classes/S33r/S3Object.html +0 -618
  73. data/html/classes/S33r/Sync.html +0 -152
  74. data/html/classes/XML.html +0 -202
  75. data/html/classes/XML/Document.html +0 -125
  76. data/html/classes/XML/Node.html +0 -124
  77. data/html/created.rid +0 -1
  78. data/html/files/CHANGELOG.html +0 -107
  79. data/html/files/MIT-LICENSE.html +0 -129
  80. data/html/files/README_txt.html +0 -259
  81. data/html/files/lib/s33r/bucket_listing_rb.html +0 -101
  82. data/html/files/lib/s33r/builder_rb.html +0 -108
  83. data/html/files/lib/s33r/client_rb.html +0 -111
  84. data/html/files/lib/s33r/core_rb.html +0 -113
  85. data/html/files/lib/s33r/libxml_extensions_rb.html +0 -101
  86. data/html/files/lib/s33r/libxml_loader_rb.html +0 -109
  87. data/html/files/lib/s33r/logging_rb.html +0 -108
  88. data/html/files/lib/s33r/mimetypes_rb.html +0 -120
  89. data/html/files/lib/s33r/named_bucket_rb.html +0 -101
  90. data/html/files/lib/s33r/s33r_exception_rb.html +0 -101
  91. data/html/files/lib/s33r/s33r_http_rb.html +0 -108
  92. data/html/files/lib/s33r/s3_acl_rb.html +0 -108
  93. data/html/files/lib/s33r/s3_obj_rb.html +0 -108
  94. data/html/files/lib/s33r/sync_rb.html +0 -101
  95. data/html/files/lib/s33r_rb.html +0 -101
  96. data/html/fr_class_index.html +0 -66
  97. data/html/fr_file_index.html +0 -44
  98. data/html/fr_method_index.html +0 -183
  99. data/html/index.html +0 -24
  100. data/html/rdoc-style.css +0 -208
  101. data/lib/s33r/core.rb +0 -296
  102. data/lib/s33r/logging.rb +0 -43
  103. data/lib/s33r/named_bucket.rb +0 -148
  104. data/lib/s33r/sync.rb +0 -13
  105. data/test/cases/spec_all_buckets.rb +0 -28
  106. data/test/cases/spec_client.rb +0 -101
  107. data/test/cases/spec_core.rb +0 -128
  108. data/test/cases/spec_namedbucket.rb +0 -46
  109. data/test/cases/spec_sync.rb +0 -34
  110. data/test/files/all_buckets.xml +0 -21
  111. data/test/files/client_config.yml +0 -5
  112. data/test/files/namedbucket_config.yml +0 -8
  113. data/test/files/namedbucket_config2.yml +0 -8
  114. data/test/test_bucket_setup.rb +0 -41
data/lib/s33r/sync.rb DELETED
@@ -1,13 +0,0 @@
1
- module S33r
2
- # Woefully incomplete module for performing sync operations.
3
- # Aim is to enable s33r to compare files on the filesystem to S3 objects.
4
- module Sync
5
-
6
- # Get the MD5 checksum for a local file (comparable to the ETag on S3 objects).
7
- def md5sum(filename)
8
- f = File.open(filename).binmode
9
- OpenSSL::Digest::MD5.hexdigest(f.read)
10
- end
11
-
12
- end
13
- end
@@ -1,28 +0,0 @@
1
- base = File.dirname(__FILE__)
2
- require base + '/../test_setup'
3
-
4
- require 'rubygems'
5
- require_gem 'FakeWeb'
6
-
7
- context 'S33r list of all buckets' do
8
- setup do
9
- @client = Client.new(Testing::ACCESS_KEY, Testing::SECRET_ACCESS_KEY, :use_ssl => false, :dump_requests => true)
10
-
11
- xml_file = File.join(File.dirname(__FILE__), '../files/all_buckets.xml')
12
- @list_all_buckets_result = File.open(xml_file) { |f| f.read }
13
-
14
- listallbuckets_response = Net::HTTPResponse.new('1.1', '200', 'OK')
15
- listallbuckets_response.body = @list_all_buckets_result
16
-
17
- base_url = s3_url('/')
18
- FakeWeb.register_uri(base_url, :status => 200, :response => listallbuckets_response)
19
- FakeWeb.register_uri(base_url + 'elliotsmith-backup', :status => 200)
20
- FakeWeb.register_uri(base_url + 'elliotsmith-helloworld', :status => 200)
21
- FakeWeb.register_uri(base_url + 'elliotsmith-herbert', :status => 200)
22
- end
23
-
24
- specify 'should parse ListAllMyBucketsResult and get right number of buckets' do
25
- buckets = @client.list_buckets
26
- buckets.size.should.be 3
27
- end
28
- end
@@ -1,101 +0,0 @@
1
- base = File.dirname(__FILE__)
2
- require File.join(base, '../test_setup')
3
-
4
- require 'rubygems'
5
- require_gem 'FakeWeb'
6
-
7
- context 'S33r Client' do
8
- setup do
9
- @base = File.dirname(__FILE__)
10
-
11
- # client for testing: one without SSL, one with
12
- @client = Client.new(Testing::ACCESS_KEY, Testing::SECRET_ACCESS_KEY, :use_ssl => false, :dump_requests => true)
13
- @client2 = Client.new(Testing::ACCESS_KEY, Testing::SECRET_ACCESS_KEY)
14
-
15
- # test config. files
16
- @plain_config_file = File.join(@base, '../files/client_config.yml')
17
- @custom_config_file = File.join(@base, '../files/namedbucket_config.yml')
18
-
19
- # OK bucket with attached response
20
- @bucket = 'testingtesting'
21
- @url = s3_public_url(@bucket)
22
- xml_file = File.join(@base, '../files/bucket_listing.xml')
23
- @bucket_listing_xml = File.open(xml_file) { |f| f.read }
24
- listbucket_response = Net::HTTPResponse.new('1.1', '200', 'OK')
25
- listbucket_response.body = @bucket_listing_xml
26
- FakeWeb.register_uri(@url, :status => 200, :response => listbucket_response)
27
-
28
- # broken bucket: for testing behaviour if S3 is unavailable
29
- @bucket2 = 's3broken'
30
- @url2 = s3_public_url(@bucket2)
31
- FakeWeb.register_uri(@url2, :status => 503)
32
-
33
- # OK resource
34
- @resource_key = 'iamhere'
35
- @url3 = s3_public_url(@bucket, @resource_key)
36
- FakeWeb.register_uri(@url3, :status => 200)
37
-
38
- # missing resource
39
- @missing_resource = 'iammissing'
40
- @url4 = s3_public_url(@bucket, @missing_resource)
41
- FakeWeb.register_uri(@url4, :status => 404)
42
-
43
- # missing bucket
44
- @missing_bucket = 'iamamissingbucket'
45
- @url5 = s3_public_url(@missing_bucket)
46
- FakeWeb.register_uri(@url5, :status => 404)
47
- end
48
-
49
- specify 'should return use_ssl setting correctly' do
50
- @client.use_ssl.should.not.be true
51
- @client2.use_ssl.should.be true
52
- end
53
-
54
- specify 'should trap max_keys too high in bucket listing request' do
55
- lambda { @client.list_bucket('duff', :max_keys => (BUCKET_LIST_MAX_MAX_KEYS + 1)) }.should.raise \
56
- BucketListingMaxKeysError
57
- end
58
-
59
- specify 'should fetch bucket listing ok' do
60
- resp, listing = @client.list_bucket(@bucket)
61
- resp.ok?.should.be true
62
- end
63
-
64
- # NB tests for content of BucketListing in depth are done in spec_bucket_listing
65
- specify 'should attach BucketListing instance to ListBucketResult responses' do
66
- resp, listing = @client.list_bucket(@bucket)
67
- listing.should.be.an_instance_of BucketListing
68
- listing.contents.size.should.be 10
69
- end
70
-
71
- specify 'can be initialised from plain config file' do
72
- c = Client.init(@plain_config_file)
73
- c.aws_access_key.should.equal 'youraccesskey'
74
- c.aws_secret_access_key.should.equal 'yoursecretkey'
75
- end
76
-
77
- specify 'should retain leading slashes on keys when constructing request URLs' do
78
- todo
79
- end
80
-
81
- specify 'should raise an error if S3 is down' do
82
- lambda { @client.list_bucket(@bucket2) }.should.raise S3FallenOver
83
- end
84
-
85
- specify 'should return S3Object with metadata properties when getting a resource key' do
86
- todo
87
- end
88
-
89
- specify 'should identify whether resources exist' do
90
- # resource_exists? should work just with a bucket name
91
- @client.resource_exists?(@bucket).should.be true
92
-
93
- # these ones exist
94
- @client.bucket_exists?(@bucket).should.be true
95
- @client.resource_exists?(@bucket, @resource_key).should.be true
96
-
97
- # the missing ones
98
- @client.resource_exists?(@bucket, @missing_resource).should.be false
99
- @client.bucket_exists?(@missing_bucket).should.be false
100
- end
101
- end
@@ -1,128 +0,0 @@
1
- base = File.dirname(__FILE__)
2
- require File.join(base, '../test_setup')
3
-
4
- context 'S33r core' do
5
-
6
- setup do
7
- @for_request_method = 'PUT'
8
- @for_request_path = "/quotes/nelson"
9
- @for_request_headers = {
10
- "Content-Md5" => "c8fdb181845a4ca6b8fec737b3581d76",
11
- "Content-Type" => "text/html",
12
- "Date" => "Thu, 17 Nov 2005 18:49:58 GMT",
13
- "X-Amz-Meta-Author" => "foo@bar.com",
14
- "X-Amz-Magic" => "abracadabra"
15
- }
16
-
17
- # create broken request header hash
18
- @for_incomplete_headers = @for_request_headers.clone.delete_if do |key,value|
19
- 'Content-Type' == key or 'Date' == key
20
- end
21
-
22
- @correct_canonical_string = "PUT\nc8fdb181845a4ca6b8fec737b3581d76\n" +
23
- "text/html\nThu, 17 Nov 2005 18:49:58 GMT\nx-amz-magic:abracadabra\n" +
24
- "x-amz-meta-author:foo@bar.com\n/quotes/nelson"
25
- @correct_signature = "jZNOcbfWmD/A/f3hSvVzXZjM2HU="
26
- @correct_auth_header = "AWS #{Testing::ACCESS_KEY}:#{@correct_signature}"
27
-
28
- @with_invalid_bucket_name = '/badbucket'
29
- @with_invalid_bucket_name2 = 'badbucket/'
30
-
31
- @correct_authenticated_url = "http://s3.amazonaws.com/quotes/nelson?Signature=vjbyPxybdZaNmGa%2ByT272YEAiv4%3D&"+
32
- "AWSAccessKeyId=44CF9590006BF252F707&Expires=1141889120"
33
-
34
- @correct_public_url = "http://s3.amazonaws.com/quotes/nelson"
35
- end
36
-
37
- specify 'should generate correct canonical strings' do
38
- generate_canonical_string(@for_request_method, @for_request_path,
39
- @for_request_headers).should.equal @correct_canonical_string
40
- end
41
-
42
- specify 'should generate correct signatures' do
43
- generate_signature(Testing::SECRET_ACCESS_KEY,
44
- @correct_canonical_string).should.equal @correct_signature
45
- end
46
-
47
- specify 'should generate correct auth headers' do
48
- generate_auth_header_value(@for_request_method, @for_request_path, @for_request_headers,
49
- Testing::ACCESS_KEY, Testing::SECRET_ACCESS_KEY).should.equal @correct_auth_header
50
- end
51
-
52
- specify 'should not generate auth header if bad HTTP method passed' do
53
- lambda { generate_auth_header_value('duff', nil, nil, nil, nil) }.should.raise \
54
- MethodNotAvailable
55
- end
56
-
57
- specify 'should not generate auth header if required headers missing' do
58
- lambda { generate_auth_header_value('PUT', '/', @for_incomplete_headers,
59
- nil, nil) }.should.raise MissingRequiredHeaders
60
- end
61
-
62
- specify 'when generating auth header, should allow addition of Date and Content-Type headers' do
63
- now = Time.now
64
-
65
- fixed_headers = add_default_headers(@for_incomplete_headers, :date => now,
66
- :content_type => 'text/html')
67
-
68
- fixed_headers['Date'].should.equal now.httpdate
69
- fixed_headers['Content-Type'].should.equal 'text/html'
70
- end
71
-
72
- specify 'should not generate canned ACL header if invalid canned ACL supplied' do
73
- lambda { canned_acl_header('duff') }.should.raise \
74
- UnsupportedCannedACL
75
- end
76
-
77
- specify 'should correctly add canned ACL headers' do
78
- new_headers = canned_acl_header('private', { 'Content-Type' => 'text/html' })
79
- new_headers.should.have(2).keys
80
- new_headers.keys.should.include 'Content-Type'
81
- new_headers.keys.should.include 'x-amz-acl'
82
- new_headers['x-amz-acl'].should.equal 'private'
83
- end
84
-
85
- specify 'should set sensible defaults for missing Content-Type and Date headers' do
86
- fixed_headers = add_default_headers(@for_incomplete_headers)
87
- fixed_headers['Content-Type'].should.equal ''
88
- fixed_headers.include?('Date').should.not.be nil
89
- end
90
-
91
- specify 'should default to text/plain mimetype for unknown file types' do
92
- guess_mime_type('hello.madeup').should.equal('text/plain')
93
- end
94
-
95
- specify 'should recognise invalid bucket names' do
96
- lambda { bucket_name_valid?(@with_invalid_bucket_name) }.should.raise \
97
- MalformedBucketName
98
- lambda { bucket_name_valid?(@with_invalid_bucket_name2) }.should.raise \
99
- MalformedBucketName
100
- end
101
-
102
- specify 'should return empty string if generating querystring with no key/value pairs' do
103
- generate_querystring({}).should_equal ''
104
- end
105
-
106
- specify 'should correctly format querystring key/value pairs' do
107
- generate_querystring({'message' => 'Hello world', 'id' => 1, 'page' => '[2,4]'}).should_equal \
108
- '?message=Hello+world&id=1&page=%5B2%2C4%5D'
109
- end
110
-
111
- specify 'should allow symbols as names for querystring variables when generating querystrings' do
112
- generate_querystring({ :prefix => '/home/ell' }).should.equal('?prefix=%2Fhome%2Fell')
113
- end
114
-
115
- specify 'should convert integers to strings when generating querystrings' do
116
- generate_querystring({ 'max-keys' => 400 }).should.equal('?max-keys=400')
117
- end
118
-
119
- specify 'should generate URLs with authentication parameters' do
120
- s3_authenticated_url(Testing::ACCESS_KEY, Testing::SECRET_ACCESS_KEY, 'quotes', 'nelson', \
121
- 1141889120).should.equal @correct_authenticated_url
122
- end
123
-
124
- specify 'should generate correct public URLs' do
125
- s3_public_url('quotes', 'nelson').should.equal @correct_public_url
126
- end
127
-
128
- end
@@ -1,46 +0,0 @@
1
- base = File.dirname(__FILE__)
2
- require File.join(base, '../test_setup')
3
-
4
- require 'rubygems'
5
- require_gem 'FakeWeb'
6
-
7
- context 'NamedBucket client' do
8
- setup do
9
- @base = File.dirname(__FILE__)
10
- @config_filename = @base + '/../files/namedbucket_config.yml'
11
- @config_filename2 = @base + '/../files/namedbucket_config2.yml'
12
- @url = s3_public_url('nobucket')
13
- end
14
-
15
- specify 'should keep a copy of the current bucket listing inside as a property' do
16
- todo
17
- end
18
-
19
- specify 'should enable prefix, marker etc. to be reset from NamedBucket and refresh wrapped bucket listing object' do
20
- todo
21
- end
22
-
23
- specify 'should enable checking for existence of a resource by key' do
24
- FakeWeb.register_uri(@url + '/existing_key', :status => 200)
25
- FakeWeb.register_uri(@url + '/broken', :status => 404)
26
- client = NamedBucket.init(@config_filename)
27
- client.key_exists?('existing_key').should.be true
28
- client.key_exists?('broken').should.be false
29
- end
30
-
31
- specify 'should be able to load config from a file' do
32
- FakeWeb.register_uri(@url, :status => 200)
33
- client = NamedBucket.init(@config_filename)
34
- client.aws_access_key.should.equal 'youraccesskey'
35
- client.aws_secret_access_key.should.equal 'yoursecretkey'
36
- client.name.should.equal 'nobucket'
37
- client.strict?.should.be false
38
- client.public_contents?.should.be true
39
- client.use_ssl.should.be false
40
- end
41
-
42
- specify 'cannot be initialised for non-existent bucket' do
43
- FakeWeb.register_uri(@url, :status => 404)
44
- lambda { client = NamedBucket.init(@config_filename2) }.should.raise MissingResource
45
- end
46
- end
@@ -1,34 +0,0 @@
1
- base = File.dirname(__FILE__)
2
- require File.join(base, '../test_setup')
3
-
4
- context 'S33r sync methods' do
5
- setup do
6
- @base_dir = File.dirname(__FILE__)
7
- @text_filename = @base_dir + '/../files/textfile.txt'
8
- @graphic_filename = @base_dir + '/../files/wave.jpg'
9
- end
10
-
11
- specify 'should return MD5 checksum for text files' do
12
- md5sum(@text_filename).should.equal('bbf560d44f092d22a30d3a562436ad8c')
13
- end
14
-
15
- specify 'should return MD5 checksum for graphic files' do
16
- md5sum(@graphic_filename).should.equal('80b669f252257eedd8a2606cb1a0df6a')
17
- end
18
-
19
- specify 'should be able to map a directory structure to S3 bucket keys' do
20
- todo
21
- end
22
-
23
- specify 'should be able to convert paths to keys' do
24
- todo
25
- end
26
-
27
- specify 'should return an array of local files to put to S3 based on differences between MD5 checksums' do
28
- todo
29
- end
30
-
31
- specify 'should convert S3 bucket keys into a "virtual" directory and file structure' do
32
- todo
33
- end
34
- end
@@ -1,21 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <ListAllMyBucketsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
3
- <Owner>
4
- <ID>56efddfead5aa65da942f156fb2 b294f44d78fd932d701331edc5fba19620fd4</ID>
5
- <DisplayName>elliotsmith3</DisplayName>
6
- </Owner>
7
- <Buckets>
8
- <Bucket>
9
- <Name>elliotsmith-backup</Name>
10
- <CreationDate>2006-07-2 0T13:25:47.000Z</CreationDate>
11
- </Bucket>
12
- <Bucket>
13
- <Name>elliotsmith-helloworld</Name>
14
- <CreationDate>2006-09-06T14:35:36.000Z</CreationDate>
15
- </Bucket>
16
- <Bucket>
17
- <Name>elliotsmith-herbert</Name>
18
- <CreationDate>2006-04-18T22:37:06.000Z</CreationDate>
19
- </Bucket>
20
- </Buckets>
21
- </ListAllMyBucketsResult>
@@ -1,5 +0,0 @@
1
- aws_access_key: 'youraccesskey'
2
- aws_secret_access_key: 'yoursecretkey'
3
- options:
4
- use_ssl: false
5
- dump_requests: true
@@ -1,8 +0,0 @@
1
- aws_access_key: 'youraccesskey'
2
- aws_secret_access_key: 'yoursecretkey'
3
- ## options for Client or NamedBucket instances
4
- options:
5
- strict: false
6
- public_contents: true
7
- use_ssl: false
8
- default_bucket: 'nobucket'
@@ -1,8 +0,0 @@
1
- aws_access_key: 'youraccesskey'
2
- aws_secret_access_key: 'yoursecretkey'
3
- ## options for Client or NamedBucket instances
4
- options:
5
- strict: true
6
- public_contents: true
7
- use_ssl: false
8
- default_bucket: 'nobucket'
@@ -1,41 +0,0 @@
1
- # for setting up test bucket, so can gather responses from the real S3
2
- require 'yaml'
3
- require File.dirname(__FILE__) + '/../lib/s33r.rb'
4
-
5
- config_file = '/home/ell/.s33r'
6
-
7
- options = YAML::load_file(config_file)
8
- access_key = options['access_key']
9
- secret_key = options['secret_key']
10
-
11
- bucket = 'elliotsmith-testing'
12
-
13
- def bucketeer(client, bucket)
14
- lambda do |key, text|
15
- client.put_text bucket, '/home/ell/' + key, text
16
- end
17
- end
18
-
19
- S3::Client.new(access_key, secret_key) do |client|
20
-
21
- if !client.bucket_exists?(bucket)
22
- client.create_bucket(bucket)
23
-
24
- b = bucketeer(client, bucket)
25
- b.call 'one.txt', 'one text file'
26
- b.call 'two.txt', 'two text file'
27
- b.call 'dir1/three.txt', 'three text file'
28
- b.call 'dir1/four.txt', 'four text file'
29
- b.call 'dir2/five.txt', 'five text file'
30
- b.call 'dir2/six.txt', 'six text file'
31
- b.call 'dir2/subdir21/seven.txt', 'seven text file'
32
- b.call 'dir2/subdir22/eight.txt', 'eight text file'
33
- b.call 'dir2/subdir22/subdir221/nine.txt', 'nine text file'
34
- b.call 'dir2/subdir22/subdir221/ten.txt', 'ten text file'
35
-
36
- end
37
-
38
- # p client.list_bucket(bucket, :prefix => '/home/ell/dir1').body
39
- # p client.list_bucket(bucket, :marker => '/home/ell/dir2/six.txt').body
40
- p client.list_bucket(bucket).body
41
- end