lib/rcap/cap_1_0/alert.rb in rcap-2.4.1 vs lib/rcap/cap_1_0/alert.rb in rcap-2.5.0
- old
+ new
@@ -1,23 +1,21 @@
module RCAP
module CAP_1_0
-
# 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
class Alert < RCAP::Base::Alert
+ XMLNS = 'http://www.incident.com/cap/1.0'
+ CAP_VERSION = '1.0'
- XMLNS = "http://www.incident.com/cap/1.0"
- CAP_VERSION = "1.0"
-
# @return [String]
- attr_accessor( :password )
+ attr_accessor(:password)
# @return [String]
def xmlns
XMLNS
end
@@ -29,137 +27,135 @@
PASSWORD_ELEMENT_NAME = 'password'
# @return [REXML::Element]
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
+ 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 )
+ 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 )
+ xml_element.add_element(CODE_ELEMENT_NAME).add_text(code)
end
- xml_element.add_element( NOTE_ELEMENT_NAME ).add_text( @note ) if @note
+ 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( ' ' ))
+ 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( ' ' ))
+ xml_element.add_element(INCIDENTS_ELEMENT_NAME).add_text(@incidents.join(' '))
end
@infos.each do |info|
- xml_element.add_element( info.to_xml_element )
+ xml_element.add_element(info.to_xml_element)
end
xml_element
end
# @return [String]
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 )
+ 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
-
PASSWORD_XPATH = "cap:#{ PASSWORD_ELEMENT_NAME }"
# @param [REXML::Element] alert_xml_element
# @return [RCAP::CAP_1_0::Alert]
- def self.from_xml_element( alert_xml_element )
+ def self.from_xml_element(alert_xml_element)
super.tap do |alert|
- alert.password = RCAP.xpath_text( alert_xml_element, PASSWORD_XPATH, Alert::XMLNS )
+ alert.password = RCAP.xpath_text(alert_xml_element, PASSWORD_XPATH, Alert::XMLNS)
end
end
+ PASSWORD_YAML = 'Password'
- PASSWORD_YAML = "Password"
-
# Returns a string containing the YAML representation of the alert.
#
# @return [String]
- def to_yaml( options = {} )
- 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.map( &:to_yaml_data )]).to_yaml( options )
+ def to_yaml(options = {})
+ 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.map(&:to_yaml_data)]).to_yaml(options)
end
# @param [Hash] alert_yaml_data
# @return [RCAP::CAP_1_0::Alert]
- def self.from_yaml_data( alert_yaml_data )
+ def self.from_yaml_data(alert_yaml_data)
super.tap do |alert|
- alert.password = RCAP.strip_if_given( alert_yaml_data[ PASSWORD_YAML ])
+ alert.password = RCAP.strip_if_given(alert_yaml_data[PASSWORD_YAML])
end
end
PASSWORD_KEY = 'password'
# Returns a Hash representation of an Alert object
#
# @return [Hash]
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 }])
+ 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
# Initialises an Alert object from a Hash produced by Alert#to_h
#
# @param [Hash] alert_hash
# @return [RCAP::CAP_1_0::Alert]
- def self.from_h( alert_hash )
+ def self.from_h(alert_hash)
super.tap do |alert|
- alert.password = RCAP.strip_if_given( alert_hash[ PASSWORD_KEY ])
+ alert.password = RCAP.strip_if_given(alert_hash[PASSWORD_KEY])
end
end
end
end
end