openagent 0.9.0 → 0.9.1
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/lib/openagent/agent.rb +1 -0
- data/lib/openagent/message_builder.rb +35 -2
- data/lib/openagent/version.rb +1 -1
- data/lib/openagent/zone.rb +1 -1
- data/lib/sif/infra/common/condition_group.rb +8 -2
- data/lib/sif/infra/common/conditions.rb +13 -0
- data/lib/sif/models/groups/sis/section_info.rb +1 -1
- data/lib/sif/models/groups/sis/sis_representer.rb +2 -2
- data/lib/sif/models/groups/sis/student_section_enrollment.rb +2 -2
- data/lib/sif/representations/infra/common/condition_group.rb +3 -2
- data/lib/sif/representations/infra/common/conditions.rb +18 -0
- data/lib/sif/representations/infra/common/query.rb +2 -1
- data/lib/sif/sif.rb +2 -0
- data/spec/fixtures/agent.yaml +9 -1
- data/spec/message_builder_spec.rb +11 -8
- metadata +4 -2
data/lib/openagent/agent.rb
CHANGED
@@ -24,8 +24,41 @@ module OpenAgent
|
|
24
24
|
)
|
25
25
|
)
|
26
26
|
end
|
27
|
+
def condition(cond={})
|
28
|
+
SIF::Infra::Common::Condition.new(
|
29
|
+
:element => cond['element'],
|
30
|
+
:value => cond['value'],
|
31
|
+
:operator => cond['operator']
|
32
|
+
)
|
33
|
+
end
|
34
|
+
|
35
|
+
def conditions(condition_arr={})
|
36
|
+
return false if condition_arr.count == 0
|
37
|
+
condition_arr.map do |c|
|
38
|
+
# require 'pry' ; binding.pry
|
39
|
+
SIF::Infra::Common::Conditions.new(
|
40
|
+
:type => c['cond_type'],
|
41
|
+
:condition => condition(c)
|
42
|
+
)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
def conditions_group(condition_arr={})
|
46
|
+
return false if condition_arr.nil? || condition_arr['conditions'].count == 0
|
47
|
+
if condition_arr['conditions'].count == 1
|
48
|
+
SIF::Infra::Common::ConditionGroup.new(
|
49
|
+
:type => 'None',
|
50
|
+
:conditions => conditions(condition_arr['conditions'])
|
51
|
+
)
|
52
|
+
else
|
53
|
+
SIF::Infra::Common::ConditionGroup.new(
|
54
|
+
:type => condition_arr['group_type'],
|
55
|
+
:conditions => conditions(condition_arr['conditions'])
|
56
|
+
)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
#Condition_hash should = {:type=>"None", :conditions=>[{:type=>"None", :element=>"@SchoolYear", :value=>"2014", :operator=>"EQ"}]}
|
27
60
|
|
28
|
-
def request(object_name,
|
61
|
+
def request(object_name, condition_arr={})
|
29
62
|
SIF::Infra::Common::Message.new(
|
30
63
|
:version => @agent.msg_version,
|
31
64
|
:xmlns => @agent.msg_xmlns,
|
@@ -37,7 +70,7 @@ module OpenAgent
|
|
37
70
|
:query_object => SIF::Infra::Common::QueryObject.new(
|
38
71
|
:object_name => object_name
|
39
72
|
),
|
40
|
-
:condition_group =>
|
73
|
+
:condition_group => conditions_group(condition_arr)
|
41
74
|
)
|
42
75
|
)
|
43
76
|
)
|
data/lib/openagent/version.rb
CHANGED
data/lib/openagent/zone.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require_relative '
|
1
|
+
require_relative 'conditions'
|
2
2
|
|
3
3
|
module SIF
|
4
4
|
module Infra
|
@@ -7,7 +7,13 @@ module SIF
|
|
7
7
|
include Virtus.model
|
8
8
|
|
9
9
|
attribute :type, String
|
10
|
-
attribute :conditions, Array[
|
10
|
+
attribute :conditions, Array[Conditions]
|
11
|
+
|
12
|
+
def empty?
|
13
|
+
return true if conditions.nil?
|
14
|
+
return true if conditions.empty?
|
15
|
+
return false
|
16
|
+
end
|
11
17
|
end
|
12
18
|
end
|
13
19
|
end
|
@@ -5,12 +5,12 @@ module SIF
|
|
5
5
|
module SISRepresenter
|
6
6
|
include Virtus.model
|
7
7
|
|
8
|
-
attribute :extended_elements, Array[MODEL_COMMON::ExtendedElement]
|
8
|
+
attribute :extended_elements, Array[MODEL_COMMON::ExtendedElement], :default => []
|
9
9
|
attribute :metadata, String
|
10
10
|
attribute :ref_id, String
|
11
11
|
|
12
12
|
def find_element(name)
|
13
|
-
return if extended_elements.nil?
|
13
|
+
return nil if extended_elements.nil?
|
14
14
|
el = extended_elements.find{ |e| e.name == name }
|
15
15
|
el ? el.value : nil
|
16
16
|
end
|
@@ -14,8 +14,8 @@ module SIF
|
|
14
14
|
attribute :schedule_info_overrides, Array[Common::ScheduleInfoOverride]
|
15
15
|
attribute :credits_attempted, Common::CreditsAttempted
|
16
16
|
|
17
|
-
def status
|
18
|
-
if
|
17
|
+
def status
|
18
|
+
if entry_date.past? && exit_date.future?
|
19
19
|
'active'
|
20
20
|
else
|
21
21
|
'deleted'
|
@@ -9,8 +9,9 @@ module SIF
|
|
9
9
|
property :type, :as => 'Type', :attribute => true
|
10
10
|
|
11
11
|
collection :conditions, :as => 'SIF_Conditions',
|
12
|
-
:class => SIF::Infra::Common::
|
13
|
-
:decorator =>
|
12
|
+
:class => SIF::Infra::Common::Conditions,
|
13
|
+
:decorator => Conditions
|
14
|
+
|
14
15
|
end
|
15
16
|
end
|
16
17
|
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module SIF
|
2
|
+
module Representation
|
3
|
+
module Infra
|
4
|
+
module Common
|
5
|
+
class Conditions < SIF::Represent
|
6
|
+
|
7
|
+
self.representation_wrap = 'SIF_Conditions'
|
8
|
+
|
9
|
+
property :type, :as => 'Type', :attribute => true
|
10
|
+
|
11
|
+
collection :condition, :as => 'SIF_Condition',
|
12
|
+
:class => SIF::Infra::Common::Condition,
|
13
|
+
:decorator => Condition
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -14,7 +14,8 @@ module SIF
|
|
14
14
|
:decorator => QueryObject
|
15
15
|
property :condition_group, :as => 'SIF_ConditionGroup',
|
16
16
|
:class => SIF::Infra::Common::ConditionGroup,
|
17
|
-
:decorator => ConditionGroup
|
17
|
+
:decorator => ConditionGroup,
|
18
|
+
:if => lambda { !condition_group.empty? }
|
18
19
|
|
19
20
|
property :example, :as => 'SIF_Example'
|
20
21
|
end
|
data/lib/sif/sif.rb
CHANGED
@@ -13,6 +13,7 @@ module SIF
|
|
13
13
|
module Common
|
14
14
|
autoload :Application, 'sif/infra/common/application'
|
15
15
|
autoload :Condition, 'sif/infra/common/condition'
|
16
|
+
autoload :Conditions, 'sif/infra/common/conditions'
|
16
17
|
autoload :ConditionGroup, 'sif/infra/common/condition_group'
|
17
18
|
autoload :Data, 'sif/infra/common/data'
|
18
19
|
autoload :Error, 'sif/infra/common/error'
|
@@ -137,6 +138,7 @@ module SIF
|
|
137
138
|
module Common
|
138
139
|
autoload :Application, 'sif/representations/infra/common/application'
|
139
140
|
autoload :Condition, 'sif/representations/infra/common/condition'
|
141
|
+
autoload :Conditions, 'sif/representations/infra/common/conditions'
|
140
142
|
autoload :ConditionGroup, 'sif/representations/infra/common/condition_group'
|
141
143
|
autoload :Data, 'sif/representations/infra/common/data'
|
142
144
|
autoload :Error, 'sif/representations/infra/common/error'
|
data/spec/fixtures/agent.yaml
CHANGED
@@ -2,6 +2,7 @@ require_relative 'spec_helper'
|
|
2
2
|
require "openagent/message_builder"
|
3
3
|
require "openagent/agent"
|
4
4
|
require "openagent/zone"
|
5
|
+
require "openagent"
|
5
6
|
|
6
7
|
describe OpenAgent::MessageBuilder do
|
7
8
|
|
@@ -24,7 +25,7 @@ describe OpenAgent::MessageBuilder do
|
|
24
25
|
end
|
25
26
|
|
26
27
|
def represent(msg)
|
27
|
-
SIF
|
28
|
+
SIF.repr(msg)
|
28
29
|
end
|
29
30
|
|
30
31
|
it "registers" do
|
@@ -38,8 +39,15 @@ describe OpenAgent::MessageBuilder do
|
|
38
39
|
end
|
39
40
|
|
40
41
|
|
41
|
-
it "requests" do
|
42
|
-
header_checks_out{ builder.request("StudentPersonal", nil) }
|
42
|
+
it "requests without conditions" do
|
43
|
+
msg = header_checks_out{ builder.request("StudentPersonal", nil) }
|
44
|
+
represent(msg).to_xml.should == "<SIF_Message xmlns=\"http://www.sifinfo.org/infrastructure/2.x\" Version=\"2.0r1\">\n <SIF_Request>\n <SIF_Header>\n <SIF_MsgId>GUUID</SIF_MsgId>\n <SIF_Timestamp>TIME</SIF_Timestamp>\n <SIF_SourceId>canvas</SIF_SourceId>\n </SIF_Header>\n <SIF_Version>2.0r1</SIF_Version>\n <SIF_MaxBufferSize>64000</SIF_MaxBufferSize>\n <SIF_Query>\n <SIF_QueryObject ObjectName=\"StudentPersonal\"/>\n </SIF_Query>\n </SIF_Request>\n</SIF_Message>"
|
45
|
+
end
|
46
|
+
|
47
|
+
it "requests with conditions" do
|
48
|
+
conditions_arr = agent.conditions
|
49
|
+
msg = header_checks_out{ builder.request("StudentPersonal", conditions_arr) }
|
50
|
+
represent(msg).to_xml.should == "<SIF_Message xmlns=\"http://www.sifinfo.org/infrastructure/2.x\" Version=\"2.0r1\">\n <SIF_Request>\n <SIF_Header>\n <SIF_MsgId>GUUID</SIF_MsgId>\n <SIF_Timestamp>TIME</SIF_Timestamp>\n <SIF_SourceId>canvas</SIF_SourceId>\n </SIF_Header>\n <SIF_Version>2.0r1</SIF_Version>\n <SIF_MaxBufferSize>64000</SIF_MaxBufferSize>\n <SIF_Query>\n <SIF_QueryObject ObjectName=\"StudentPersonal\"/>\n <SIF_ConditionGroup Type=\"None\">\n <SIF_Conditions Type=\"None\">\n <SIF_Condition>\n <SIF_Element>@SchoolYear</SIF_Element>\n <SIF_Operator>EQ</SIF_Operator>\n <SIF_Value>2014</SIF_Value>\n </SIF_Condition>\n </SIF_Conditions>\n </SIF_ConditionGroup>\n </SIF_Query>\n </SIF_Request>\n</SIF_Message>"
|
43
51
|
end
|
44
52
|
|
45
53
|
it "pings" do
|
@@ -73,9 +81,4 @@ describe OpenAgent::MessageBuilder do
|
|
73
81
|
msg = header_checks_out{builder.provision}
|
74
82
|
represent(msg).to_xml.should == "<SIF_Message xmlns=\"http://www.sifinfo.org/infrastructure/2.x\" Version=\"2.0r1\">\n <SIF_Provision>\n <SIF_Header>\n <SIF_MsgId>GUUID</SIF_MsgId>\n <SIF_Timestamp>TIME</SIF_Timestamp>\n <SIF_SourceId>canvas</SIF_SourceId>\n </SIF_Header>\n <SIF_ProvideObjects/>\n <SIF_SubscribeObjects>\n <SIF_Object ObjectName=\"LEAInfo\"/>\n <SIF_Object ObjectName=\"SchoolInfo\"/>\n <SIF_Object ObjectName=\"TermInfo\"/>\n <SIF_Object ObjectName=\"SchoolCourseInfo\"/>\n <SIF_Object ObjectName=\"SectionInfo\"/>\n <SIF_Object ObjectName=\"StudentPersonal\"/>\n <SIF_Object ObjectName=\"StaffPersonal\"/>\n <SIF_Object ObjectName=\"StudentSectionInfo\"/>\n </SIF_SubscribeObjects>\n <SIF_PublishAddObjects/>\n <SIF_PublishChangeObjects/>\n <SIF_PublishDeleteObjects/>\n <SIF_RequestObjects>\n <SIF_Object ObjectName=\"LEAInfo\"/>\n <SIF_Object ObjectName=\"SchoolInfo\"/>\n <SIF_Object ObjectName=\"TermInfo\"/>\n <SIF_Object ObjectName=\"SchoolCourseInfo\"/>\n <SIF_Object ObjectName=\"SectionInfo\"/>\n <SIF_Object ObjectName=\"StudentPersonal\"/>\n <SIF_Object ObjectName=\"StaffPersonal\"/>\n <SIF_Object ObjectName=\"StudentSectionInfo\"/>\n </SIF_RequestObjects>\n <SIF_RespondObjects/>\n </SIF_Provision>\n</SIF_Message>"
|
75
83
|
end
|
76
|
-
|
77
|
-
it "requests" do
|
78
|
-
msg = header_checks_out{builder.request("StudentPersonal")}
|
79
|
-
represent(msg).to_xml.should == "<SIF_Message xmlns=\"http://www.sifinfo.org/infrastructure/2.x\" Version=\"2.0r1\">\n <SIF_Request>\n <SIF_Header>\n <SIF_MsgId>GUUID</SIF_MsgId>\n <SIF_Timestamp>TIME</SIF_Timestamp>\n <SIF_SourceId>canvas</SIF_SourceId>\n </SIF_Header>\n <SIF_Version>2.0r1</SIF_Version>\n <SIF_MaxBufferSize>64000</SIF_MaxBufferSize>\n <SIF_Query>\n <SIF_QueryObject ObjectName=\"StudentPersonal\"/>\n </SIF_Query>\n </SIF_Request>\n</SIF_Message>"
|
80
|
-
end
|
81
84
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: openagent
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2014-
|
14
|
+
date: 2014-02-06 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: rake
|
@@ -197,6 +197,7 @@ files:
|
|
197
197
|
- lib/sif/infra/common/application.rb
|
198
198
|
- lib/sif/infra/common/condition.rb
|
199
199
|
- lib/sif/infra/common/condition_group.rb
|
200
|
+
- lib/sif/infra/common/conditions.rb
|
200
201
|
- lib/sif/infra/common/data.rb
|
201
202
|
- lib/sif/infra/common/error.rb
|
202
203
|
- lib/sif/infra/common/event.rb
|
@@ -296,6 +297,7 @@ files:
|
|
296
297
|
- lib/sif/representations/infra/common/application.rb
|
297
298
|
- lib/sif/representations/infra/common/condition.rb
|
298
299
|
- lib/sif/representations/infra/common/condition_group.rb
|
300
|
+
- lib/sif/representations/infra/common/conditions.rb
|
299
301
|
- lib/sif/representations/infra/common/data.rb
|
300
302
|
- lib/sif/representations/infra/common/error.rb
|
301
303
|
- lib/sif/representations/infra/common/event.rb
|