Class: RCAP::CAP_1_0::Alert
- Inherits:
-
Base::Alert
- Object
- Base::Alert
- RCAP::CAP_1_0::Alert
- Defined in:
- lib/rcap/cap_1_0/alert.rb
Overview
An Alert object is valid if
-
it has an identifier
-
it has a sender
-
it has a sent time
-
it has a valid status value
-
it has a valid messge type value
-
it has a valid scope value
-
all Info objects contained in infos are valid
Constant Summary
- XMLNS =
"http://www.incident.com/cap/1.0"
- CAP_VERSION =
"1.0"
- PASSWORD_ELEMENT_NAME =
'password'
- PASSWORD_XPATH =
"cap:#{ PASSWORD_ELEMENT_NAME }"
- PASSWORD_YAML =
"Password"
- PASSWORD_KEY =
'password'
Constants inherited from Base::Alert
Base::Alert::ADDRESSES_ELEMENT_NAME, Base::Alert::ADDRESSES_KEY, Base::Alert::ADDRESSES_XPATH, Base::Alert::ADDRESSES_YAML, Base::Alert::CAP_VERSION_KEY, Base::Alert::CAP_VERSION_YAML, Base::Alert::CODES_KEY, Base::Alert::CODES_YAML, Base::Alert::CODE_ELEMENT_NAME, Base::Alert::CODE_XPATH, Base::Alert::IDENTIFIER_ELEMENT_NAME, Base::Alert::IDENTIFIER_KEY, Base::Alert::IDENTIFIER_XPATH, Base::Alert::IDENTIFIER_YAML, Base::Alert::INCIDENTS_ELEMENT_NAME, Base::Alert::INCIDENTS_KEY, Base::Alert::INCIDENTS_XPATH, Base::Alert::INCIDENTS_YAML, Base::Alert::INFOS_KEY, Base::Alert::INFOS_YAML, Base::Alert::MSG_TYPE_ACK, Base::Alert::MSG_TYPE_ALERT, Base::Alert::MSG_TYPE_CANCEL, Base::Alert::MSG_TYPE_ELEMENT_NAME, Base::Alert::MSG_TYPE_ERROR, Base::Alert::MSG_TYPE_KEY, Base::Alert::MSG_TYPE_UPDATE, Base::Alert::MSG_TYPE_XPATH, Base::Alert::MSG_TYPE_YAML, Base::Alert::NOTE_ELEMENT_NAME, Base::Alert::NOTE_KEY, Base::Alert::NOTE_XPATH, Base::Alert::NOTE_YAML, Base::Alert::REFERENCES_ELEMENT_NAME, Base::Alert::REFERENCES_KEY, Base::Alert::REFERENCES_XPATH, Base::Alert::REFERENCES_YAML, Base::Alert::RESTRICTION_ELEMENT_NAME, Base::Alert::RESTRICTION_KEY, Base::Alert::RESTRICTION_XPATH, Base::Alert::RESTRICTION_YAML, Base::Alert::SCOPE_ELEMENT_NAME, Base::Alert::SCOPE_KEY, Base::Alert::SCOPE_PRIVATE, Base::Alert::SCOPE_PUBLIC, Base::Alert::SCOPE_RESTRICTED, Base::Alert::SCOPE_XPATH, Base::Alert::SCOPE_YAML, Base::Alert::SENDER_ELEMENT_NAME, Base::Alert::SENDER_KEY, Base::Alert::SENDER_XPATH, Base::Alert::SENDER_YAML, Base::Alert::SENT_ELEMENT_NAME, Base::Alert::SENT_KEY, Base::Alert::SENT_XPATH, Base::Alert::SENT_YAML, Base::Alert::SOURCE_ELEMENT_NAME, Base::Alert::SOURCE_KEY, Base::Alert::SOURCE_XPATH, Base::Alert::SOURCE_YAML, Base::Alert::STATUS_ACTUAL, Base::Alert::STATUS_ELEMENT_NAME, Base::Alert::STATUS_EXERCISE, Base::Alert::STATUS_KEY, Base::Alert::STATUS_SYSTEM, Base::Alert::STATUS_TEST, Base::Alert::STATUS_XPATH, Base::Alert::STATUS_YAML, Base::Alert::VALID_MSG_TYPES, Base::Alert::VALID_SCOPES, Base::Alert::VALID_STATUSES, Base::Alert::XML_ELEMENT_NAME, Base::Alert::XPATH
Instance Attribute Summary (collapse)
Attributes inherited from Base::Alert
#addresses, #codes, #identifier, #incidents, #infos, #msg_type, #note, #references, #restriction, #scope, #sender, #sent, #source, #status
Class Method Summary (collapse)
-
+ (RCAP::CAP_1_0::Alert) from_h(alert_hash)
Initialises an Alert object from a Hash produced by Alert#to_h.
- + (RCAP::CAP_1_0::Alert) from_xml_element(alert_xml_element)
- + (RCAP::CAP_1_0::Alert) from_yaml_data(alert_yaml_data)
Instance Method Summary (collapse)
- - (Class) info_class
- - (String) inspect
-
- (Hash) to_h
Returns a Hash representation of an Alert object.
- - (REXML::Element) to_xml_element
-
- (String) to_yaml(options = {})
Returns a string containing the YAML representation of the alert.
- - (String) xmlns
Methods inherited from Base::Alert
#add_info, from_json, from_xml, from_xml_document, from_yaml, #initialize, #to_json, #to_reference, #to_s, #to_xml, #to_xml_document
Constructor Details
This class inherits a constructor from RCAP::Base::Alert
Instance Attribute Details
Class Method Details
+ (RCAP::CAP_1_0::Alert) from_h(alert_hash)
Initialises an Alert object from a Hash produced by Alert#to_h
159 160 161 162 163 |
# File 'lib/rcap/cap_1_0/alert.rb', line 159 def self.from_h( alert_hash ) super.tap do |alert| alert.password = RCAP.strip_if_given( alert_hash[ PASSWORD_KEY ]) end end |
+ (RCAP::CAP_1_0::Alert) from_xml_element(alert_xml_element)
92 93 94 95 96 |
# File 'lib/rcap/cap_1_0/alert.rb', line 92 def self.from_xml_element( alert_xml_element ) super.tap do |alert| alert.password = RCAP.xpath_text( alert_xml_element, PASSWORD_XPATH, Alert::XMLNS ) end end |
+ (RCAP::CAP_1_0::Alert) from_yaml_data(alert_yaml_data)
125 126 127 128 129 |
# File 'lib/rcap/cap_1_0/alert.rb', line 125 def self.from_yaml_data( alert_yaml_data ) super.tap do |alert| alert.password = RCAP.strip_if_given( alert_yaml_data[ PASSWORD_YAML ]) end end |
Instance Method Details
- (Class) info_class
26 27 28 |
# File 'lib/rcap/cap_1_0/alert.rb', line 26 def info_class Info end |
- (String) inspect
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
# File 'lib/rcap/cap_1_0/alert.rb', line 65 def inspect alert_inspect = [ "CAP Version: #{ CAP_VERSION }", "Identifier: #{ @identifier }", "Sender: #{ @sender }", "Sent: #{ @sent }", "Status: #{ @status }", "Message Type: #{ @msg_type }", "Password: #{ @password }", "Source: #{ @source }", "Scope: #{ @scope }", "Restriction: #{ @restriction }", "Addresses: #{ @addresses.to_s_for_cap }", "Codes:", @codes.map{ |code| " " + code }.join("\n"), "Note: #{ @note }", "References: #{ @references.join( ' ' )}", "Incidents: #{ @incidents.join( ' ')}", "Information:", @infos.map{ |info| " " + info.to_s }.join( "\n" )].join("\n") RCAP.format_lines_for_inspect( 'ALERT', alert_inspect ) end |
- (Hash) to_h
Returns a Hash representation of an Alert object
136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 |
# File 'lib/rcap/cap_1_0/alert.rb', line 136 def to_h RCAP.attribute_values_to_hash( [ CAP_VERSION_KEY, CAP_VERSION ], [ IDENTIFIER_KEY, @identifier ], [ SENDER_KEY, @sender ], [ SENT_KEY, RCAP.to_s_for_cap( @sent )], [ STATUS_KEY, @status ], [ MSG_TYPE_KEY, @msg_type ], [ PASSWORD_KEY, @password ], [ SOURCE_KEY, @source ], [ SCOPE_KEY, @scope ], [ RESTRICTION_KEY, @restriction ], [ ADDRESSES_KEY, @addresses ], [ CODES_KEY, @codes ], [ NOTE_KEY, @note ], [ REFERENCES_KEY, @references ], [ INCIDENTS_KEY, @incidents ], [ INFOS_KEY, @infos.map{ |info| info.to_h }]) end |
- (REXML::Element) to_xml_element
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/rcap/cap_1_0/alert.rb', line 33 def to_xml_element xml_element = REXML::Element.new( XML_ELEMENT_NAME ) xml_element.add_namespace( XMLNS ) xml_element.add_element( IDENTIFIER_ELEMENT_NAME ).add_text( @identifier ) if @identifier xml_element.add_element( SENDER_ELEMENT_NAME ).add_text( @sender ) if @sender xml_element.add_element( SENT_ELEMENT_NAME ).add_text( @sent.to_s_for_cap ) if @sent xml_element.add_element( STATUS_ELEMENT_NAME ).add_text( @status ) if @status xml_element.add_element( MSG_TYPE_ELEMENT_NAME ).add_text( @msg_type ) if @msg_type xml_element.add_element( PASSWORD_ELEMENT_NAME ).add_text( @password ) if @password xml_element.add_element( SOURCE_ELEMENT_NAME ).add_text( @source ) if @source xml_element.add_element( SCOPE_ELEMENT_NAME ).add_text( @scope ) if @scope xml_element.add_element( RESTRICTION_ELEMENT_NAME ).add_text( @restriction ) if @restriction if @addresses.any? xml_element.add_element( ADDRESSES_ELEMENT_NAME ).add_text( @addresses.to_s_for_cap ) end @codes.each do |code| xml_element.add_element( CODE_ELEMENT_NAME ).add_text( code ) end xml_element.add_element( NOTE_ELEMENT_NAME ).add_text( @note ) if @note if @references.any? xml_element.add_element( REFERENCES_ELEMENT_NAME ).add_text( @references.join( ' ' )) end if @incidents.any? xml_element.add_element( INCIDENTS_ELEMENT_NAME ).add_text( @incidents.join( ' ' )) end @infos.each do |info| xml_element.add_element( info.to_xml_element ) end xml_element end |
- (String) to_yaml(options = {})
Returns a string containing the YAML representation of the alert.
104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 |
# File 'lib/rcap/cap_1_0/alert.rb', line 104 def to_yaml( = {} ) RCAP.attribute_values_to_hash( [ CAP_VERSION_YAML, CAP_VERSION ], [ IDENTIFIER_YAML, @identifier ], [ SENDER_YAML, @sender ], [ SENT_YAML, @sent ], [ STATUS_YAML, @status ], [ MSG_TYPE_YAML, @msg_type ], [ PASSWORD_YAML, @password ], [ SOURCE_YAML, @source ], [ SCOPE_YAML, @scope ], [ RESTRICTION_YAML, @restriction ], [ ADDRESSES_YAML, @addresses ], [ CODES_YAML, @codes ], [ NOTE_YAML, @note ], [ REFERENCES_YAML, @references ], [ INCIDENTS_YAML, @incidents ], [ INFOS_YAML, @infos ]).to_yaml( ) end |