s33r 0.2 → 0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/s3cli.rb +25 -16
- data/html/classes/MIME.html +120 -0
- data/html/classes/MIME/InvalidContentType.html +119 -0
- data/html/classes/MIME/Type.html +1173 -0
- data/html/classes/MIME/Types.html +566 -0
- data/html/classes/Net.html +108 -0
- data/html/classes/Net/HTTPGenericRequest.html +233 -0
- data/html/classes/Net/HTTPResponse.html +242 -0
- data/html/classes/S33r.html +743 -0
- data/html/classes/S33r/BucketListing.html +372 -0
- data/html/classes/S33r/Client.html +981 -0
- data/html/classes/S33r/NamedBucket.html +620 -0
- data/html/classes/S33r/S33rException.html +118 -0
- data/html/classes/S33r/S33rException/BucketListingMaxKeysError.html +111 -0
- data/html/classes/S33r/S33rException/InvalidBucketListing.html +111 -0
- data/html/classes/S33r/S33rException/MalformedBucketName.html +111 -0
- data/html/classes/S33r/S33rException/MethodNotAvailable.html +111 -0
- data/html/classes/S33r/S33rException/MissingRequiredHeaders.html +111 -0
- data/html/classes/S33r/S33rException/MissingResource.html +111 -0
- data/html/classes/S33r/S33rException/UnsupportedCannedACL.html +111 -0
- data/html/classes/S33r/S33rException/UnsupportedHTTPMethod.html +111 -0
- data/html/classes/S33r/S3Object.html +307 -0
- data/html/classes/S33r/S3User.html +171 -0
- data/html/classes/S33r/Sync.html +151 -0
- data/html/classes/XML.html +200 -0
- data/html/classes/XML/Document.html +125 -0
- data/html/classes/XML/Node.html +124 -0
- data/html/created.rid +1 -0
- data/html/files/CHANGELOG.html +101 -0
- data/html/files/MIT-LICENSE.html +129 -0
- data/html/files/README_txt.html +209 -0
- data/html/files/lib/s33r/bucket_listing_rb.html +116 -0
- data/html/files/lib/s33r/client_rb.html +110 -0
- data/html/files/lib/s33r/core_rb.html +113 -0
- data/html/files/lib/s33r/libxml_extensions_rb.html +107 -0
- data/html/files/lib/s33r/mimetypes_rb.html +120 -0
- data/html/files/lib/s33r/named_bucket_rb.html +101 -0
- data/html/files/lib/s33r/s33r_exception_rb.html +101 -0
- data/html/files/lib/s33r/s33r_http_rb.html +108 -0
- data/html/files/lib/s33r/sync_rb.html +101 -0
- data/html/files/lib/s33r_rb.html +101 -0
- data/html/fr_class_index.html +52 -0
- data/html/fr_file_index.html +39 -0
- data/html/fr_method_index.html +126 -0
- data/html/index.html +24 -0
- data/html/rdoc-style.css +208 -0
- data/lib/s33r/bucket_listing.rb +69 -60
- data/lib/s33r/client.rb +150 -73
- data/lib/s33r/core.rb +56 -44
- data/lib/s33r/libxml_extensions.rb +10 -5
- data/lib/s33r/mimetypes.rb +3 -2
- data/lib/s33r/named_bucket.rb +89 -24
- data/lib/s33r/{s3_exception.rb → s33r_exception.rb} +2 -2
- data/lib/s33r/{net_http_overrides.rb → s33r_http.rb} +29 -21
- data/lib/s33r/sync.rb +4 -2
- data/test/cases/spec_bucket_listing.rb +10 -13
- data/test/cases/spec_client.rb +65 -0
- data/test/cases/spec_core.rb +16 -11
- data/test/cases/spec_namedbucket.rb +32 -0
- data/test/cases/spec_sync.rb +6 -5
- data/test/cases/spec_xml.rb +1 -1
- data/test/files/client_config.yml +6 -0
- data/test/files/namedbucket_config.yml +12 -0
- data/test/{s3_test_constants.rb → test_setup.rb} +7 -6
- metadata +63 -11
- data/LICENSE.txt +0 -22
- data/MIT-LICENSE +0 -21
- data/README.txt +0 -19
- data/bin/config.yml +0 -5
- data/test/cases/unit_client.rb +0 -40
- data/test/cases/unit_named_bucket.rb +0 -12
data/lib/s33r/sync.rb
CHANGED
@@ -1,7 +1,9 @@
|
|
1
|
-
module
|
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.
|
2
4
|
module Sync
|
3
5
|
|
4
|
-
#
|
6
|
+
# Get the MD5 checksum for a file (comparable to the ETag on S3 objects).
|
5
7
|
def md5sum(filename)
|
6
8
|
f = File.open(filename).binmode
|
7
9
|
OpenSSL::Digest::MD5.hexdigest(f.read)
|
@@ -1,8 +1,8 @@
|
|
1
1
|
base = File.dirname(__FILE__)
|
2
|
-
require base + '/../
|
2
|
+
require base + '/../test_setup'
|
3
3
|
require 'set'
|
4
4
|
|
5
|
-
context '
|
5
|
+
context 'S33r bucket listing' do
|
6
6
|
setup do
|
7
7
|
xml_file = File.join(base, '../files/bucket_listing.xml')
|
8
8
|
@with_bucket_listing_xml = File.open(xml_file) { |f| f.read }
|
@@ -12,6 +12,7 @@ context 'S3 bucket listing' do
|
|
12
12
|
@with_empty_bucket_listing_xml = File.open(xml_file3) { |f| f.read }
|
13
13
|
xml_file4 = File.join(base, '../files/bucket_listing_broken.xml')
|
14
14
|
@with_broken_bucket_listing_xml = File.open(xml_file4) { |f| f.read }
|
15
|
+
|
15
16
|
@bucket_listing = BucketListing.new(@with_bucket_listing_xml)
|
16
17
|
@bucket_properties = %w(name prefix marker max_keys is_truncated)
|
17
18
|
@bucket_property_setters = @bucket_properties.map { |prop| prop + "=" }
|
@@ -22,21 +23,17 @@ context 'S3 bucket listing' do
|
|
22
23
|
end
|
23
24
|
|
24
25
|
specify 'cannot be created from invalid XML' do
|
25
|
-
lambda { BucketListing.new(nil) }.should.raise
|
26
|
+
lambda { BucketListing.new(nil) }.should.raise S33rException::InvalidBucketListing
|
26
27
|
end
|
27
28
|
|
28
29
|
specify 'should recover gracefully from broken bucket listing XML' do
|
29
|
-
lambda { BucketListing.new(@with_broken_bucket_listing_xml) }.should.raise
|
30
|
+
lambda { BucketListing.new(@with_broken_bucket_listing_xml) }.should.raise S33rException::InvalidBucketListing
|
30
31
|
end
|
31
32
|
|
32
33
|
specify 'should cope if bucket is empty (i.e. no <Contents> elements)' do
|
33
34
|
@bucket_listing.set_listing_xml(@with_empty_bucket_listing_xml)
|
34
35
|
end
|
35
36
|
|
36
|
-
specify 'can return the raw XML used to initialise it' do
|
37
|
-
@bucket_listing.listing_xml.should.equal(@with_bucket_listing_xml)
|
38
|
-
end
|
39
|
-
|
40
37
|
specify 'can have the bucket listing XML reset' do
|
41
38
|
@bucket_listing.should.respond_to :set_listing_xml
|
42
39
|
end
|
@@ -82,11 +79,11 @@ context 'S3 bucket listing' do
|
|
82
79
|
end
|
83
80
|
|
84
81
|
specify 'should be able to build a full representation given full object XML from GET on resource key' do
|
85
|
-
|
82
|
+
todo
|
86
83
|
end
|
87
84
|
|
88
85
|
specify 'should provide easy access to <CommonPrefixes> elements as a hash' do
|
89
|
-
|
86
|
+
todo
|
90
87
|
end
|
91
88
|
end
|
92
89
|
|
@@ -112,14 +109,14 @@ context 'S3 object' do
|
|
112
109
|
end
|
113
110
|
|
114
111
|
specify 'can be associated with a NamedBucket' do
|
115
|
-
|
112
|
+
todo
|
116
113
|
end
|
117
114
|
|
118
115
|
specify 'can be saved by proxing through the NamedBucket it is associated with' do
|
119
|
-
|
116
|
+
todo
|
120
117
|
end
|
121
118
|
|
122
119
|
specify 'cannot be saved unless associated with a NamedBucket' do
|
123
|
-
|
120
|
+
todo
|
124
121
|
end
|
125
122
|
end
|
@@ -0,0 +1,65 @@
|
|
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
|
+
@client = Client.new(Testing::ACCESS_KEY, Testing::SECRET_ACCESS_KEY, :use_ssl => false, :dump_requests => true)
|
11
|
+
@client2 = Client.new(Testing::ACCESS_KEY, Testing::SECRET_ACCESS_KEY)
|
12
|
+
@bucket = 'testingtesting'
|
13
|
+
@url = url_join('http://', HOST, @bucket)
|
14
|
+
|
15
|
+
@plain_config_file = File.join(@base, '../files/client_config.yml')
|
16
|
+
@custom_config_file = File.join(@base, '../files/namedbucket_config.yml')
|
17
|
+
|
18
|
+
xml_file = File.join(@base, '../files/bucket_listing.xml')
|
19
|
+
@bucket_listing_xml = File.open(xml_file) { |f| f.read }
|
20
|
+
|
21
|
+
listbucket_response = Net::HTTPResponse.new('1.1', '200', 'OK')
|
22
|
+
listbucket_response.body = @bucket_listing_xml
|
23
|
+
|
24
|
+
FakeWeb.register_uri(@url, :status => 200, :response => listbucket_response)
|
25
|
+
end
|
26
|
+
|
27
|
+
specify 'should return use_ssl setting correctly' do
|
28
|
+
@client.use_ssl?.should.not.be true
|
29
|
+
@client2.use_ssl?.should.be true
|
30
|
+
end
|
31
|
+
|
32
|
+
specify 'should trap max_keys too high in bucket listing request' do
|
33
|
+
lambda { @client.list_bucket('duff', :max_keys => (BUCKET_LIST_MAX_MAX_KEYS + 1)) }.should.raise \
|
34
|
+
BucketListingMaxKeysError
|
35
|
+
end
|
36
|
+
|
37
|
+
specify 'should fetch bucket listing ok' do
|
38
|
+
resp, _ = @client.list_bucket(@bucket)
|
39
|
+
resp.ok?.should.be true
|
40
|
+
end
|
41
|
+
|
42
|
+
specify 'can be initialised from plain config file' do
|
43
|
+
c = Client.init(@plain_config_file)
|
44
|
+
c.aws_access_key.should.equal 'youraccesskey'
|
45
|
+
c.aws_secret_access_key.should.equal 'yoursecretkey'
|
46
|
+
end
|
47
|
+
|
48
|
+
specify 'should be able to convert paths to keys' do
|
49
|
+
todo
|
50
|
+
end
|
51
|
+
|
52
|
+
specify 'should attach BucketListing instance to ListBucketResult response' do
|
53
|
+
todo
|
54
|
+
end
|
55
|
+
|
56
|
+
specify 'should retain leading slashes on keys when constructing request URLs' do
|
57
|
+
todo
|
58
|
+
end
|
59
|
+
|
60
|
+
specify 'should recognise custom config variables passed to configuration file loader' do
|
61
|
+
_, _, _, custom = Client.load_config(@custom_config_file)
|
62
|
+
custom[:from_email].should.equal 'you@example.com'
|
63
|
+
custom[:to_email].should.equal 'me@example.com'
|
64
|
+
end
|
65
|
+
end
|
data/test/cases/spec_core.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
|
-
|
1
|
+
base = File.dirname(__FILE__)
|
2
|
+
require File.join(base, '../test_setup')
|
2
3
|
|
3
|
-
context '
|
4
|
+
context 'S33r core' do
|
4
5
|
|
5
6
|
setup do
|
6
7
|
@for_request_method = 'PUT'
|
@@ -22,7 +23,7 @@ context 'S3 core' do
|
|
22
23
|
"text/html\nThu, 17 Nov 2005 18:49:58 GMT\nx-amz-magic:abracadabra\n" +
|
23
24
|
"x-amz-meta-author:foo@bar.com\n/quotes/nelson"
|
24
25
|
@correct_signature = "jZNOcbfWmD/A/f3hSvVzXZjM2HU="
|
25
|
-
@correct_auth_header = "AWS #{
|
26
|
+
@correct_auth_header = "AWS #{Testing::ACCESS_KEY}:#{@correct_signature}"
|
26
27
|
|
27
28
|
@with_invalid_bucket_name = '/badbucket'
|
28
29
|
@with_invalid_bucket_name2 = 'badbucket/'
|
@@ -37,23 +38,23 @@ context 'S3 core' do
|
|
37
38
|
end
|
38
39
|
|
39
40
|
specify 'should generate correct signatures' do
|
40
|
-
generate_signature(
|
41
|
+
generate_signature(Testing::SECRET_ACCESS_KEY,
|
41
42
|
@correct_canonical_string).should.equal @correct_signature
|
42
43
|
end
|
43
44
|
|
44
45
|
specify 'should generate correct auth headers' do
|
45
46
|
generate_auth_header_value(@for_request_method, @for_request_path, @for_request_headers,
|
46
|
-
|
47
|
+
Testing::ACCESS_KEY, Testing::SECRET_ACCESS_KEY).should.equal @correct_auth_header
|
47
48
|
end
|
48
49
|
|
49
50
|
specify 'should not generate auth header if bad HTTP method passed' do
|
50
51
|
lambda { generate_auth_header_value('duff', nil, nil, nil, nil) }.should.raise \
|
51
|
-
|
52
|
+
MethodNotAvailable
|
52
53
|
end
|
53
54
|
|
54
55
|
specify 'should not generate auth header if required headers missing' do
|
55
56
|
lambda { generate_auth_header_value('PUT', '/', @for_incomplete_headers,
|
56
|
-
nil, nil) }.should.raise
|
57
|
+
nil, nil) }.should.raise MissingRequiredHeaders
|
57
58
|
end
|
58
59
|
|
59
60
|
specify 'when generating auth header, should allow addition of Date and Content-Type headers' do
|
@@ -68,7 +69,7 @@ context 'S3 core' do
|
|
68
69
|
|
69
70
|
specify 'should not generate canned ACL header if invalid canned ACL supplied' do
|
70
71
|
lambda { canned_acl_header('duff') }.should.raise \
|
71
|
-
|
72
|
+
UnsupportedCannedACL
|
72
73
|
end
|
73
74
|
|
74
75
|
specify 'should correctly add canned ACL headers' do
|
@@ -91,9 +92,9 @@ context 'S3 core' do
|
|
91
92
|
|
92
93
|
specify 'should recognise invalid bucket names' do
|
93
94
|
lambda { bucket_name_valid?(@with_invalid_bucket_name) }.should.raise \
|
94
|
-
|
95
|
+
MalformedBucketName
|
95
96
|
lambda { bucket_name_valid?(@with_invalid_bucket_name2) }.should.raise \
|
96
|
-
|
97
|
+
MalformedBucketName
|
97
98
|
end
|
98
99
|
|
99
100
|
specify 'should return empty string if generating querystring with no key/value pairs' do
|
@@ -123,8 +124,12 @@ context 'S3 core' do
|
|
123
124
|
end
|
124
125
|
|
125
126
|
specify 'should generate URLs with authentication parameters' do
|
126
|
-
s3_authenticated_url(
|
127
|
+
s3_authenticated_url(Testing::ACCESS_KEY, Testing::SECRET_ACCESS_KEY, 'quotes', 'nelson', \
|
127
128
|
1141889120).should.equal @correct_authenticated_url
|
128
129
|
end
|
130
|
+
|
131
|
+
specify 'should generate correct public URLs' do
|
132
|
+
todo
|
133
|
+
end
|
129
134
|
|
130
135
|
end
|
@@ -0,0 +1,32 @@
|
|
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
|
+
end
|
12
|
+
|
13
|
+
specify 'should keep a copy of the current bucket listing inside as a property' do
|
14
|
+
todo
|
15
|
+
end
|
16
|
+
|
17
|
+
specify 'should enable prefix, marker etc. to be reset from NamedBucket and refresh wrapped bucket listing object' do
|
18
|
+
todo
|
19
|
+
end
|
20
|
+
|
21
|
+
specify 'should be able to load config from a file' do
|
22
|
+
FakeWeb.register_uri('http://s3.amazonaws.com/nobucket', :status => 200)
|
23
|
+
client = NamedBucket.init(@config_filename)
|
24
|
+
|
25
|
+
client.aws_access_key.should.equal 'youraccesskey'
|
26
|
+
client.aws_secret_access_key.should.equal 'yoursecretkey'
|
27
|
+
client.bucket_name.should.equal 'nobucket'
|
28
|
+
client.strict?.should.be false
|
29
|
+
client.public_contents?.should.be true
|
30
|
+
client.use_ssl?.should.be false
|
31
|
+
end
|
32
|
+
end
|
data/test/cases/spec_sync.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
|
-
|
1
|
+
base = File.dirname(__FILE__)
|
2
|
+
require File.join(base, '../test_setup')
|
2
3
|
|
3
|
-
context '
|
4
|
+
context 'S33r sync methods' do
|
4
5
|
setup do
|
5
6
|
@base_dir = File.dirname(__FILE__)
|
6
7
|
@text_filename = @base_dir + '/../files/textfile.txt'
|
@@ -16,14 +17,14 @@ context 'S3 sync methods' do
|
|
16
17
|
end
|
17
18
|
|
18
19
|
specify 'should be able to map a directory structure to S3 bucket keys' do
|
19
|
-
|
20
|
+
todo
|
20
21
|
end
|
21
22
|
|
22
23
|
specify 'should return an array of local files to put to S3 based on differences between MD5 checksums' do
|
23
|
-
|
24
|
+
todo
|
24
25
|
end
|
25
26
|
|
26
27
|
specify 'should convert S3 bucket keys into a "virtual" directory and file structure' do
|
27
|
-
|
28
|
+
todo
|
28
29
|
end
|
29
30
|
end
|
data/test/cases/spec_xml.rb
CHANGED
@@ -0,0 +1,12 @@
|
|
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'
|
9
|
+
## extensions used in your own program
|
10
|
+
custom:
|
11
|
+
to_email: 'me@example.com'
|
12
|
+
from_email: 'you@example.com'
|
@@ -3,18 +3,19 @@ require 'rubygems'
|
|
3
3
|
require_gem 'rspec'
|
4
4
|
|
5
5
|
require File.dirname(__FILE__) + '/../lib/s33r'
|
6
|
-
include
|
7
|
-
include
|
6
|
+
include S33r
|
7
|
+
include S33r::S33rException
|
8
|
+
include S33r::Sync
|
8
9
|
|
9
10
|
# set up some constants
|
10
|
-
module
|
11
|
+
module Testing
|
11
12
|
ACCESS_KEY = '44CF9590006BF252F707'
|
12
13
|
SECRET_ACCESS_KEY = 'OtxrzxIsfpFjA7SwPzILwy8Bw21TLhquhboDYROV'
|
13
14
|
end
|
14
15
|
|
15
|
-
# convenience for highlighting
|
16
|
-
def
|
17
|
-
fail
|
16
|
+
# convenience for highlighting tasks
|
17
|
+
def todo
|
18
|
+
fail
|
18
19
|
end
|
19
20
|
|
20
21
|
# clean newlines and tabs from XML to make comparisons easier
|
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.0
|
|
3
3
|
specification_version: 1
|
4
4
|
name: s33r
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: "0.
|
7
|
-
date: 2006-
|
6
|
+
version: "0.3"
|
7
|
+
date: 2006-09-26 00:00:00 +01:00
|
8
8
|
summary: A library for accessing Amazon S3
|
9
9
|
require_paths:
|
10
10
|
- lib
|
@@ -30,21 +30,20 @@ authors:
|
|
30
30
|
- Elliot Smith
|
31
31
|
files:
|
32
32
|
- bin/s3cli.rb
|
33
|
-
- bin/config.yml
|
34
33
|
- lib/s33r
|
35
34
|
- lib/s33r.rb
|
36
35
|
- lib/s33r/sync.rb
|
37
36
|
- lib/s33r/client.rb
|
38
37
|
- lib/s33r/mimetypes.rb
|
39
|
-
- lib/s33r/
|
38
|
+
- lib/s33r/s33r_http.rb
|
40
39
|
- lib/s33r/bucket_listing.rb
|
41
|
-
- lib/s33r/s3_exception.rb
|
42
40
|
- lib/s33r/core.rb
|
43
41
|
- lib/s33r/named_bucket.rb
|
44
42
|
- lib/s33r/libxml_extensions.rb
|
43
|
+
- lib/s33r/s33r_exception.rb
|
45
44
|
- test/files
|
46
45
|
- test/test_bucket_setup.rb
|
47
|
-
- test/
|
46
|
+
- test/test_setup.rb
|
48
47
|
- test/cases
|
49
48
|
- test/files/wave.jpg
|
50
49
|
- test/files/textfile.txt
|
@@ -53,15 +52,68 @@ files:
|
|
53
52
|
- test/files/bucket_listing_broken.xml
|
54
53
|
- test/files/bucket_listing2.xml
|
55
54
|
- test/files/bucket_listing3.xml
|
55
|
+
- test/files/namedbucket_config.yml
|
56
|
+
- test/files/client_config.yml
|
56
57
|
- test/cases/spec_core.rb
|
57
58
|
- test/cases/spec_sync.rb
|
58
|
-
- test/cases/unit_client.rb
|
59
59
|
- test/cases/spec_bucket_listing.rb
|
60
|
-
- test/cases/unit_named_bucket.rb
|
61
60
|
- test/cases/spec_xml.rb
|
62
|
-
-
|
63
|
-
-
|
64
|
-
-
|
61
|
+
- test/cases/spec_client.rb
|
62
|
+
- test/cases/spec_namedbucket.rb
|
63
|
+
- html/created.rid
|
64
|
+
- html/rdoc-style.css
|
65
|
+
- html/files
|
66
|
+
- html/classes
|
67
|
+
- html/fr_file_index.html
|
68
|
+
- html/fr_class_index.html
|
69
|
+
- html/fr_method_index.html
|
70
|
+
- html/index.html
|
71
|
+
- html/files/README_txt.html
|
72
|
+
- html/files/MIT-LICENSE.html
|
73
|
+
- html/files/CHANGELOG.html
|
74
|
+
- html/files/lib
|
75
|
+
- html/files/lib/s33r_rb.html
|
76
|
+
- html/files/lib/s33r
|
77
|
+
- html/files/lib/s33r/sync_rb.html
|
78
|
+
- html/files/lib/s33r/client_rb.html
|
79
|
+
- html/files/lib/s33r/mimetypes_rb.html
|
80
|
+
- html/files/lib/s33r/s33r_http_rb.html
|
81
|
+
- html/files/lib/s33r/bucket_listing_rb.html
|
82
|
+
- html/files/lib/s33r/core_rb.html
|
83
|
+
- html/files/lib/s33r/named_bucket_rb.html
|
84
|
+
- html/files/lib/s33r/libxml_extensions_rb.html
|
85
|
+
- html/files/lib/s33r/s33r_exception_rb.html
|
86
|
+
- html/classes/XML.html
|
87
|
+
- html/classes/XML
|
88
|
+
- html/classes/Net.html
|
89
|
+
- html/classes/Net
|
90
|
+
- html/classes/MIME.html
|
91
|
+
- html/classes/MIME
|
92
|
+
- html/classes/S33r.html
|
93
|
+
- html/classes/S33r
|
94
|
+
- html/classes/XML/Node.html
|
95
|
+
- html/classes/XML/Document.html
|
96
|
+
- html/classes/Net/HTTPGenericRequest.html
|
97
|
+
- html/classes/Net/HTTPResponse.html
|
98
|
+
- html/classes/MIME/Types.html
|
99
|
+
- html/classes/MIME/InvalidContentType.html
|
100
|
+
- html/classes/MIME/Type.html
|
101
|
+
- html/classes/S33r/S33rException.html
|
102
|
+
- html/classes/S33r/S33rException
|
103
|
+
- html/classes/S33r/Sync.html
|
104
|
+
- html/classes/S33r/S3User.html
|
105
|
+
- html/classes/S33r/S3Object.html
|
106
|
+
- html/classes/S33r/NamedBucket.html
|
107
|
+
- html/classes/S33r/BucketListing.html
|
108
|
+
- html/classes/S33r/Client.html
|
109
|
+
- html/classes/S33r/S33rException/MissingResource.html
|
110
|
+
- html/classes/S33r/S33rException/InvalidBucketListing.html
|
111
|
+
- html/classes/S33r/S33rException/BucketListingMaxKeysError.html
|
112
|
+
- html/classes/S33r/S33rException/MalformedBucketName.html
|
113
|
+
- html/classes/S33r/S33rException/MissingRequiredHeaders.html
|
114
|
+
- html/classes/S33r/S33rException/MethodNotAvailable.html
|
115
|
+
- html/classes/S33r/S33rException/UnsupportedCannedACL.html
|
116
|
+
- html/classes/S33r/S33rException/UnsupportedHTTPMethod.html
|
65
117
|
test_files: []
|
66
118
|
|
67
119
|
rdoc_options: []
|