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.
Files changed (58) hide show
  1. data/LICENSE +1 -1
  2. data/README +63 -93
  3. data/Rakefile +60 -0
  4. data/bin/siffer +12 -0
  5. data/lib/sif.rb +38 -0
  6. data/lib/sif/code_sets.rb +9 -0
  7. data/lib/sif/code_sets/access_permission_error_codes.rb +17 -0
  8. data/lib/sif/code_sets/authentication_error_codes.rb +15 -0
  9. data/lib/sif/code_sets/base_code_set.rb +75 -0
  10. data/lib/sif/code_sets/encryption_error_codes.rb +6 -0
  11. data/lib/sif/code_sets/error_category_codes.rb +20 -0
  12. data/lib/sif/code_sets/event_reporting_processing_error_codes.rb +7 -0
  13. data/lib/sif/code_sets/generic_message_handling_error_codes.rb +12 -0
  14. data/lib/sif/code_sets/provision_error_codes.rb +8 -0
  15. data/lib/sif/code_sets/registration_error_codes.rb +13 -0
  16. data/lib/sif/code_sets/request_response_error_codes.rb +20 -0
  17. data/lib/sif/code_sets/smb_error_codes.rb +9 -0
  18. data/lib/sif/code_sets/status_codes.rb +13 -0
  19. data/lib/sif/code_sets/subscription_error_codes.rb +7 -0
  20. data/lib/sif/code_sets/system_error_codes.rb +6 -0
  21. data/lib/sif/code_sets/transport_error_codes.rb +9 -0
  22. data/lib/sif/code_sets/xml_validation_error_codes.rb +10 -0
  23. data/lib/sif/config.rb +100 -0
  24. data/lib/sif/core_ext/array.rb +12 -0
  25. data/lib/sif/error.rb +34 -0
  26. data/lib/sif/exceptions.rb +9 -0
  27. data/lib/sif/messages.rb +3 -0
  28. data/lib/sif/messages/ack.rb +29 -0
  29. data/lib/sif/messages/message.rb +32 -0
  30. data/lib/sif/messages/register.rb +38 -0
  31. data/lib/sif/protocols.rb +15 -0
  32. data/lib/sif/status.rb +17 -0
  33. data/lib/siffer.rb +1 -41
  34. data/spec/base_code_set_spec.rb +35 -0
  35. data/spec/config_spec.rb +42 -0
  36. data/spec/error_spec.rb +11 -0
  37. data/spec/messages/ack_spec.rb +25 -0
  38. data/spec/messages/header_spec.rb +21 -0
  39. data/spec/messages/message_spec.rb +27 -0
  40. data/spec/messages/register_spec.rb +53 -0
  41. data/spec/protocol_spec.rb +11 -0
  42. data/spec/spec_helper.rb +8 -0
  43. metadata +66 -31
  44. data/lib/siffer/agent.rb +0 -53
  45. data/lib/siffer/core_ext/hash.rb +0 -15
  46. data/lib/siffer/messages.rb +0 -41
  47. data/lib/siffer/messages/ack.rb +0 -168
  48. data/lib/siffer/messages/event.rb +0 -20
  49. data/lib/siffer/messages/message.rb +0 -60
  50. data/lib/siffer/messages/provide.rb +0 -25
  51. data/lib/siffer/messages/provision.rb +0 -17
  52. data/lib/siffer/messages/register.rb +0 -50
  53. data/lib/siffer/messages/request.rb +0 -138
  54. data/lib/siffer/messages/response.rb +0 -48
  55. data/lib/siffer/messages/subscribe.rb +0 -17
  56. data/lib/siffer/messages/system_control.rb +0 -94
  57. data/lib/siffer/models.rb +0 -1
  58. 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
@@ -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
@@ -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
@@ -0,0 +1,11 @@
1
+ require File.join(File.dirname(__FILE__), "spec_helper")
2
+
3
+ describe Siffer::Protocols::Protocol do
4
+
5
+ it "should require a url" do
6
+ lambda{
7
+ @protocol = Protocol.new(nil)
8
+ }.should raise_error(MissingUrl, "Url not provided.")
9
+ end
10
+
11
+ end
@@ -0,0 +1,8 @@
1
+ $TESTING=true
2
+ require File.join(File.dirname(__FILE__),"..", "lib","sif")
3
+ require 'spec'
4
+
5
+ include Siffer::Messages
6
+ include Siffer::Exceptions
7
+ include Siffer::Protocols
8
+ include Siffer::CodeSets
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.7
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: 2009-11-23 00:00:00 -07:00
12
+ date: 2008-09-25 00:00:00 -07:00
13
13
  default_executable:
14
- dependencies: []
15
-
16
- description: " Siffer is a SIF that plans to remove the complexity from the implementation.\n Siffer is SIF done easy. It's also the first entirely done in Ruby!\n"
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
- has_rdoc: true
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: "0"
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.3.5
101
+ rubyforge_project: siffer
102
+ rubygems_version: 1.2.0
68
103
  signing_key:
69
- specification_version: 3
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
@@ -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