openagent 0.7.1
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +64 -0
- data/lib/openagent.rb +4 -0
- data/lib/openagent/agent.rb +24 -0
- data/lib/openagent/client.rb +170 -0
- data/lib/openagent/errors.rb +30 -0
- data/lib/openagent/message_builder.rb +171 -0
- data/lib/openagent/ssl_config.rb +26 -0
- data/lib/openagent/version.rb +3 -0
- data/lib/openagent/xml_helpers.rb +24 -0
- data/lib/openagent/zone.rb +58 -0
- data/lib/sif/infra/common/application.rb +13 -0
- data/lib/sif/infra/common/condition.rb +13 -0
- data/lib/sif/infra/common/condition_group.rb +14 -0
- data/lib/sif/infra/common/data.rb +11 -0
- data/lib/sif/infra/common/error.rb +14 -0
- data/lib/sif/infra/common/event.rb +0 -0
- data/lib/sif/infra/common/event_object.rb +12 -0
- data/lib/sif/infra/common/extended_query.rb +15 -0
- data/lib/sif/infra/common/extended_query_results.rb +12 -0
- data/lib/sif/infra/common/header.rb +27 -0
- data/lib/sif/infra/common/message.rb +49 -0
- data/lib/sif/infra/common/object.rb +11 -0
- data/lib/sif/infra/common/object_data.rb +46 -0
- data/lib/sif/infra/common/other_id.rb +12 -0
- data/lib/sif/infra/common/property.rb +12 -0
- data/lib/sif/infra/common/protocol.rb +16 -0
- data/lib/sif/infra/common/provision.rb +17 -0
- data/lib/sif/infra/common/query.rb +16 -0
- data/lib/sif/infra/common/query_object.rb +12 -0
- data/lib/sif/infra/common/secure_channel.rb +12 -0
- data/lib/sif/infra/common/security.rb +13 -0
- data/lib/sif/infra/common/status.rb +16 -0
- data/lib/sif/infra/common/unprovision.rb +9 -0
- data/lib/sif/infra/common/vendor.rb +13 -0
- data/lib/sif/infra/messages/ack.rb +16 -0
- data/lib/sif/infra/messages/event.rb +12 -0
- data/lib/sif/infra/messages/get_agent_acl.rb +11 -0
- data/lib/sif/infra/messages/get_message.rb +11 -0
- data/lib/sif/infra/messages/get_zone_status.rb +10 -0
- data/lib/sif/infra/messages/ping.rb +10 -0
- data/lib/sif/infra/messages/provide.rb +16 -0
- data/lib/sif/infra/messages/provision.rb +18 -0
- data/lib/sif/infra/messages/register.rb +21 -0
- data/lib/sif/infra/messages/request.rb +16 -0
- data/lib/sif/infra/messages/responder.rb +9 -0
- data/lib/sif/infra/messages/response.rb +18 -0
- data/lib/sif/infra/messages/sleep.rb +11 -0
- data/lib/sif/infra/messages/subscribe.rb +12 -0
- data/lib/sif/infra/messages/system_control.rb +15 -0
- data/lib/sif/infra/messages/system_control_data.rb +39 -0
- data/lib/sif/infra/messages/unprovide.rb +12 -0
- data/lib/sif/infra/messages/unregister.rb +11 -0
- data/lib/sif/infra/messages/unsubscribe.rb +12 -0
- data/lib/sif/infra/messages/wakeup.rb +11 -0
- data/lib/sif/infra/messages/zone_status_role.rb +12 -0
- data/lib/sif/infra/objects/agent_acl.rb +19 -0
- data/lib/sif/infra/objects/zone_status.rb +30 -0
- data/lib/sif/models/common/address.rb +21 -0
- data/lib/sif/models/common/alert_message.rb +12 -0
- data/lib/sif/models/common/base_name.rb +12 -0
- data/lib/sif/models/common/calendar_summary.rb +28 -0
- data/lib/sif/models/common/code.rb +12 -0
- data/lib/sif/models/common/contact_info.rb +21 -0
- data/lib/sif/models/common/credits_attempted.rb +12 -0
- data/lib/sif/models/common/demographics.rb +31 -0
- data/lib/sif/models/common/dwelling_arrangement.rb +14 -0
- data/lib/sif/models/common/earned_status.rb +15 -0
- data/lib/sif/models/common/electronic_id.rb +12 -0
- data/lib/sif/models/common/email.rb +13 -0
- data/lib/sif/models/common/english_proficiency.rb +14 -0
- data/lib/sif/models/common/exceptionality_category.rb +13 -0
- data/lib/sif/models/common/grade_level.rb +12 -0
- data/lib/sif/models/common/grid_location.rb +12 -0
- data/lib/sif/models/common/identification_info.rb +12 -0
- data/lib/sif/models/common/language.rb +14 -0
- data/lib/sif/models/common/meal_status.rb +16 -0
- data/lib/sif/models/common/medical_alert_message.rb +12 -0
- data/lib/sif/models/common/meeting_time.rb +12 -0
- data/lib/sif/models/common/name.rb +19 -0
- data/lib/sif/models/common/other_code.rb +12 -0
- data/lib/sif/models/common/other_id.rb +12 -0
- data/lib/sif/models/common/phone_number.rb +15 -0
- data/lib/sif/models/common/principal_info.rb +12 -0
- data/lib/sif/models/common/race.rb +15 -0
- data/lib/sif/models/common/sced_code.rb +15 -0
- data/lib/sif/models/common/schedule_info.rb +14 -0
- data/lib/sif/models/common/schedule_info_override.rb +13 -0
- data/lib/sif/models/common/school_contact.rb +13 -0
- data/lib/sif/models/common/school_course_info_override.rb +18 -0
- data/lib/sif/models/common/street.rb +22 -0
- data/lib/sif/models/common/subject_area.rb +13 -0
- data/lib/sif/models/groups/data_model/term_span.rb +14 -0
- data/lib/sif/models/groups/sis/attendance_code_info.rb +23 -0
- data/lib/sif/models/groups/sis/calendar_date.rb +25 -0
- data/lib/sif/models/groups/sis/discipline_incident.rb +31 -0
- data/lib/sif/models/groups/sis/lea_info.rb +28 -0
- data/lib/sif/models/groups/sis/personal_representer.rb +22 -0
- data/lib/sif/models/groups/sis/school_course_info.rb +30 -0
- data/lib/sif/models/groups/sis/school_info.rb +32 -0
- data/lib/sif/models/groups/sis/section_info.rb +26 -0
- data/lib/sif/models/groups/sis/sis_representer.rb +15 -0
- data/lib/sif/models/groups/sis/staff_personal.rb +20 -0
- data/lib/sif/models/groups/sis/student_personal.rb +37 -0
- data/lib/sif/models/groups/sis/student_section_enrollment.rb +21 -0
- data/lib/sif/models/groups/sis/term_info.rb +29 -0
- data/lib/sif/representations/infra/common/application.rb +16 -0
- data/lib/sif/representations/infra/common/condition.rb +16 -0
- data/lib/sif/representations/infra/common/condition_group.rb +18 -0
- data/lib/sif/representations/infra/common/data.rb +17 -0
- data/lib/sif/representations/infra/common/error.rb +17 -0
- data/lib/sif/representations/infra/common/event.rb +0 -0
- data/lib/sif/representations/infra/common/event_object.rb +15 -0
- data/lib/sif/representations/infra/common/extended_query.rb +18 -0
- data/lib/sif/representations/infra/common/extended_query_results.rb +15 -0
- data/lib/sif/representations/infra/common/header.rb +23 -0
- data/lib/sif/representations/infra/common/message.rb +54 -0
- data/lib/sif/representations/infra/common/object.rb +14 -0
- data/lib/sif/representations/infra/common/object_data.rb +43 -0
- data/lib/sif/representations/infra/common/other_id.rb +15 -0
- data/lib/sif/representations/infra/common/property.rb +15 -0
- data/lib/sif/representations/infra/common/protocol.rb +22 -0
- data/lib/sif/representations/infra/common/provision.rb +38 -0
- data/lib/sif/representations/infra/common/query.rb +24 -0
- data/lib/sif/representations/infra/common/query_object.rb +15 -0
- data/lib/sif/representations/infra/common/secure_channel.rb +15 -0
- data/lib/sif/representations/infra/common/security.rb +18 -0
- data/lib/sif/representations/infra/common/status.rb +18 -0
- data/lib/sif/representations/infra/messages/ack.rb +25 -0
- data/lib/sif/representations/infra/messages/event.rb +19 -0
- data/lib/sif/representations/infra/messages/get_message.rb +12 -0
- data/lib/sif/representations/infra/messages/ping.rb +13 -0
- data/lib/sif/representations/infra/messages/provide.rb +19 -0
- data/lib/sif/representations/infra/messages/provision.rb +37 -0
- data/lib/sif/representations/infra/messages/register.rb +30 -0
- data/lib/sif/representations/infra/messages/request.rb +24 -0
- data/lib/sif/representations/infra/messages/response.rb +29 -0
- data/lib/sif/representations/infra/messages/sleep.rb +14 -0
- data/lib/sif/representations/infra/messages/subscribe.rb +19 -0
- data/lib/sif/representations/infra/messages/system_control.rb +23 -0
- data/lib/sif/representations/infra/messages/system_control_data.rb +31 -0
- data/lib/sif/representations/infra/messages/wakeup.rb +14 -0
- data/lib/sif/representations/models/common/address.rb +24 -0
- data/lib/sif/representations/models/common/alert_message.rb +16 -0
- data/lib/sif/representations/models/common/contact_info.rb +28 -0
- data/lib/sif/representations/models/common/credits_attempted.rb +15 -0
- data/lib/sif/representations/models/common/demographics.rb +43 -0
- data/lib/sif/representations/models/common/dwelling_arrangement.rb +18 -0
- data/lib/sif/representations/models/common/electronic_id.rb +16 -0
- data/lib/sif/representations/models/common/email.rb +16 -0
- data/lib/sif/representations/models/common/english_proficiency.rb +17 -0
- data/lib/sif/representations/models/common/identification_info.rb +16 -0
- data/lib/sif/representations/models/common/language.rb +19 -0
- data/lib/sif/representations/models/common/medical_alert_message.rb +15 -0
- data/lib/sif/representations/models/common/meeting_time.rb +16 -0
- data/lib/sif/representations/models/common/name.rb +22 -0
- data/lib/sif/representations/models/common/other_code.rb +15 -0
- data/lib/sif/representations/models/common/other_id.rb +15 -0
- data/lib/sif/representations/models/common/phone_number.rb +18 -0
- data/lib/sif/representations/models/common/principal_info.rb +15 -0
- data/lib/sif/representations/models/common/race.rb +18 -0
- data/lib/sif/representations/models/common/sced_code.rb +18 -0
- data/lib/sif/representations/models/common/schedule_info.rb +19 -0
- data/lib/sif/representations/models/common/schedule_info_override.rb +18 -0
- data/lib/sif/representations/models/common/school_contact.rb +17 -0
- data/lib/sif/representations/models/common/school_course_info_override.rb +21 -0
- data/lib/sif/representations/models/common/street.rb +26 -0
- data/lib/sif/representations/models/common/subject_area.rb +17 -0
- data/lib/sif/representations/models/groups/data_model/term_span.rb +20 -0
- data/lib/sif/representations/models/groups/sis/personal_representer.rb +38 -0
- data/lib/sif/representations/models/groups/sis/school_course_info.rb +36 -0
- data/lib/sif/representations/models/groups/sis/school_info.rb +47 -0
- data/lib/sif/representations/models/groups/sis/section_info.rb +29 -0
- data/lib/sif/representations/models/groups/sis/sis_representer.rb +17 -0
- data/lib/sif/representations/models/groups/sis/staff_personal.rb +19 -0
- data/lib/sif/representations/models/groups/sis/student_personal.rb +37 -0
- data/lib/sif/representations/models/groups/sis/student_section_enrollment.rb +26 -0
- data/lib/sif/representations/models/groups/sis/term_info.rb +30 -0
- data/lib/sif/sif.rb +249 -0
- data/openagent.gemspec +33 -0
- data/spec/agent_spec.rb +32 -0
- data/spec/client_spec.rb +96 -0
- data/spec/fixtures/agent.yaml +31 -0
- data/spec/fixtures/messages/event.xml +72 -0
- data/spec/fixtures/messages/response.xml +107 -0
- data/spec/fixtures/sif/attendance_code_info.xml +9 -0
- data/spec/fixtures/sif/calendar_date.xml +22 -0
- data/spec/fixtures/sif/calendar_summary.xml +21 -0
- data/spec/fixtures/sif/demographics.xml +33 -0
- data/spec/fixtures/sif/discipline_incident.xml +70 -0
- data/spec/fixtures/sif/lea_info.xml +55 -0
- data/spec/fixtures/sif/section_info.xml +1536 -0
- data/spec/fixtures/sif/sif_header.xml +12 -0
- data/spec/fixtures/sif/sif_message__response.xml +107 -0
- data/spec/fixtures/sif/sif_object_data.xml +5 -0
- data/spec/fixtures/sif/sif_protocol.xml +3 -0
- data/spec/fixtures/sif/sif_protocol__properties.xml +10 -0
- data/spec/fixtures/sif/sif_provide.xml +9 -0
- data/spec/fixtures/sif/sif_provision.xml +33 -0
- data/spec/fixtures/sif/sif_register.xml +20 -0
- data/spec/fixtures/sif/sif_request.xml +21 -0
- data/spec/fixtures/sif/sif_response.xml +19 -0
- data/spec/fixtures/sif/sif_system_control.xml +10 -0
- data/spec/fixtures/sif/stu_pers_resp.xml +2 -0
- data/spec/fixtures/sif/student_personal.xml +42 -0
- data/spec/fixtures/zone.yaml +6 -0
- data/spec/message_builder_spec.rb +81 -0
- data/spec/response_spec.rb +35 -0
- data/spec/sif/representations/xml/header_spec.rb +30 -0
- data/spec/sif/representations/xml/message_spec.rb +20 -0
- data/spec/sif/representations/xml/object_data_spec.rb +19 -0
- data/spec/sif/representations/xml/protocol_spec.rb +34 -0
- data/spec/sif/representations/xml/provide_spec.rb +19 -0
- data/spec/sif/representations/xml/provision_spec.rb +56 -0
- data/spec/sif/representations/xml/register_spec.rb +17 -0
- data/spec/sif/representations/xml/request_spec.rb +17 -0
- data/spec/sif/representations/xml/response_spec.rb +16 -0
- data/spec/sif/representations/xml/spec_helper.rb +7 -0
- data/spec/sif/representations/xml/student_personal_spec.rb +69 -0
- data/spec/spec_helper.rb +7 -0
- data/spec/zone_spec.rb +26 -0
- 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,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
|
File without changes
|
@@ -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,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,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
|