s33r 0.2 → 0.3

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 (71) hide show
  1. data/bin/s3cli.rb +25 -16
  2. data/html/classes/MIME.html +120 -0
  3. data/html/classes/MIME/InvalidContentType.html +119 -0
  4. data/html/classes/MIME/Type.html +1173 -0
  5. data/html/classes/MIME/Types.html +566 -0
  6. data/html/classes/Net.html +108 -0
  7. data/html/classes/Net/HTTPGenericRequest.html +233 -0
  8. data/html/classes/Net/HTTPResponse.html +242 -0
  9. data/html/classes/S33r.html +743 -0
  10. data/html/classes/S33r/BucketListing.html +372 -0
  11. data/html/classes/S33r/Client.html +981 -0
  12. data/html/classes/S33r/NamedBucket.html +620 -0
  13. data/html/classes/S33r/S33rException.html +118 -0
  14. data/html/classes/S33r/S33rException/BucketListingMaxKeysError.html +111 -0
  15. data/html/classes/S33r/S33rException/InvalidBucketListing.html +111 -0
  16. data/html/classes/S33r/S33rException/MalformedBucketName.html +111 -0
  17. data/html/classes/S33r/S33rException/MethodNotAvailable.html +111 -0
  18. data/html/classes/S33r/S33rException/MissingRequiredHeaders.html +111 -0
  19. data/html/classes/S33r/S33rException/MissingResource.html +111 -0
  20. data/html/classes/S33r/S33rException/UnsupportedCannedACL.html +111 -0
  21. data/html/classes/S33r/S33rException/UnsupportedHTTPMethod.html +111 -0
  22. data/html/classes/S33r/S3Object.html +307 -0
  23. data/html/classes/S33r/S3User.html +171 -0
  24. data/html/classes/S33r/Sync.html +151 -0
  25. data/html/classes/XML.html +200 -0
  26. data/html/classes/XML/Document.html +125 -0
  27. data/html/classes/XML/Node.html +124 -0
  28. data/html/created.rid +1 -0
  29. data/html/files/CHANGELOG.html +101 -0
  30. data/html/files/MIT-LICENSE.html +129 -0
  31. data/html/files/README_txt.html +209 -0
  32. data/html/files/lib/s33r/bucket_listing_rb.html +116 -0
  33. data/html/files/lib/s33r/client_rb.html +110 -0
  34. data/html/files/lib/s33r/core_rb.html +113 -0
  35. data/html/files/lib/s33r/libxml_extensions_rb.html +107 -0
  36. data/html/files/lib/s33r/mimetypes_rb.html +120 -0
  37. data/html/files/lib/s33r/named_bucket_rb.html +101 -0
  38. data/html/files/lib/s33r/s33r_exception_rb.html +101 -0
  39. data/html/files/lib/s33r/s33r_http_rb.html +108 -0
  40. data/html/files/lib/s33r/sync_rb.html +101 -0
  41. data/html/files/lib/s33r_rb.html +101 -0
  42. data/html/fr_class_index.html +52 -0
  43. data/html/fr_file_index.html +39 -0
  44. data/html/fr_method_index.html +126 -0
  45. data/html/index.html +24 -0
  46. data/html/rdoc-style.css +208 -0
  47. data/lib/s33r/bucket_listing.rb +69 -60
  48. data/lib/s33r/client.rb +150 -73
  49. data/lib/s33r/core.rb +56 -44
  50. data/lib/s33r/libxml_extensions.rb +10 -5
  51. data/lib/s33r/mimetypes.rb +3 -2
  52. data/lib/s33r/named_bucket.rb +89 -24
  53. data/lib/s33r/{s3_exception.rb → s33r_exception.rb} +2 -2
  54. data/lib/s33r/{net_http_overrides.rb → s33r_http.rb} +29 -21
  55. data/lib/s33r/sync.rb +4 -2
  56. data/test/cases/spec_bucket_listing.rb +10 -13
  57. data/test/cases/spec_client.rb +65 -0
  58. data/test/cases/spec_core.rb +16 -11
  59. data/test/cases/spec_namedbucket.rb +32 -0
  60. data/test/cases/spec_sync.rb +6 -5
  61. data/test/cases/spec_xml.rb +1 -1
  62. data/test/files/client_config.yml +6 -0
  63. data/test/files/namedbucket_config.yml +12 -0
  64. data/test/{s3_test_constants.rb → test_setup.rb} +7 -6
  65. metadata +63 -11
  66. data/LICENSE.txt +0 -22
  67. data/MIT-LICENSE +0 -21
  68. data/README.txt +0 -19
  69. data/bin/config.yml +0 -5
  70. data/test/cases/unit_client.rb +0 -40
  71. data/test/cases/unit_named_bucket.rb +0 -12
