aws-sdk 1.6.5 → 1.6.6

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.
@@ -0,0 +1,192 @@
1
+ # Copyright 2011-2012 Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License"). You
4
+ # may not use this file except in compliance with the License. A copy of
5
+ # the License is located at
6
+ #
7
+ # http://aws.amazon.com/apache2.0/
8
+ #
9
+ # or in the "license" file accompanying this file. This file is
10
+ # distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
11
+ # ANY KIND, either express or implied. See the License for the specific
12
+ # language governing permissions and limitations under the License.
13
+
14
+ module AWS
15
+ class S3
16
+
17
+ # Manages the CORS rules for a single bucket.
18
+ #
19
+ # == Getting Rules
20
+ #
21
+ # To get the CORS rules for a bucket, use the {Bucket#cors} method. This
22
+ # returns a CORSRuleCollection for the bucket. The collection is
23
+ # enumerable.
24
+ #
25
+ # # enumerating all rules for a buck
26
+ # bucket.cors.each do |rule|
27
+ # # rule is a CORSRule object
28
+ # end
29
+ #
30
+ # == Setting Rules
31
+ #
32
+ # You can set the rules for a bucket (replacing all existing rules) using
33
+ # the {#set} method.
34
+ #
35
+ # # accepts a list of one or more rules
36
+ # bucket.rules.set(rule1, rule2)
37
+ #
38
+ # # rules can be an array of rules
39
+ # bucket.rules.set(rules)
40
+ #
41
+ # # passing an empty list or array removes all rules
42
+ # bucket.rules.set([])
43
+ # bucket.rules.clear # does the same thing
44
+ #
45
+ # Each rule can be a Hash, a {CORSRule} or another {CORSRuleCollection}.
46
+ # See {Client#put_bucket_cors} for a list of keys for a rule hash.
47
+ #
48
+ # == Adding Rules
49
+ #
50
+ # Adding rules is the same as setting rules. Rules you add will be
51
+ # appended to the end of the existing list of rules.
52
+ #
53
+ # # add one or more rules
54
+ # bucket.rules.add(rules)
55
+ #
56
+ # == Deleting Rules
57
+ #
58
+ # To remove a rule, use the {#delete_if} method.
59
+ #
60
+ # # delete rules that allow access from any domain
61
+ # bucket.cors.delete_if{|rule| rule.allowed_origins.include?('*')
62
+ #
63
+ class CORSRuleCollection
64
+
65
+ include Core::Collection::Simple
66
+
67
+ # @param [Bucket] bucket
68
+ # @param [Hash] options
69
+ def initialize bucket, options = {}
70
+ @bucket = bucket
71
+ super
72
+ end
73
+
74
+ # @return [Bucket]
75
+ attr_reader :bucket
76
+
77
+ # Replaces the CORS rules attached to this bucket. You can pass
78
+ # one or more rules as an array or a list.
79
+ #
80
+ # # replace all exisitng rules with a single rule
81
+ # bucket.cors.set(
82
+ # :allowed_methods => %w(GET),
83
+ # :allowed_origins => %w(http://*.mydomain.com),
84
+ # :max_age_seconds => 3600)
85
+ #
86
+ # If you pass an empty array, all of the rules will be removed from
87
+ # the bucket.
88
+ #
89
+ # # these two lines are equivilent
90
+ # bucket.cors.clear
91
+ # bucket.cors.set([])
92
+ #
93
+ # @param [Hash,CORSRule,CORSRuleCollection] rule A list or array
94
+ # of one or more rules to set. Each rule may be a Hash, a CORSRule
95
+ # or a CORSRuleCollection.
96
+ #
97
+ # @return [nil]
98
+ #
99
+ def set *rules
100
+
101
+ raise ArgumentError, 'expected one or more rules' if rules.empty?
102
+
103
+ if rules == [[]]
104
+ self.clear
105
+ else
106
+ rules = rule_hashes(rules)
107
+ client.put_bucket_cors(:bucket_name => bucket.name, :rules => rules)
108
+ end
109
+
110
+ nil
111
+
112
+ end
113
+
114
+ # Add one or more CORS rules to this bucket.
115
+ #
116
+ # # adding a single rule as a hash
117
+ # bucket.cors.add(
118
+ # :allowed_methods => %w(GET HEAD),
119
+ # :allowed_origins => %w(*),
120
+ # :max_age_seconds => 3600)
121
+ #
122
+ # You can add multiple rules in a single call:
123
+ #
124
+ # # each rule may be a hash, CORSRule or a CORSRuleCollection,
125
+ # bucket.cors.add(rules)
126
+ #
127
+ # # alternatively you can pass a list of rules
128
+ # bucket.cors.add(rule1, rule2, ...)
129
+ #
130
+ # @param (see #set)
131
+ # @return (see #set)
132
+ def add *rules
133
+ self.set(self, *rules)
134
+ end
135
+ alias_method :create, :add
136
+
137
+ # Deletes every rule for which the block evaluates to +true+.
138
+ #
139
+ # # remove all rules that are open to the 'world'
140
+ # bucket.cors.delete_if{|rule| rule.allowed_origins.include?('*') }
141
+ #
142
+ # @yield [rule]
143
+ # @yieldparam [CORSRule] rule
144
+ # @yieldreturn [Boolean] Return +true+ for each rule you want to delete.
145
+ # @return (see #set)
146
+ def delete_if &block
147
+ rules = []
148
+ self.each do |rule|
149
+ rules << rule unless yield(rule)
150
+ end
151
+ self.set(*rules)
152
+ end
153
+
154
+ # Removes all CORS rules attached to this bucket.
155
+ #
156
+ # bucket.cors.count #=> 3
157
+ # bucket.cors.clear
158
+ # bucket.cors.count #=> 0
159
+ #
160
+ # @return [nil]
161
+ def clear
162
+ client.delete_bucket_cors(:bucket_name => bucket.name)
163
+ nil
164
+ end
165
+
166
+ protected
167
+
168
+ def _each_item options
169
+ resp = client.get_bucket_cors(options.merge(:bucket_name => bucket.name))
170
+ resp.data[:rules].each do |rule|
171
+ yield(CORSRule.new(rule))
172
+ end
173
+ rescue AWS::S3::Errors::NoSuchCORSConfiguration
174
+ # no cors rules exist for this bucket, nothing to yield
175
+ end
176
+
177
+ def rule_hashes rule
178
+ case rule
179
+ when Hash then rule
180
+ when CORSRule then rule.to_h
181
+ when CORSRuleCollection then rule.map(&:to_h)
182
+ when Array then rule.map{|r| rule_hashes(r) }.flatten
183
+ else
184
+ msg = "Expected one or more CORSRule, CORSRuleCollection or hash"
185
+ msg << ", got #{rule.class.name}"
186
+ raise ArgumentError, msg
187
+ end
188
+ end
189
+
190
+ end
191
+ end
192
+ end
@@ -180,7 +180,7 @@ module AWS
180
180
  def sub_resources
