openagent 0.7.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.
Files changed (221) hide show
  1. data/README.md +64 -0
  2. data/lib/openagent.rb +4 -0
  3. data/lib/openagent/agent.rb +24 -0
  4. data/lib/openagent/client.rb +170 -0
  5. data/lib/openagent/errors.rb +30 -0
  6. data/lib/openagent/message_builder.rb +171 -0
  7. data/lib/openagent/ssl_config.rb +26 -0
  8. data/lib/openagent/version.rb +3 -0
  9. data/lib/openagent/xml_helpers.rb +24 -0
  10. data/lib/openagent/zone.rb +58 -0
  11. data/lib/sif/infra/common/application.rb +13 -0
  12. data/lib/sif/infra/common/condition.rb +13 -0
  13. data/lib/sif/infra/common/condition_group.rb +14 -0
  14. data/lib/sif/infra/common/data.rb +11 -0
  15. data/lib/sif/infra/common/error.rb +14 -0
  16. data/lib/sif/infra/common/event.rb +0 -0
  17. data/lib/sif/infra/common/event_object.rb +12 -0
  18. data/lib/sif/infra/common/extended_query.rb +15 -0
  19. data/lib/sif/infra/common/extended_query_results.rb +12 -0
  20. data/lib/sif/infra/common/header.rb +27 -0
  21. data/lib/sif/infra/common/message.rb +49 -0
  22. data/lib/sif/infra/common/object.rb +11 -0
  23. data/lib/sif/infra/common/object_data.rb +46 -0
  24. data/lib/sif/infra/common/other_id.rb +12 -0
  25. data/lib/sif/infra/common/property.rb +12 -0
  26. data/lib/sif/infra/common/protocol.rb +16 -0
  27. data/lib/sif/infra/common/provision.rb +17 -0
  28. data/lib/sif/infra/common/query.rb +16 -0
  29. data/lib/sif/infra/common/query_object.rb +12 -0
  30. data/lib/sif/infra/common/secure_channel.rb +12 -0
  31. data/lib/sif/infra/common/security.rb +13 -0
  32. data/lib/sif/infra/common/status.rb +16 -0
  33. data/lib/sif/infra/common/unprovision.rb +9 -0
  34. data/lib/sif/infra/common/vendor.rb +13 -0
  35. data/lib/sif/infra/messages/ack.rb +16 -0
  36. data/lib/sif/infra/messages/event.rb +12 -0
  37. data/lib/sif/infra/messages/get_agent_acl.rb +11 -0
  38. data/lib/sif/infra/messages/get_message.rb +11 -0
  39. data/lib/sif/infra/messages/get_zone_status.rb +10 -0
  40. data/lib/sif/infra/messages/ping.rb +10 -0
  41. data/lib/sif/infra/messages/provide.rb +16 -0
  42. data/lib/sif/infra/messages/provision.rb +18 -0
  43. data/lib/sif/infra/messages/register.rb +21 -0
  44. data/lib/sif/infra/messages/request.rb +16 -0
  45. data/lib/sif/infra/messages/responder.rb +9 -0
  46. data/lib/sif/infra/messages/response.rb +18 -0
  47. data/lib/sif/infra/messages/sleep.rb +11 -0
  48. data/lib/sif/infra/messages/subscribe.rb +12 -0
  49. data/lib/sif/infra/messages/system_control.rb +15 -0
  50. data/lib/sif/infra/messages/system_control_data.rb +39 -0
  51. data/lib/sif/infra/messages/unprovide.rb +12 -0
  52. data/lib/sif/infra/messages/unregister.rb +11 -0
  53. data/lib/sif/infra/messages/unsubscribe.rb +12 -0
  54. data/lib/sif/infra/messages/wakeup.rb +11 -0
  55. data/lib/sif/infra/messages/zone_status_role.rb +12 -0
  56. data/lib/sif/infra/objects/agent_acl.rb +19 -0
  57. data/lib/sif/infra/objects/zone_status.rb +30 -0
  58. data/lib/sif/models/common/address.rb +21 -0
  59. data/lib/sif/models/common/alert_message.rb +12 -0
  60. data/lib/sif/models/common/base_name.rb +12 -0
  61. data/lib/sif/models/common/calendar_summary.rb +28 -0
  62. data/lib/sif/models/common/code.rb +12 -0
  63. data/lib/sif/models/common/contact_info.rb +21 -0
  64. data/lib/sif/models/common/credits_attempted.rb +12 -0
  65. data/lib/sif/models/common/demographics.rb +31 -0
  66. data/lib/sif/models/common/dwelling_arrangement.rb +14 -0
  67. data/lib/sif/models/common/earned_status.rb +15 -0
  68. data/lib/sif/models/common/electronic_id.rb +12 -0
  69. data/lib/sif/models/common/email.rb +13 -0
  70. data/lib/sif/models/common/english_proficiency.rb +14 -0
  71. data/lib/sif/models/common/exceptionality_category.rb +13 -0
  72. data/lib/sif/models/common/grade_level.rb +12 -0
  73. data/lib/sif/models/common/grid_location.rb +12 -0
  74. data/lib/sif/models/common/identification_info.rb +12 -0
  75. data/lib/sif/models/common/language.rb +14 -0
  76. data/lib/sif/models/common/meal_status.rb +16 -0
  77. data/lib/sif/models/common/medical_alert_message.rb +12 -0
  78. data/lib/sif/models/common/meeting_time.rb +12 -0
  79. data/lib/sif/models/common/name.rb +19 -0
  80. data/lib/sif/models/common/other_code.rb +12 -0
  81. data/lib/sif/models/common/other_id.rb +12 -0
  82. data/lib/sif/models/common/phone_number.rb +15 -0
  83. data/lib/sif/models/common/principal_info.rb +12 -0
  84. data/lib/sif/models/common/race.rb +15 -0
  85. data/lib/sif/models/common/sced_code.rb +15 -0
  86. data/lib/sif/models/common/schedule_info.rb +14 -0
  87. data/lib/sif/models/common/schedule_info_override.rb +13 -0
  88. data/lib/sif/models/common/school_contact.rb +13 -0
  89. data/lib/sif/models/common/school_course_info_override.rb +18 -0
  90. data/lib/sif/models/common/street.rb +22 -0
  91. data/lib/sif/models/common/subject_area.rb +13 -0
  92. data/lib/sif/models/groups/data_model/term_span.rb +14 -0
  93. data/lib/sif/models/groups/sis/attendance_code_info.rb +23 -0
  94. data/lib/sif/models/groups/sis/calendar_date.rb +25 -0
  95. data/lib/sif/models/groups/sis/discipline_incident.rb +31 -0
  96. data/lib/sif/models/groups/sis/lea_info.rb +28 -0
  97. data/lib/sif/models/groups/sis/personal_representer.rb +22 -0
  98. data/lib/sif/models/groups/sis/school_course_info.rb +30 -0
  99. data/lib/sif/models/groups/sis/school_info.rb +32 -0
  100. data/lib/sif/models/groups/sis/section_info.rb +26 -0
  101. data/lib/sif/models/groups/sis/sis_representer.rb +15 -0
  102. data/lib/sif/models/groups/sis/staff_personal.rb +20 -0
  103. data/lib/sif/models/groups/sis/student_personal.rb +37 -0
  104. data/lib/sif/models/groups/sis/student_section_enrollment.rb +21 -0
  105. data/lib/sif/models/groups/sis/term_info.rb +29 -0
  106. data/lib/sif/representations/infra/common/application.rb +16 -0
  107. data/lib/sif/representations/infra/common/condition.rb +16 -0
  108. data/lib/sif/representations/infra/common/condition_group.rb +18 -0
  109. data/lib/sif/representations/infra/common/data.rb +17 -0
  110. data/lib/sif/representations/infra/common/error.rb +17 -0
  111. data/lib/sif/representations/infra/common/event.rb +0 -0
  112. data/lib/sif/representations/infra/common/event_object.rb +15 -0
  113. data/lib/sif/representations/infra/common/extended_query.rb +18 -0
  114. data/lib/sif/representations/infra/common/extended_query_results.rb +15 -0
  115. data/lib/sif/representations/infra/common/header.rb +23 -0
  116. data/lib/sif/representations/infra/common/message.rb +54 -0
  117. data/lib/sif/representations/infra/common/object.rb +14 -0
  118. data/lib/sif/representations/infra/common/object_data.rb +43 -0
  119. data/lib/sif/representations/infra/common/other_id.rb +15 -0
  120. data/lib/sif/representations/infra/common/property.rb +15 -0
  121. data/lib/sif/representations/infra/common/protocol.rb +22 -0
  122. data/lib/sif/representations/infra/common/provision.rb +38 -0
  123. data/lib/sif/representations/infra/common/query.rb +24 -0
  124. data/lib/sif/representations/infra/common/query_object.rb +15 -0
  125. data/lib/sif/representations/infra/common/secure_channel.rb +15 -0
  126. data/lib/sif/representations/infra/common/security.rb +18 -0
  127. data/lib/sif/representations/infra/common/status.rb +18 -0
  128. data/lib/sif/representations/infra/messages/ack.rb +25 -0
  129. data/lib/sif/representations/infra/messages/event.rb +19 -0
  130. data/lib/sif/representations/infra/messages/get_message.rb +12 -0
  131. data/lib/sif/representations/infra/messages/ping.rb +13 -0
  132. data/lib/sif/representations/infra/messages/provide.rb +19 -0
  133. data/lib/sif/representations/infra/messages/provision.rb +37 -0
  134. data/lib/sif/representations/infra/messages/register.rb +30 -0
  135. data/lib/sif/representations/infra/messages/request.rb +24 -0
  136. data/lib/sif/representations/infra/messages/response.rb +29 -0
  137. data/lib/sif/representations/infra/messages/sleep.rb +14 -0
  138. data/lib/sif/representations/infra/messages/subscribe.rb +19 -0
  139. data/lib/sif/representations/infra/messages/system_control.rb +23 -0
  140. data/lib/sif/representations/infra/messages/system_control_data.rb +31 -0
  141. data/lib/sif/representations/infra/messages/wakeup.rb +14 -0
  142. data/lib/sif/representations/models/common/address.rb +24 -0
  143. data/lib/sif/representations/models/common/alert_message.rb +16 -0
  144. data/lib/sif/representations/models/common/contact_info.rb +28 -0
  145. data/lib/sif/representations/models/common/credits_attempted.rb +15 -0
  146. data/lib/sif/representations/models/common/demographics.rb +43 -0
  147. data/lib/sif/representations/models/common/dwelling_arrangement.rb +18 -0
  148. data/lib/sif/representations/models/common/electronic_id.rb +16 -0
  149. data/lib/sif/representations/models/common/email.rb +16 -0
  150. data/lib/sif/representations/models/common/english_proficiency.rb +17 -0
  151. data/lib/sif/representations/models/common/identification_info.rb +16 -0
  152. data/lib/sif/representations/models/common/language.rb +19 -0
  153. data/lib/sif/representations/models/common/medical_alert_message.rb +15 -0
  154. data/lib/sif/representations/models/common/meeting_time.rb +16 -0
  155. data/lib/sif/representations/models/common/name.rb +22 -0
  156. data/lib/sif/representations/models/common/other_code.rb +15 -0
  157. data/lib/sif/representations/models/common/other_id.rb +15 -0
  158. data/lib/sif/representations/models/common/phone_number.rb +18 -0
  159. data/lib/sif/representations/models/common/principal_info.rb +15 -0
  160. data/lib/sif/representations/models/common/race.rb +18 -0
  161. data/lib/sif/representations/models/common/sced_code.rb +18 -0
  162. data/lib/sif/representations/models/common/schedule_info.rb +19 -0
  163. data/lib/sif/representations/models/common/schedule_info_override.rb +18 -0
  164. data/lib/sif/representations/models/common/school_contact.rb +17 -0
  165. data/lib/sif/representations/models/common/school_course_info_override.rb +21 -0
  166. data/lib/sif/representations/models/common/street.rb +26 -0
  167. data/lib/sif/representations/models/common/subject_area.rb +17 -0
  168. data/lib/sif/representations/models/groups/data_model/term_span.rb +20 -0
  169. data/lib/sif/representations/models/groups/sis/personal_representer.rb +38 -0
  170. data/lib/sif/representations/models/groups/sis/school_course_info.rb +36 -0
  171. data/lib/sif/representations/models/groups/sis/school_info.rb +47 -0
  172. data/lib/sif/representations/models/groups/sis/section_info.rb +29 -0
  173. data/lib/sif/representations/models/groups/sis/sis_representer.rb +17 -0
  174. data/lib/sif/representations/models/groups/sis/staff_personal.rb +19 -0
  175. data/lib/sif/representations/models/groups/sis/student_personal.rb +37 -0
  176. data/lib/sif/representations/models/groups/sis/student_section_enrollment.rb +26 -0
  177. data/lib/sif/representations/models/groups/sis/term_info.rb +30 -0
  178. data/lib/sif/sif.rb +249 -0
  179. data/openagent.gemspec +33 -0
  180. data/spec/agent_spec.rb +32 -0
  181. data/spec/client_spec.rb +96 -0
  182. data/spec/fixtures/agent.yaml +31 -0
  183. data/spec/fixtures/messages/event.xml +72 -0
  184. data/spec/fixtures/messages/response.xml +107 -0
  185. data/spec/fixtures/sif/attendance_code_info.xml +9 -0
  186. data/spec/fixtures/sif/calendar_date.xml +22 -0
  187. data/spec/fixtures/sif/calendar_summary.xml +21 -0
  188. data/spec/fixtures/sif/demographics.xml +33 -0
  189. data/spec/fixtures/sif/discipline_incident.xml +70 -0
  190. data/spec/fixtures/sif/lea_info.xml +55 -0
  191. data/spec/fixtures/sif/section_info.xml +1536 -0
  192. data/spec/fixtures/sif/sif_header.xml +12 -0
  193. data/spec/fixtures/sif/sif_message__response.xml +107 -0
  194. data/spec/fixtures/sif/sif_object_data.xml +5 -0
  195. data/spec/fixtures/sif/sif_protocol.xml +3 -0
  196. data/spec/fixtures/sif/sif_protocol__properties.xml +10 -0
  197. data/spec/fixtures/sif/sif_provide.xml +9 -0
  198. data/spec/fixtures/sif/sif_provision.xml +33 -0
  199. data/spec/fixtures/sif/sif_register.xml +20 -0
  200. data/spec/fixtures/sif/sif_request.xml +21 -0
  201. data/spec/fixtures/sif/sif_response.xml +19 -0
  202. data/spec/fixtures/sif/sif_system_control.xml +10 -0
  203. data/spec/fixtures/sif/stu_pers_resp.xml +2 -0
  204. data/spec/fixtures/sif/student_personal.xml +42 -0
  205. data/spec/fixtures/zone.yaml +6 -0
  206. data/spec/message_builder_spec.rb +81 -0
  207. data/spec/response_spec.rb +35 -0
  208. data/spec/sif/representations/xml/header_spec.rb +30 -0
  209. data/spec/sif/representations/xml/message_spec.rb +20 -0
  210. data/spec/sif/representations/xml/object_data_spec.rb +19 -0
  211. data/spec/sif/representations/xml/protocol_spec.rb +34 -0
  212. data/spec/sif/representations/xml/provide_spec.rb +19 -0
  213. data/spec/sif/representations/xml/provision_spec.rb +56 -0
  214. data/spec/sif/representations/xml/register_spec.rb +17 -0
  215. data/spec/sif/representations/xml/request_spec.rb +17 -0
  216. data/spec/sif/representations/xml/response_spec.rb +16 -0
  217. data/spec/sif/representations/xml/spec_helper.rb +7 -0
  218. data/spec/sif/representations/xml/student_personal_spec.rb +69 -0
  219. data/spec/spec_helper.rb +7 -0
  220. data/spec/zone_spec.rb +26 -0
  221. metadata +455 -0