@@ -1,7 +1,9 @@
1
- module S3
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
- # get the MD5 checksum for a file (comparable to the ETag on S3 objects)
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 + '/../s3_test_constants'
2
+ require base + '/../test_setup'
3
3
  require 'set'
4
4
 
5
- context 'S3 bucket listing' do
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 S3Exception::InvalidBucketListing
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 S3Exception::InvalidBucketListing
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
- fix
82
+ todo
86
83
  end
87
84
 
88
85
  specify 'should provide easy access to <CommonPrefixes> elements as a hash' do
89
- fix
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
- fix
112
+ todo
116
113
  end
117
114
 
118
115
  specify 'can be saved by proxing through the NamedBucket it is associated with' do
119
- fix
116
+ todo
120
117
  end
121
118
 
122
119
  specify 'cannot be saved unless associated with a NamedBucket' do
123
- fix
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
@@ -1,6 +1,7 @@
1
- require File.dirname(__FILE__) + '/../s3_test_constants'
1
+ base = File.dirname(__FILE__)
2
+ require File.join(base, '../test_setup')
2
3
 
3
- context 'S3 core' do
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 #{S3Testing::ACCESS_KEY}:#{@correct_signature}"
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(S3Testing::SECRET_ACCESS_KEY,
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
- S3Testing::ACCESS_KEY, S3Testing::SECRET_ACCESS_KEY).should.equal @correct_auth_header
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
- S3Exception::MethodNotAvailable
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 S3Exception::MissingRequiredHeaders
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
- S3Exception::UnsupportedCannedACL
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
- S3Exception::MalformedBucketName
95
+ MalformedBucketName
95
96
  lambda { bucket_name_valid?(@with_invalid_bucket_name2) }.should.raise \
96
- S3Exception::MalformedBucketName
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(S3Testing::ACCESS_KEY, S3Testing::SECRET_ACCESS_KEY, 'quotes', 'nelson', \
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
@@ -1,6 +1,7 @@
1
- require File.dirname(__FILE__) + '/../s3_test_constants'
1
+ base = File.dirname(__FILE__)
2
+ require File.join(base, '../test_setup')
2
3
 
3
- context 'S3 sync methods' do
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
- fix
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
- fix
24
+ todo
24
25
  end
25
26
 
26
27
  specify 'should convert S3 bucket keys into a "virtual" directory and file structure' do
27
- fix
28
+ todo
28
29
  end
29
30
  end
@@ -1,5 +1,5 @@
1
1
  base = File.dirname(__FILE__)
2
- require File.join(base, '../s3_test_constants')
2
+ require File.join(base, '../test_setup')
3
3
 
4
4
  context 'LibXML extensions' do
5
5
  setup do
@@ -0,0 +1,6 @@
1
+ # TODO: check can init Client from basic config. file
2
+ aws_access_key: 'youraccesskey'
3
+ aws_secret_access_key: 'yoursecretkey'
4
+ options:
5
+ use_ssl: false
6
+ dump_requests: true
@@ -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 S3
7
- include S3::Sync
6
+ include S33r
7
+ include S33r::S33rException
8
+ include S33r::Sync
8
9
 
9
10
  # set up some constants
10
- module S3Testing
11
+ module Testing
11
12
  ACCESS_KEY = '44CF9590006BF252F707'
12
13
  SECRET_ACCESS_KEY = 'OtxrzxIsfpFjA7SwPzILwy8Bw21TLhquhboDYROV'
13
14
  end
14
15
 
15
- # convenience for highlighting todos
16
- def fix
17
- fail 'todo'
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.2"
7
- date: 2006-08-23 00:00:00 +01:00
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/net_http_overrides.rb
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/s3_test_constants.rb
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
- - LICENSE.txt
63
- - README.txt
64
- - MIT-LICENSE
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: []