siffer 0.0.7 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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