181
181
  %w(acl location logging notification partNumber policy
182
182
  requestPayment torrent uploadId uploads versionId
183
- versioning versions delete lifecycle)
183
+ versioning versions delete lifecycle tagging cors)
184
184
  end
185
185
 
186
186
  def query_parameters
@@ -1384,9 +1384,11 @@ module AWS
1384
1384
  # Ensure metadata exists
1385
1385
  options[:metadata] = {} unless options[:metadata]
1386
1386
 
1387
+ matdesc = options[:encryption_matdesc] || config.s3_encryption_matdesc
1388
+
1387
1389
  encryption_materials = {'x-amz-key' => enc_envelope_key,
1388
1390
  'x-amz-iv' => enc_envelope_iv,
1389
- 'x-amz-matdesc' => "{}"}
1391
+ 'x-amz-matdesc' => matdesc}
1390
1392
  orig_headers = {}
1391
1393
 
1392
1394
  # Save the unencrypted content length
metadata CHANGED
@@ -1,86 +1,92 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: aws-sdk
3
- version: !ruby/object:Gem::Version
4
- version: 1.6.5
3
+ version: !ruby/object:Gem::Version
4
+ hash: 3
5
5
  prerelease:
6
+ segments:
7
+ - 1
8
+ - 6
9
+ - 6
10
+ version: 1.6.6
6
11
  platform: ruby
7
- authors:
12
+ authors:
8
13
  - Amazon Web Services
