nsisam 0.2.8 → 0.3.0
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.
- data/VERSION +1 -1
- data/lib/nsisam/client.rb +11 -2
- data/lib/nsisam/errors.rb +3 -0
- data/nsisam.gemspec +2 -2
- data/spec/nsisam_spec.rb +13 -0
- metadata +17 -17
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.3.0
|
data/lib/nsisam/client.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require "json"
|
2
2
|
require "net/http"
|
3
|
+
require "digest/sha1"
|
3
4
|
require File.dirname(__FILE__) + '/errors'
|
4
5
|
|
5
6
|
module NSISam
|
@@ -56,10 +57,12 @@ module NSISam
|
|
56
57
|
# @raise [NSISam::Errors::Client::KeyNotFoundError] When the key doesn't exists
|
57
58
|
# @example
|
58
59
|
# nsisam.get("some key")
|
59
|
-
def get(key)
|
60
|
+
def get(key, expected_checksum=nil)
|
60
61
|
request_data = {:key => key}.to_json
|
61
62
|
request = prepare_request :GET, request_data
|
62
|
-
execute_request(request)
|
63
|
+
response = execute_request(request)
|
64
|
+
verify_checksum(response["data"], expected_checksum) unless expected_checksum.nil?
|
65
|
+
response
|
63
66
|
end
|
64
67
|
|
65
68
|
# Update data stored at a given SAM key
|
@@ -95,5 +98,11 @@ module NSISam
|
|
95
98
|
raise NSISam::Errors::Client::KeyNotFoundError if response.code == "404"
|
96
99
|
JSON.parse(response.body)
|
97
100
|
end
|
101
|
+
|
102
|
+
def verify_checksum(data, expected_checksum)
|
103
|
+
sha1_checksum = Digest::SHA1.hexdigest(data)
|
104
|
+
raise NSISam::Errors::Client::ChecksumMismatchError unless sha1_checksum == expected_checksum
|
105
|
+
end
|
106
|
+
|
98
107
|
end
|
99
108
|
end
|
data/lib/nsisam/errors.rb
CHANGED
data/nsisam.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "nsisam"
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.3.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Douglas Camata"]
|
12
|
-
s.date = "2012-03-
|
12
|
+
s.date = "2012-03-13"
|
13
13
|
s.description = "A simple gem to access a SAM node. For more info about SAM\n visit www.github.com/nsi-iff/sam_buildout."
|
14
14
|
s.email = "d.camata@gmail.com"
|
15
15
|
s.extra_rdoc_files = [
|
data/spec/nsisam_spec.rb
CHANGED
@@ -40,6 +40,19 @@ describe NSISam do
|
|
40
40
|
response["data"].should == "data for key retrieve this"
|
41
41
|
end
|
42
42
|
|
43
|
+
it "can retrieve a stored value and automaticly verify its checksum" do
|
44
|
+
@nsisam.should_receive(:verify_checksum).with('data for key retrieve this', 0).and_return(0)
|
45
|
+
@nsisam.store("retrieve this")["key"].should == 'value retrieve this stored'
|
46
|
+
response = @nsisam.get('retrieve this', 0)
|
47
|
+
response["data"].should == "data for key retrieve this"
|
48
|
+
end
|
49
|
+
|
50
|
+
it "raises errors when expected checksum doesn't match the calculated one" do
|
51
|
+
wrong_checksum = 333
|
52
|
+
@nsisam.store("retrieve this")["key"].should == 'value retrieve this stored'
|
53
|
+
expect { @nsisam.get('retrieve this', 333) }.to raise_error(NSISam::Errors::Client::ChecksumMismatchError)
|
54
|
+
end
|
55
|
+
|
43
56
|
it "raises error when key not found" do
|
44
57
|
expect { @nsisam.get("i dont exist") }.to raise_error(NSISam::Errors::Client::KeyNotFoundError)
|
45
58
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nsisam
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-03-
|
12
|
+
date: 2012-03-13 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: json
|
16
|
-
requirement: &
|
16
|
+
requirement: &12790140 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *12790140
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: sinatra
|
27
|
-
requirement: &
|
27
|
+
requirement: &12789460 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *12789460
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rake
|
38
|
-
requirement: &
|
38
|
+
requirement: &12788920 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *12788920
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: yard
|
49
|
-
requirement: &
|
49
|
+
requirement: &12788200 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *12788200
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: rspec
|
60
|
-
requirement: &
|
60
|
+
requirement: &12803900 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ~>
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: 2.8.0
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *12803900
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: bundler
|
71
|
-
requirement: &
|
71
|
+
requirement: &12803220 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ~>
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: 1.0.0
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *12803220
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: jeweler
|
82
|
-
requirement: &
|
82
|
+
requirement: &12802460 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ~>
|
@@ -87,7 +87,7 @@ dependencies:
|
|
87
87
|
version: 1.8.3
|
88
88
|
type: :development
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *12802460
|
91
91
|
description: ! "A simple gem to access a SAM node. For more info about SAM\n visit
|
92
92
|
www.github.com/nsi-iff/sam_buildout."
|
93
93
|
email: d.camata@gmail.com
|
@@ -126,7 +126,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
126
126
|
version: '0'
|
127
127
|
segments:
|
128
128
|
- 0
|
129
|
-
hash:
|
129
|
+
hash: 2289717822035617714
|
130
130
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
131
131
|
none: false
|
132
132
|
requirements:
|