@@ -0,0 +1,26 @@
1
+ require "net/https"
2
+ require "virtus"
3
+
4
+ module OpenAgent
5
+ class SSLConfig
6
+ include Virtus.model
7
+
8
+ attribute :verify_mode, Integer, :default => OpenSSL::SSL::VERIFY_NONE
9
+ attribute :client_cert
10
+ attribute :client_key
11
+ attribute :ca_file
12
+
13
+ def configure(conn)
14
+ conn.use_ssl = true
15
+ conn.verify_mode = verify_mode
16
+
17
+ conn.cert = client_cert if client_cert
18
+ conn.key = client_key if client_key
19
+ conn.ca_file = ca_file if ca_file
20
+ end
21
+
22
+ def cert_key
23
+ "#{client_cert} #{client_key}"
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,3 @@
1
+ module OpenAgent
2
+ VERSION = '0.7.1' unless defined?(OpenAgent::VERSION)
3
+ end
@@ -0,0 +1,24 @@
1
+ require "nokogiri"
2
+
3
+ module OpenAgent
4
+ module XMLHelpers
5
+ PP_XSLT = File.read(File.join(File.dirname(__FILE__), 'pretty_print.xslt'))
6
+ PP_XSL = Nokogiri::XSLT(PP_XSLT)
7
+
8
+ def formatted_xml(xml, pretty_print=true)
9
+ pretty_print ? parse_well_formed_xml(xml) : xml
10
+ end
11
+
12
+ def pretty_xml(doc)
13
+ PP_XSL.apply_to(doc).to_s
14
+ end
15
+
16
+ # If XML is well-formed, reformat it as a pretty XML document.
17
+ def parse_well_formed_xml(xml)
18
+ doc = Nokogiri::XML(xml){ |c| c.strict }
19
+ pretty_xml(doc)
20
+ rescue Nokogiri::XML::SyntaxError
21
+ xml
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,58 @@
1
+ require "net/http"
2
+ require "net/https"
3
+ require "uuid"
4
+ require "uri"
5
+
6
+ require_relative "ssl_config"
7
+
8
+ require "virtus"
9
+
10
+ module OpenAgent
11
+ class Zone
12
+ include Virtus.model
13
+
14
+ attribute :uri
15
+ attribute :timeout, Float, :default => 60
16
+ attribute :open_timeout, Float, :default => 30
17
+ attribute :ssl, SSLConfig
18
+
19
+ def connection
20
+ @connection ||= Net::HTTP.new(host, port).tap do |conn|
21
+ ssl.configure(conn) if ssl
22
+ conn.read_timeout = timeout if timeout
23
+ conn.open_timeout = open_timeout if open_timeout
24
+ end
25
+ end
26
+
27
+ def url
28
+ @url ||= URI.parse(uri)
29
+ end
30
+
31
+ def host
32
+ url.host
33
+ end
34
+
35
+ def port
36
+ url.port
37
+ end
38
+
39
+ def path
40
+ url.path == "" ? "/" : url.path
41
+ end
42
+
43
+ def create_request(msg)
44
+ Net::HTTP::Post.new(path).tap do |post|
45
+ post.body = msg.to_s
46
+ post.content_type = "application/xml"
47
+ end
48
+ end
49
+
50
+ def send_request(request)
51
+ connection.request(request)
52
+ end
53
+
54
+ def send_message(msg)
55
+ send_request(create_request(msg))
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,13 @@
1
+ module SIF
2
+ module Infra
3
+ module Common
4
+ class Application
5
+ include Virtus.model
6
+
7
+ attribute :vendor, String
8
+ attribute :product, String
9
+ attribute :version, String
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ module SIF
2
+ module Infra
3
+ module Common
4
+ class Condition
5
+ include Virtus.model
6
+
7
+ attribute :element, String
8
+ attribute :operator, String
9
+ attribute :value, String
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,14 @@
1
+ require_relative 'condition'
2
+
3
+ module SIF
4
+ module Infra
5
+ module Common
6
+ class ConditionGroup
7
+ include Virtus.model
8
+
9
+ attribute :type, String
10
+ attribute :conditions, Array[Condition]
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,11 @@
1
+ module SIF
2
+ module Infra
3
+ module Common
4
+ class Data
5
+ include Virtus.model
6
+
7
+ attribute :message
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,14 @@
1
+ module SIF
2
+ module Infra
3
+ module Common
4
+ class Error
5
+ include Virtus.model
6
+
7
+ attribute :category, String
8
+ attribute :code, String
9
+ attribute :desc, String
10
+ attribute :extended_desc, String
11
+ end
12
+ end
13
+ end
14
+ end
File without changes
@@ -0,0 +1,12 @@
1
+ module SIF
2
+ module Infra
3
+ module Common
4
+ class EventObject
5
+ include Virtus.model
6
+
7
+ attribute :object_name, String
8
+ attribute :action, String
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,15 @@
1
+ module SIF
2
+ module Infra
3
+ module Common
4
+ class ExtendedQuery
5
+ include Virtus.model
6
+
7
+ attribute :destination_provider
8
+ attribute :select
9
+ attribute :from
10
+ attribute :where
11
+ attribute :order_by
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,12 @@
1
+ module SIF
2
+ module Infra
3
+ module Common
4
+ class ExtendedQueryResults
5
+ include Virtus.model
6
+
7
+ attribute :column_headers
8
+ attribute :rows
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,27 @@
1
+ require_relative 'security'
2
+
3
+ module SIF
4
+ module Infra
5
+ module Common
6
+ class Header
7
+ include Virtus.model
8
+
9
+ attribute :security, Security
10
+
11
+ attribute :msg_id, String
12
+ attribute :timestamp, DateTime
13
+ attribute :source_id, String
14
+ attribute :destination_id, String
15
+ attribute :contexts, Array[String]
16
+
17
+ def authentication_level
18
+ security.secure_channel.authentication_level
19
+ end
20
+
21
+ def encryption_level
22
+ security.secure_channel.encryption_level
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,49 @@
1
+ module SIF
2
+ module Infra
3
+ module Common
4
+ class Message
5
+ include Virtus.model
6
+
7
+ attribute :xmlns, String
8
+ attribute :version, String
9
+
10
+ attribute :ack
11
+ attribute :event
12
+ attribute :provide
13
+ attribute :provision
14
+ attribute :register
15
+ attribute :request
16
+ attribute :response
17
+ attribute :subscribe
18
+ attribute :system_control
19
+ attribute :unprovide
20
+ attribute :unregister
21
+ attribute :unsubscribe
22
+
23
+ def inner_message
24
+ ack.status.data.message
25
+ rescue NoMethodError
26
+ nil
27
+ end
28
+ def response_objects
29
+ inner_message.response.object_data.objects
30
+ rescue NoMethodError
31
+ nil
32
+ end
33
+ def type
34
+ if event then :event else :response end
35
+ end
36
+
37
+ def content
38
+ ack || event || provide || provision ||
39
+ register || request || response || subscribe ||
40
+ system_control || unprovide || unregister || unsubscribe
41
+ end
42
+
43
+ def msg_id
44
+ content && content.header.msg_id
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,11 @@
1
+ module SIF
2
+ module Infra
3
+ module Common
4
+ class Object
5
+ include Virtus.model
6
+
7
+ attribute :object_name, String
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,46 @@
1
+ module SIF
2
+ module Infra
3
+ module Common
4
+ class ObjectData
5
+ include Virtus.model
6
+
7
+ attribute :event_object, Common::EventObject
8
+
9
+ # attribute :lea_infos, Array[SIF::Model::Group::SIS::LEAInfo]
10
+ attribute :school_course_infos,
11
+ Array[SIF::Model::Group::SIS::SchoolCourseInfo], :default => []
12
+ attribute :school_infos,
13
+ Array[SIF::Model::Group::SIS::SchoolInfo], :default => []
14
+ attribute :staff_personals,
15
+ Array[SIF::Model::Group::SIS::StaffPersonal], :default => []
16
+ attribute :student_personals,
17
+ Array[SIF::Model::Group::SIS::StudentPersonal], :default => []
18
+ attribute :student_section_enrollments,
19
+ Array[SIF::Model::Group::SIS::StudentSectionEnrollment], :default => []
20
+ attribute :term_infos,
21
+ Array[SIF::Model::Group::SIS::TermInfo], :default => []
22
+ attribute :section_infos,
23
+ Array[SIF::Model::Group::SIS::SectionInfo], :default => []
24
+ def objects
25
+ school_course_infos +
26
+ school_infos +
27
+ staff_personals +
28
+ student_personals +
29
+ student_section_enrollments +
30
+ term_infos +
31
+ section_infos
32
+ end
33
+
34
+ def datatype
35
+ return :school_course_info unless school_course_infos.empty?
36
+ return :school_info unless school_infos.empty?
37
+ return :staff_personal unless staff_personals.empty?
38
+ return :student_personal unless student_personals.empty?
39
+ return :student_section_enrollment unless student_section_enrollments.empty?
40
+ return :term_info unless term_infos.empty?
41
+ return :section_info unless section_infos.empty?
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,12 @@
1
+ module SIF
2
+ module Infra
3
+ module Common
4
+ class OtherId
5
+ include Virtus.model
6
+
7
+ attribute :type, String
8
+ attribute :value, String
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ module SIF
2
+ module Infra
3
+ module Common
4
+ class Property
5
+ include Virtus.model
6
+
7
+ attribute :name, String
8
+ attribute :value, String
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,16 @@
1
+ require_relative 'property'
2
+
3
+ module SIF
4
+ module Infra
5
+ module Common
6
+ class Protocol
7
+ include Virtus.model
8
+
9
+ attribute :type, String
10
+ attribute :secure, String
11
+ attribute :url, String
12
+ attribute :properties, Array[Property]
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,17 @@
1
+ module SIF
2
+ module Infra
3
+ module Common
4
+ class Provision
5
+ include Virtus.model
6
+ attribute :header, Common::Header
7
+ attribute :provide_objects, Array[Common::Object]
8
+ attribute :subscribe_objects, Array[Common::Object]
9
+ attribute :publish_add_objects, Array[Common::Object]
10
+ attribute :publish_change_objects, Array[Common::Object]
11
+ attribute :publish_delete_objects, Array[Common::Object]
12
+ attribute :request_objects, Array[Common::Object]
13
+ attribute :respond_objects, Array[Common::Object]
14
+ end
15
+ end
16
+ end
17
+ end