9
14
  autorequire:
10
15
  bindir: bin
11
16
  cert_chain: []
12
- date: 2012-09-05 00:00:00.000000000 Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
15
- name: uuidtools
16
- requirement: !ruby/object:Gem::Requirement
17
+
18
+ date: 2012-09-19 00:00:00 Z
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ version_requirements: &id001 !ruby/object:Gem::Requirement
17
22
  none: false
18
- requirements:
23
+ requirements:
19
24
  - - ~>
20
- - !ruby/object:Gem::Version
21
- version: '2.1'
25
+ - !ruby/object:Gem::Version
26
+ hash: 1
27
+ segments:
28
+ - 2
29
+ - 1
30
+ version: "2.1"
31
+ name: uuidtools
22
32
  type: :runtime
23
33
  prerelease: false
24
- version_requirements: !ruby/object:Gem::Requirement
34
+ requirement: *id001
35
+ - !ruby/object:Gem::Dependency
36
+ version_requirements: &id002 !ruby/object:Gem::Requirement
25
37
  none: false
26
- requirements:
38
+ requirements:
27
39
  - - ~>
28
- - !ruby/object:Gem::Version
29
- version: '2.1'
30
- - !ruby/object:Gem::Dependency
40
+ - !ruby/object:Gem::Version
41
+ hash: 5
42
+ segments:
43
+ - 0
44
+ - 7
45
+ version: "0.7"
31
46
  name: httparty
32
- requirement: !ruby/object:Gem::Requirement
33
- none: false
34
- requirements:
35
- - - ~>
36
- - !ruby/object:Gem::Version
37
- version: '0.7'
38
47
  type: :runtime
39
48
  prerelease: false
40
- version_requirements: !ruby/object:Gem::Requirement
49
+ requirement: *id002
50
+ - !ruby/object:Gem::Dependency
51
+ version_requirements: &id003 !ruby/object:Gem::Requirement
41
52
  none: false
42
- requirements:
43
- - - ~>
44
- - !ruby/object:Gem::Version
45
- version: '0.7'
46
- - !ruby/object:Gem::Dependency
47
- name: nokogiri
48
- requirement: !ruby/object:Gem::Requirement
49
- none: false
50
- requirements:
51
- - - ! '>='
52
- - !ruby/object:Gem::Version
53
+ requirements:
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ hash: 15
57
+ segments:
58
+ - 1
59
+ - 4
60
+ - 4
53
61
  version: 1.4.4
62
+ name: nokogiri
54
63
  type: :runtime
55
64
  prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
65
+ requirement: *id003
66
+ - !ruby/object:Gem::Dependency
67
+ version_requirements: &id004 !ruby/object:Gem::Requirement
57
68
  none: false
58
- requirements:
59
- - - ! '>='
60
- - !ruby/object:Gem::Version
61
- version: 1.4.4
62
- - !ruby/object:Gem::Dependency
63
- name: json
64
- requirement: !ruby/object:Gem::Requirement
65
- none: false
66
- requirements:
69
+ requirements:
67
70
  - - ~>
68
- - !ruby/object:Gem::Version
69
- version: '1.4'
71
+ - !ruby/object:Gem::Version
72
+ hash: 7
73
+ segments:
74
+ - 1
75
+ - 4
76
+ version: "1.4"
77
+ name: json
70
78
  type: :runtime
71
79
  prerelease: false
72
- version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
- requirements:
75
- - - ~>
76
- - !ruby/object:Gem::Version
77
- version: '1.4'
80
+ requirement: *id004
78
81
  description: AWS SDK for Ruby
79
82
  email:
80
83
  executables: []
84
+
81
85
  extensions: []
86
+
82
87
  extra_rdoc_files: []
83
- files:
88
+
89
+ files:
84
90
  - ca-bundle.crt
85
91
  - rails/init.rb
86
92
  - lib/aws/auto_scaling/activity.rb
@@ -386,11 +392,14 @@ files:
386
392
  - lib/aws/s3/bucket.rb
387
393
  - lib/aws/s3/bucket_collection.rb
388
394
  - lib/aws/s3/bucket_lifecycle_configuration.rb
395
+ - lib/aws/s3/bucket_tag_collection.rb
389
396
  - lib/aws/s3/bucket_version_collection.rb
