siffer 0.0.7 → 0.1.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/LICENSE +1 -1
- data/README +63 -93
- data/Rakefile +60 -0
- data/bin/siffer +12 -0
- data/lib/sif.rb +38 -0
- data/lib/sif/code_sets.rb +9 -0
- data/lib/sif/code_sets/access_permission_error_codes.rb +17 -0
- data/lib/sif/code_sets/authentication_error_codes.rb +15 -0
- data/lib/sif/code_sets/base_code_set.rb +75 -0
- data/lib/sif/code_sets/encryption_error_codes.rb +6 -0
- data/lib/sif/code_sets/error_category_codes.rb +20 -0
- data/lib/sif/code_sets/event_reporting_processing_error_codes.rb +7 -0
- data/lib/sif/code_sets/generic_message_handling_error_codes.rb +12 -0
- data/lib/sif/code_sets/provision_error_codes.rb +8 -0
- data/lib/sif/code_sets/registration_error_codes.rb +13 -0
- data/lib/sif/code_sets/request_response_error_codes.rb +20 -0
- data/lib/sif/code_sets/smb_error_codes.rb +9 -0
- data/lib/sif/code_sets/status_codes.rb +13 -0
- data/lib/sif/code_sets/subscription_error_codes.rb +7 -0
- data/lib/sif/code_sets/system_error_codes.rb +6 -0
- data/lib/sif/code_sets/transport_error_codes.rb +9 -0
- data/lib/sif/code_sets/xml_validation_error_codes.rb +10 -0
- data/lib/sif/config.rb +100 -0
- data/lib/sif/core_ext/array.rb +12 -0
- data/lib/sif/error.rb +34 -0
- data/lib/sif/exceptions.rb +9 -0
- data/lib/sif/messages.rb +3 -0
- data/lib/sif/messages/ack.rb +29 -0
- data/lib/sif/messages/message.rb +32 -0
- data/lib/sif/messages/register.rb +38 -0
- data/lib/sif/protocols.rb +15 -0
- data/lib/sif/status.rb +17 -0
- data/lib/siffer.rb +1 -41
- data/spec/base_code_set_spec.rb +35 -0
- data/spec/config_spec.rb +42 -0
- data/spec/error_spec.rb +11 -0
- data/spec/messages/ack_spec.rb +25 -0
- data/spec/messages/header_spec.rb +21 -0
- data/spec/messages/message_spec.rb +27 -0
- data/spec/messages/register_spec.rb +53 -0
- data/spec/protocol_spec.rb +11 -0
- data/spec/spec_helper.rb +8 -0
- metadata +66 -31
- data/lib/siffer/agent.rb +0 -53
- data/lib/siffer/core_ext/hash.rb +0 -15
- data/lib/siffer/messages.rb +0 -41
- data/lib/siffer/messages/ack.rb +0 -168
- data/lib/siffer/messages/event.rb +0 -20
- data/lib/siffer/messages/message.rb +0 -60
- data/lib/siffer/messages/provide.rb +0 -25
- data/lib/siffer/messages/provision.rb +0 -17
- data/lib/siffer/messages/register.rb +0 -50
- data/lib/siffer/messages/request.rb +0 -138
- data/lib/siffer/messages/response.rb +0 -48
- data/lib/siffer/messages/subscribe.rb +0 -17
- data/lib/siffer/messages/system_control.rb +0 -94
- data/lib/siffer/models.rb +0 -1
- data/lib/siffer/models/address.rb +0 -39
@@ -0,0 +1,35 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__),"spec_helper")
|
2
|
+
|
3
|
+
describe Siffer::CodeSets::BaseCodeSet do
|
4
|
+
|
5
|
+
before do
|
6
|
+
BaseCodeSet.register(0,:test,"test code set") unless defined?(BaseCodeSet::TEST)
|
7
|
+
end
|
8
|
+
|
9
|
+
it "should allow new codes to register" do
|
10
|
+
BaseCodeSet.constants.include? "TEST"
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should have code (integer) equality" do
|
14
|
+
@test = BaseCodeSet::TEST
|
15
|
+
@test.should == 0
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should have symbol equality" do
|
19
|
+
@test = BaseCodeSet::TEST
|
20
|
+
@test.should == :test
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should provide iterative access from class" do
|
24
|
+
@test = BaseCodeSet[:test]
|
25
|
+
@test.should_not be_nil
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should raise exception for unregistered code" do
|
29
|
+
lambda{
|
30
|
+
BaseCodeSet[:not_here].description
|
31
|
+
}.should raise_error(InvalidErrorCode, "not_here code not found in Siffer::CodeSets::BaseCodeSet codes.")
|
32
|
+
end
|
33
|
+
|
34
|
+
|
35
|
+
end
|
data/spec/config_spec.rb
ADDED
@@ -0,0 +1,42 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__),"spec_helper")
|
2
|
+
|
3
|
+
describe Siffer::Config do
|
4
|
+
|
5
|
+
before do
|
6
|
+
Siffer::Config.setup
|
7
|
+
end
|
8
|
+
|
9
|
+
it "should be able to yield the configuration via #use" do
|
10
|
+
res = nil
|
11
|
+
Siffer::Config.use {|c| res = c}
|
12
|
+
res.should == Siffer::Config.defaults
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should be able to get a configuration key" do
|
16
|
+
Siffer::Config[:host].should == "0.0.0.0"
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should be able to set a configuration key" do
|
20
|
+
Siffer::Config[:bar] = "Hello"
|
21
|
+
Siffer::Config[:bar].should == "Hello"
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should be able to #delete a configuration key" do
|
25
|
+
Siffer::Config[:bar] = "Hello"
|
26
|
+
Siffer::Config[:bar].should == "Hello"
|
27
|
+
Siffer::Config.delete(:bar)
|
28
|
+
Siffer::Config[:bar].should == nil
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should be able to #fetch a key that does exist" do
|
32
|
+
Siffer::Config.fetch(:host, "192.168.2.1").should == "0.0.0.0"
|
33
|
+
end
|
34
|
+
|
35
|
+
it "should be able to #fetch a key that does not exist" do
|
36
|
+
Siffer::Config.fetch(:bar, "heylo").should == "heylo"
|
37
|
+
end
|
38
|
+
|
39
|
+
it "should be able to dump to YAML" do
|
40
|
+
Siffer::Config.to_yaml.should == Siffer::Config.instance_variable_get("@configuration").to_yaml
|
41
|
+
end
|
42
|
+
end
|
data/spec/error_spec.rb
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__),"spec_helper")
|
2
|
+
|
3
|
+
describe Siffer::Error do
|
4
|
+
|
5
|
+
it "should raise error for invalid category" do
|
6
|
+
lambda{
|
7
|
+
@error = Siffer::Error.new :bad_category, :missing_category
|
8
|
+
}.should raise_error(InvalidErrorCategory, "Invalid Error Category provided.")
|
9
|
+
end
|
10
|
+
|
11
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "..", "spec_helper")
|
2
|
+
|
3
|
+
describe Siffer::Messages::Ack do
|
4
|
+
|
5
|
+
before do
|
6
|
+
@message = Message.new("source_is_clint")
|
7
|
+
@ack = Ack.new("ack_source",
|
8
|
+
{:original_source_id => @message.header.source_id,
|
9
|
+
:original_message_id => @message.header.msg_id,
|
10
|
+
:error => Siffer::Error.new(:system,:generic)})
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should contain original source id" do
|
14
|
+
@ack.original_source_id.should == @message.header.source_id
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should contain original message id" do
|
18
|
+
@ack.original_message_id.should == @message.header.msg_id
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should predicate error" do
|
22
|
+
@ack.should be_error
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "..", "spec_helper.rb")
|
2
|
+
|
3
|
+
describe Siffer::Messages::Message::Header do
|
4
|
+
|
5
|
+
it "should have a timestamp" do
|
6
|
+
@header = Message::Header.new "source_name"
|
7
|
+
@header.timestamp.should_not be_nil
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should have a GUID/UUID" do
|
11
|
+
@header = Message::Header.new "source_name"
|
12
|
+
@header.msg_id.should_not be_nil
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should have a GUID/UUID that matches SIF textual format" do
|
16
|
+
@header = Message::Header.new "source_name"
|
17
|
+
@header.msg_id.should_not match(/^[a-z\-\s]+$/)
|
18
|
+
@header.msg_id.should match(/^[A-Z0-9]+$/)
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "..", "spec_helper")
|
2
|
+
|
3
|
+
describe Siffer::Messages::Message do
|
4
|
+
|
5
|
+
it "should have SIF version" do
|
6
|
+
@message = Message.new("source_name")
|
7
|
+
@message.version.should == "2.2.0"
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should have SIF xml namespace" do
|
11
|
+
@message = Message.new("source_name")
|
12
|
+
@message.xmlns.should == "http://www.sifinfo.org/infrastructure/2.x"
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should have a header" do
|
16
|
+
@message = Message.new("source_name")
|
17
|
+
@message.header.should_not be_nil
|
18
|
+
@message.header.source_id.should == "source_name"
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should raise exception for missing source identifier" do
|
22
|
+
lambda{
|
23
|
+
@message = Message.new(nil)
|
24
|
+
}.should raise_error(MissingSource, "Source not provided.")
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "..", "spec_helper")
|
2
|
+
|
3
|
+
describe Siffer::Messages::Register do
|
4
|
+
|
5
|
+
before do
|
6
|
+
@message = Register.new("source_name",
|
7
|
+
{:name => "source desc",
|
8
|
+
:application => {:vendor => Siffer::VENDOR,
|
9
|
+
:version => "1.1.1"}})
|
10
|
+
end
|
11
|
+
|
12
|
+
it "should have vendor info" do
|
13
|
+
@message.node_vendor.should == Siffer::VENDOR
|
14
|
+
@message.node_version.should == Siffer::VERSION
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should have a name for the agent" do
|
18
|
+
@message.name.should_not be_nil
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should accept 2.x version messages" do
|
22
|
+
@message.version.should == "2.*"
|
23
|
+
end
|
24
|
+
|
25
|
+
it "should have a receivable version # that matches SIF pattern" do
|
26
|
+
@message.version.should match(/\*|([0-9]+[.]\*)|([0-9]+[.][0-9]+r\*)|([0-9]+[.][0-9]+(r[0-9]+)?)/)
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should have a max buffer size in integer form" do
|
30
|
+
@message.max_buffer_size.should_not be_nil
|
31
|
+
@message.max_buffer_size.should be_integer
|
32
|
+
end
|
33
|
+
|
34
|
+
it "should have a mode set and default to pull" do
|
35
|
+
@message.mode.should_not be_nil
|
36
|
+
@message.mode.should == "Pull"
|
37
|
+
end
|
38
|
+
|
39
|
+
it "should require a protocol if mode is push" do
|
40
|
+
lambda{
|
41
|
+
@message = Register.new("source_id",
|
42
|
+
{:name => "source_name",
|
43
|
+
:max_buffer_size => 524188,
|
44
|
+
:mode => "Push"})
|
45
|
+
}.should raise_error(NoProtocol, "Protocol not provided.")
|
46
|
+
end
|
47
|
+
|
48
|
+
it "should expose the application it supports" do
|
49
|
+
@message.application.vendor.should == Siffer::VENDOR
|
50
|
+
@message.application.version.should == "1.1.1"
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: siffer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Clint Hill
|
@@ -9,41 +9,76 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date:
|
12
|
+
date: 2008-09-25 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
|
-
dependencies:
|
15
|
-
|
16
|
-
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: uuid
|
17
|
+
type: :runtime
|
18
|
+
version_requirement:
|
19
|
+
version_requirements: !ruby/object:Gem::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: "0"
|
24
|
+
version:
|
25
|
+
description:
|
17
26
|
email: clint.hill@h3osoftware.com
|
18
|
-
executables:
|
19
|
-
|
27
|
+
executables:
|
28
|
+
- siffer
|
20
29
|
extensions: []
|
21
30
|
|
22
31
|
extra_rdoc_files: []
|
23
32
|
|
24
33
|
files:
|
25
|
-
- lib/siffer/agent.rb
|
26
|
-
- lib/siffer/core_ext/hash.rb
|
27
|
-
- lib/siffer/messages/ack.rb
|
28
|
-
- lib/siffer/messages/event.rb
|
29
|
-
- lib/siffer/messages/message.rb
|
30
|
-
- lib/siffer/messages/provide.rb
|
31
|
-
- lib/siffer/messages/provision.rb
|
32
|
-
- lib/siffer/messages/register.rb
|
33
|
-
- lib/siffer/messages/request.rb
|
34
|
-
- lib/siffer/messages/response.rb
|
35
|
-
- lib/siffer/messages/subscribe.rb
|
36
|
-
- lib/siffer/messages/system_control.rb
|
37
|
-
- lib/siffer/messages.rb
|
38
|
-
- lib/siffer/models/address.rb
|
39
|
-
- lib/siffer/models.rb
|
40
|
-
- lib/siffer.rb
|
41
|
-
- README
|
42
34
|
- LICENSE
|
43
|
-
|
35
|
+
- README
|
36
|
+
- Rakefile
|
37
|
+
- spec/base_code_set_spec.rb
|
38
|
+
- spec/config_spec.rb
|
39
|
+
- spec/error_spec.rb
|
40
|
+
- spec/messages
|
41
|
+
- spec/messages/ack_spec.rb
|
42
|
+
- spec/messages/header_spec.rb
|
43
|
+
- spec/messages/message_spec.rb
|
44
|
+
- spec/messages/register_spec.rb
|
45
|
+
- spec/protocol_spec.rb
|
46
|
+
- spec/spec_helper.rb
|
47
|
+
- lib/sif
|
48
|
+
- lib/sif/code_sets
|
49
|
+
- lib/sif/code_sets/access_permission_error_codes.rb
|
50
|
+
- lib/sif/code_sets/authentication_error_codes.rb
|
51
|
+
- lib/sif/code_sets/base_code_set.rb
|
52
|
+
- lib/sif/code_sets/encryption_error_codes.rb
|
53
|
+
- lib/sif/code_sets/error_category_codes.rb
|
54
|
+
- lib/sif/code_sets/event_reporting_processing_error_codes.rb
|
55
|
+
- lib/sif/code_sets/generic_message_handling_error_codes.rb
|
56
|
+
- lib/sif/code_sets/provision_error_codes.rb
|
57
|
+
- lib/sif/code_sets/registration_error_codes.rb
|
58
|
+
- lib/sif/code_sets/request_response_error_codes.rb
|
59
|
+
- lib/sif/code_sets/smb_error_codes.rb
|
60
|
+
- lib/sif/code_sets/status_codes.rb
|
61
|
+
- lib/sif/code_sets/subscription_error_codes.rb
|
62
|
+
- lib/sif/code_sets/system_error_codes.rb
|
63
|
+
- lib/sif/code_sets/transport_error_codes.rb
|
64
|
+
- lib/sif/code_sets/xml_validation_error_codes.rb
|
65
|
+
- lib/sif/code_sets.rb
|
66
|
+
- lib/sif/config.rb
|
67
|
+
- lib/sif/core_ext
|
68
|
+
- lib/sif/core_ext/array.rb
|
69
|
+
- lib/sif/error.rb
|
70
|
+
- lib/sif/exceptions.rb
|
71
|
+
- lib/sif/messages
|
72
|
+
- lib/sif/messages/ack.rb
|
73
|
+
- lib/sif/messages/message.rb
|
74
|
+
- lib/sif/messages/register.rb
|
75
|
+
- lib/sif/messages.rb
|
76
|
+
- lib/sif/protocols.rb
|
77
|
+
- lib/sif/status.rb
|
78
|
+
- lib/sif.rb
|
79
|
+
- lib/siffer.rb
|
80
|
+
has_rdoc: false
|
44
81
|
homepage: http://h3osoftware.com/siffer
|
45
|
-
licenses: []
|
46
|
-
|
47
82
|
post_install_message:
|
48
83
|
rdoc_options: []
|
49
84
|
|
@@ -53,7 +88,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
53
88
|
requirements:
|
54
89
|
- - ">="
|
55
90
|
- !ruby/object:Gem::Version
|
56
|
-
version:
|
91
|
+
version: 1.8.7
|
57
92
|
version:
|
58
93
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
59
94
|
requirements:
|
@@ -63,10 +98,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
63
98
|
version:
|
64
99
|
requirements: []
|
65
100
|
|
66
|
-
rubyforge_project:
|
67
|
-
rubygems_version: 1.
|
101
|
+
rubyforge_project: siffer
|
102
|
+
rubygems_version: 1.2.0
|
68
103
|
signing_key:
|
69
|
-
specification_version:
|
104
|
+
specification_version: 2
|
70
105
|
summary: Siffer - School Interoperability Framework by h3o(software)
|
71
106
|
test_files: []
|
72
107
|
|
data/lib/siffer/agent.rb
DELETED
@@ -1,53 +0,0 @@
|
|
1
|
-
module Siffer
|
2
|
-
|
3
|
-
class Agent < Sinatra::Base
|
4
|
-
|
5
|
-
enable :static
|
6
|
-
|
7
|
-
set :root, File.join(File.dirname(__FILE__),"agent")
|
8
|
-
set :port, 2828
|
9
|
-
set :haml, {:format => :html5 }
|
10
|
-
set :agent_name, "Not Named"
|
11
|
-
set :zis_url, "Not Set"
|
12
|
-
|
13
|
-
before do
|
14
|
-
@agent_name = options.agent_name
|
15
|
-
@zis_url = options.zis_url
|
16
|
-
#redirect '/' unless registered? or request.path == "/register" or request.path == "/"
|
17
|
-
end
|
18
|
-
|
19
|
-
helpers do
|
20
|
-
def registered?
|
21
|
-
@zis_url != "Not Set"
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
get "/" do
|
26
|
-
haml :index
|
27
|
-
end
|
28
|
-
|
29
|
-
post "/register" do
|
30
|
-
url = params[:zis_url]
|
31
|
-
msg = SystemControl.get_zone_status(@agent_name)
|
32
|
-
# msg = Register.new(
|
33
|
-
# :header => @agent_name,
|
34
|
-
# :version => Siffer.sif_version,
|
35
|
-
# :mode => "Pull",
|
36
|
-
# :max_buffer_size => 1024,
|
37
|
-
# :name => @agent_name,
|
38
|
-
# :application => Application.new(
|
39
|
-
# :vendor => "h3o(software)",
|
40
|
-
# :version => Siffer.version,
|
41
|
-
# :product => "Siffer"
|
42
|
-
# )
|
43
|
-
# )
|
44
|
-
puts msg
|
45
|
-
raw = RestClient.post(url, msg, :content_type => 'application/xml')
|
46
|
-
puts raw
|
47
|
-
return_msg = Message.parse(raw)
|
48
|
-
return_msg
|
49
|
-
end
|
50
|
-
|
51
|
-
end
|
52
|
-
|
53
|
-
end
|
data/lib/siffer/core_ext/hash.rb
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
class Hash
|
2
|
-
|
3
|
-
# Recursively changes key names to underscored symbols
|
4
|
-
def recursively_underscore
|
5
|
-
keys.each do |key|
|
6
|
-
if self[key].is_a?(Hash)
|
7
|
-
self[key.underscore.to_sym] = delete(key).recursively_underscore
|
8
|
-
else
|
9
|
-
self[key.underscore.to_sym] = delete(key)
|
10
|
-
end
|
11
|
-
end
|
12
|
-
self
|
13
|
-
end
|
14
|
-
|
15
|
-
end
|