aws-sdb 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +1 -1
- data/lib/aws_sdb/error.rb +2 -0
- data/lib/aws_sdb/service.rb +3 -4
- data/spec/aws_sdb/service_spec.rb +46 -35
- metadata +2 -2
data/Rakefile
CHANGED
@@ -7,7 +7,7 @@ Spec::Rake::SpecTask.new
|
|
7
7
|
gem_spec = Gem::Specification.new do |s|
|
8
8
|
s.name = "aws-sdb"
|
9
9
|
s.rubyforge_project = s.name
|
10
|
-
s.version = "0.1.
|
10
|
+
s.version = "0.1.2"
|
11
11
|
s.platform = Gem::Platform::RUBY
|
12
12
|
s.has_rdoc = true
|
13
13
|
s.extra_rdoc_files = ["README", "LICENSE"]
|
data/lib/aws_sdb/error.rb
CHANGED
data/lib/aws_sdb/service.rb
CHANGED
@@ -18,7 +18,6 @@ module AwsSdb
|
|
18
18
|
@secret_access_key = secret_access_key
|
19
19
|
end
|
20
20
|
|
21
|
-
# TODO Make this options hash not a param list
|
22
21
|
def list_domains(max = nil, token = nil)
|
23
22
|
params = { 'Action' => 'ListDomains' }
|
24
23
|
params['MoreToken'] =
|
@@ -69,14 +68,14 @@ module AwsSdb
|
|
69
68
|
params = {
|
70
69
|
'Action' => 'PutAttributes',
|
71
70
|
'DomainName' => domain.to_s,
|
72
|
-
'ItemName' => item.to_s
|
73
|
-
'Replace' => replace
|
71
|
+
'ItemName' => item.to_s
|
74
72
|
}
|
75
73
|
count = 0
|
76
74
|
attributes.each do | key, values |
|
77
75
|
([]<<values).flatten.each do |value|
|
78
76
|
params["Attribute.#{count}.Name"] = key.to_s
|
79
77
|
params["Attribute.#{count}.Value"] = value.to_s
|
78
|
+
params["Attribute.#{count}.Replace"] = replace
|
80
79
|
count += 1
|
81
80
|
end
|
82
81
|
end
|
@@ -118,7 +117,7 @@ module AwsSdb
|
|
118
117
|
|
119
118
|
def call(method, params)
|
120
119
|
params.merge!( {
|
121
|
-
'Version' => '2007-
|
120
|
+
'Version' => '2007-11-07',
|
122
121
|
'SignatureVersion' => '1',
|
123
122
|
'AWSAccessKeyId' => @access_key_id,
|
124
123
|
'Timestamp' => Time.now.gmtime.iso8601
|
@@ -18,9 +18,8 @@ describe Service, "when creating a new domain" do
|
|
18
18
|
)
|
19
19
|
@domain = "test-#{UUID.random_create.to_s}"
|
20
20
|
# domains = @service.list_domains[0]
|
21
|
-
# @logger.debug("Domains #{domains.inspect}")
|
22
21
|
# domains.each do |d|
|
23
|
-
# @service.delete_domain(d)
|
22
|
+
# @service.delete_domain(d) if d =~ /^test/
|
24
23
|
# end
|
25
24
|
end
|
26
25
|
|
@@ -86,49 +85,54 @@ describe Service, "when creating a new domain" do
|
|
86
85
|
|
87
86
|
it "should raise an error if an a nil or '' domain name is given" do
|
88
87
|
stub_error(
|
89
|
-
400,
|
88
|
+
400,
|
89
|
+
:InvalidParameterValue,
|
90
|
+
"Value () for parameter DomainName is invalid."
|
90
91
|
)
|
91
92
|
lambda {
|
92
93
|
@service.create_domain('')
|
93
|
-
}.should raise_error(
|
94
|
-
stub_error(
|
95
|
-
400, :InvalidDomainName, "The domain name ' ' is not valid."
|
96
|
-
)
|
94
|
+
}.should raise_error(InvalidParameterValueError)
|
97
95
|
lambda {
|
98
|
-
@service.create_domain(
|
99
|
-
}.should raise_error(
|
96
|
+
@service.create_domain(nil)
|
97
|
+
}.should raise_error(InvalidParameterValueError)
|
100
98
|
stub_error(
|
101
|
-
400,
|
99
|
+
400,
|
100
|
+
:InvalidParameterValue,
|
101
|
+
"Value ( ) for parameter DomainName is invalid."
|
102
102
|
)
|
103
103
|
lambda {
|
104
|
-
@service.create_domain(
|
105
|
-
}.should raise_error(
|
104
|
+
@service.create_domain(' ')
|
105
|
+
}.should raise_error(InvalidParameterValueError)
|
106
106
|
end
|
107
107
|
|
108
108
|
it "should raise an error if the domain name length is < 3 or > 255" do
|
109
109
|
stub_error(
|
110
|
-
400,
|
110
|
+
400,
|
111
|
+
:InvalidParameterValue,
|
112
|
+
"Value (xx) for parameter DomainName is invalid."
|
111
113
|
)
|
112
114
|
lambda {
|
113
115
|
@service.create_domain('xx')
|
114
|
-
}.should raise_error(
|
116
|
+
}.should raise_error(InvalidParameterValueError)
|
115
117
|
stub_error(
|
116
118
|
400,
|
117
|
-
:
|
118
|
-
"
|
119
|
+
:InvalidParameterValue,
|
120
|
+
"Value (#{:x.to_s*256}) for parameter DomainName is invalid."
|
119
121
|
)
|
120
122
|
lambda {
|
121
123
|
@service.create_domain('x'*256)
|
122
|
-
}.should raise_error(
|
124
|
+
}.should raise_error(InvalidParameterValueError)
|
123
125
|
end
|
124
126
|
|
125
127
|
it "should only accept domain names with a-z, A-Z, 0-9, '_', '-', and '.' " do
|
126
128
|
stub_error(
|
127
|
-
400,
|
129
|
+
400,
|
130
|
+
:InvalidParameterValue,
|
131
|
+
"Value (@$^*()) for parameter DomainName is invalid."
|
128
132
|
)
|
129
133
|
lambda {
|
130
|
-
@service.create_domain('
|
131
|
-
}.should raise_error(
|
134
|
+
@service.create_domain('@$^*()')
|
135
|
+
}.should raise_error(InvalidParameterValueError)
|
132
136
|
end
|
133
137
|
|
134
138
|
it "should only accept a maximum of 100 domain names" do
|
@@ -148,7 +152,7 @@ describe Service, "when listing domains" do
|
|
148
152
|
)
|
149
153
|
@domain = "test-#{UUID.random_create.to_s}"
|
150
154
|
# @service.list_domains[0].each do |d|
|
151
|
-
# @service.delete_domain(d)
|
155
|
+
# @service.delete_domain(d) if d =~ /^test/
|
152
156
|
# end
|
153
157
|
# @service.create_domain(@domain)
|
154
158
|
end
|
@@ -162,14 +166,14 @@ describe Service, "when listing domains" do
|
|
162
166
|
resp.stub!(:code).and_return("200")
|
163
167
|
resp.stub!(:body).and_return(
|
164
168
|
"""
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
169
|
+
<ListDomainsResponse>
|
170
|
+
<ResponseStatus>
|
171
|
+
<StatusCode>Success</StatusCode>
|
172
|
+
<RequestID>#{UUID.random_create.to_s}</RequestID>
|
173
|
+
<BoxUsage/>
|
174
|
+
</ResponseStatus>
|
175
|
+
<DomainName>#{@domain}</DomainName>
|
176
|
+
</ListDomainsResponse>
|
173
177
|
"""
|
174
178
|
)
|
175
179
|
http = mock(Net::HTTP)
|
@@ -194,7 +198,7 @@ describe Service, "when deleting domains" do
|
|
194
198
|
)
|
195
199
|
@domain = "test-#{UUID.random_create.to_s}"
|
196
200
|
# @service.list_domains[0].each do |d|
|
197
|
-
# @service.delete_domain(d)
|
201
|
+
# @service.delete_domain(d) if d =~ /^test/
|
198
202
|
# end
|
199
203
|
# @service.create_domain(@domain)
|
200
204
|
end
|
@@ -242,10 +246,10 @@ describe Service, "when managing items" do
|
|
242
246
|
ENV['AMAZON_SECRET_ACCESS_KEY']
|
243
247
|
)
|
244
248
|
@domain = "test-#{UUID.random_create.to_s}"
|
245
|
-
# @service.list_domains[0].each do |d|
|
246
|
-
# @service.delete_domain(d)
|
247
|
-
# end
|
248
|
-
# @service.create_domain(@domain)
|
249
|
+
# @service.list_domains[0].each do |d|
|
250
|
+
# @service.delete_domain(d) if d =~ /^test/
|
251
|
+
# end
|
252
|
+
# @service.create_domain(@domain)
|
249
253
|
@item = "test-#{UUID.random_create.to_s}"
|
250
254
|
@attributes = {
|
251
255
|
:question => 'What is the answer?',
|
@@ -254,7 +258,7 @@ describe Service, "when managing items" do
|
|
254
258
|
end
|
255
259
|
|
256
260
|
after(:all) do
|
257
|
-
# @service.delete_domain(@domain)
|
261
|
+
# @service.delete_domain(@domain)
|
258
262
|
end
|
259
263
|
|
260
264
|
def stub_put
|
@@ -397,3 +401,10 @@ describe Service, "when managing items" do
|
|
397
401
|
}.should_not raise_error
|
398
402
|
end
|
399
403
|
end
|
404
|
+
|
405
|
+
# TODO Pull the specs from the amazon docs and write more rspec
|
406
|
+
# 100 attributes per each call
|
407
|
+
# 256 total attribute name-value pairs per item
|
408
|
+
# 250 million attributes per domain
|
409
|
+
# 10 GB of total user data storage per domain
|
410
|
+
# ...etc...
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aws-sdb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tim Dysinger
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-01-
|
12
|
+
date: 2008-01-23 00:00:00 -10:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|