390
397
  - lib/aws/s3/cipher_io.rb
391
398
  - lib/aws/s3/client/xml.rb
392
399
  - lib/aws/s3/client.rb
393
400
  - lib/aws/s3/config.rb
401
+ - lib/aws/s3/cors_rule.rb
402
+ - lib/aws/s3/cors_rule_collection.rb
394
403
  - lib/aws/s3/data_options.rb
395
404
  - lib/aws/s3/encryption_utils.rb
396
405
  - lib/aws/s3/errors.rb
@@ -502,7 +511,6 @@ files:
502
511
  - lib/net/http/connection_pool/connection.rb
503
512
  - lib/net/http/connection_pool/session.rb
504
513
  - lib/net/http/connection_pool.rb
505
- - lib/user.rb
506
514
  - lib/aws/api_config/AutoScaling-2011-01-01.yml
507
515
  - lib/aws/api_config/CloudFormation-2010-05-15.yml
508
516
  - lib/aws/api_config/CloudFront-2012-05-05.yml
@@ -524,31 +532,37 @@ files:
524
532
  - NOTICE.txt
525
533
  - LICENSE.txt
526
534
  homepage: http://aws.amazon.com/sdkforruby
527
- licenses:
535
+ licenses:
528
536
  - Apache 2.0
529
537
  post_install_message:
530
538
  rdoc_options: []
531
- require_paths:
539
+
540
+ require_paths:
532
541
  - lib
533
- required_ruby_version: !ruby/object:Gem::Requirement
542
+ required_ruby_version: !ruby/object:Gem::Requirement
534
543
  none: false
535
- requirements:
536
- - - ! '>='
537
- - !ruby/object:Gem::Version
538
- version: '0'
539
- segments:
544
+ requirements:
545
+ - - ">="
546
+ - !ruby/object:Gem::Version
547
+ hash: 3
548
+ segments:
540
549
  - 0
541
- hash: -4596701733449318258
542
- required_rubygems_version: !ruby/object:Gem::Requirement
550
+ version: "0"
551
+ required_rubygems_version: !ruby/object:Gem::Requirement
543
552
  none: false
544
- requirements:
545
- - - ! '>='
546
- - !ruby/object:Gem::Version
547
- version: '0'
553
+ requirements:
554
+ - - ">="
555
+ - !ruby/object:Gem::Version
556
+ hash: 3
557
+ segments:
558
+ - 0
559
+ version: "0"
548
560
  requirements: []
561
+
549
562
  rubyforge_project:
550
- rubygems_version: 1.8.24
563
+ rubygems_version: 1.8.21
551
564
  signing_key:
552
565
  specification_version: 3
553
566
  summary: AWS SDK for Ruby
554
567
  test_files: []
568
+
@@ -1,49 +0,0 @@
1
- # Copyright 2011-2012 Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
- #
3
- # Licensed under the Apache License, Version 2.0 (the "License"). You
4
- # may not use this file except in compliance with the License. A copy of
5
- # the License is located at
6
- #
7
- # http://aws.amazon.com/apache2.0/
8
- #
9
- # or in the "license" file accompanying this file. This file is
10
- # distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
11
- # ANY KIND, either express or implied. See the License for the specific
12
- # language governing permissions and limitations under the License.
13
-
14
- class User < AWS::Record::HashModel
15
-
16
- set_shard_name 'ruby-users'
17
-
18
- optimistic_locking
19
-
20
- ## attributes
21
-
22
- string_attr :username
23
- string_attr :role
24
- string_attr :tags, :set => true
25
-
26
- boolean_attr :verified, :default => false
27
-
28
- timestamps
29
-
30
- ## validations
31
-
32
- validates_presence_of :username, :role
33
-
34
- validates_inclusion_of :role,
35
- :in => %w(root admin member),
36
- :allow_nil => true
37
-
38
- validates_length_of :username,
39
- :within => 3..20,
40
- :allow_nil => true
41
-
42
- validates_format_of :username, :tags,
43
- :with => /^[a-z0-9]+$/i,
44
- :allow_nil => true,
45
- :message => 'may only be letters and numbers'
46
-
47
- validates_count_of :tags, :maximum => 3
48
-
49
- end