lib/rcap/cap_1_0/resource.rb in rcap-1.3.0 vs lib/rcap/cap_1_0/resource.rb in rcap-1.3.1

- old
+ new

@@ -4,124 +4,146 @@ # A Resource object is valid if # * it has a resource description class Resource include Validation - # Resource Description + # @return [String] Resource Description attr_accessor( :resource_desc ) + # @return [String] attr_accessor( :mime_type ) - # Expressed in bytes + # @return [Integer] Expressed in bytes attr_accessor( :size ) - # Resource location + # @return [String] Resource location attr_accessor( :uri ) - # SHA-1 hash of contents of resource + # @return [String] SHA-1 hash of contents of resource attr_accessor( :digest ) validates_presence_of( :resource_desc ) - XML_ELEMENT_NAME = 'resource' # :nodoc: - MIME_TYPE_ELEMENT_NAME = 'mimeType' # :nodoc: - SIZE_ELEMENT_NAME = 'size' # :nodoc: - URI_ELEMENT_NAME = 'uri' # :nodoc: - DIGEST_ELEMENT_NAME = 'digest' # :nodoc: - RESOURCE_DESC_ELEMENT_NAME = 'resourceDesc' # :nodoc: + XML_ELEMENT_NAME = 'resource' + MIME_TYPE_ELEMENT_NAME = 'mimeType' + SIZE_ELEMENT_NAME = 'size' + URI_ELEMENT_NAME = 'uri' + DIGEST_ELEMENT_NAME = 'digest' + RESOURCE_DESC_ELEMENT_NAME = 'resourceDesc' - XPATH = "cap:#{ XML_ELEMENT_NAME }" # :nodoc: - MIME_TYPE_XPATH = "cap:#{ MIME_TYPE_ELEMENT_NAME }" # :nodoc: - SIZE_XPATH = "cap:#{ SIZE_ELEMENT_NAME }" # :nodoc: - URI_XPATH = "cap:#{ URI_ELEMENT_NAME }" # :nodoc: - DIGEST_XPATH = "cap:#{ DIGEST_ELEMENT_NAME }" # :nodoc: - RESOURCE_DESC_XPATH = "cap:#{ RESOURCE_DESC_ELEMENT_NAME }" # :nodoc: + XPATH = "cap:#{ XML_ELEMENT_NAME }" + MIME_TYPE_XPATH = "cap:#{ MIME_TYPE_ELEMENT_NAME }" + SIZE_XPATH = "cap:#{ SIZE_ELEMENT_NAME }" + URI_XPATH = "cap:#{ URI_ELEMENT_NAME }" + DIGEST_XPATH = "cap:#{ DIGEST_ELEMENT_NAME }" + RESOURCE_DESC_XPATH = "cap:#{ RESOURCE_DESC_ELEMENT_NAME }" + # @param [Hash{Symbol => Object}] attributes + # @option attributes [String] :mime_type + # @option attributes [Numeric] :size Size in bytes + # @option attributes [String] :uri + # @option attributes [String] :digest + # @option attributes [String] :resource_desc def initialize( attributes = {} ) @mime_type = attributes[ :mime_type ] @size = attributes[ :size ] @uri = attributes[ :uri ] @digest = attributes[ :digest ] @resource_desc = attributes[ :resource_desc ] end - def to_xml_element # :nodoc: + # @return [REXML::Element] + def to_xml_element xml_element = REXML::Element.new( XML_ELEMENT_NAME ) - xml_element.add_element( RESOURCE_DESC_ELEMENT_NAME ).add_text( self.resource_desc ) - xml_element.add_element( MIME_TYPE_ELEMENT_NAME ).add_text( self.mime_type ) if self.mime_type - xml_element.add_element( SIZE_ELEMENT_NAME ).add_text( self.size.to_s ) if self.size - xml_element.add_element( URI_ELEMENT_NAME ).add_text( self.uri ) if self.uri - xml_element.add_element( DIGEST_ELEMENT_NAME ).add_text( self.digest ) if self.digest + xml_element.add_element( RESOURCE_DESC_ELEMENT_NAME ).add_text( @resource_desc ) + xml_element.add_element( MIME_TYPE_ELEMENT_NAME ).add_text( @mime_type ) if @mime_type + xml_element.add_element( SIZE_ELEMENT_NAME ).add_text( @size.to_s ) if @size + xml_element.add_element( URI_ELEMENT_NAME ).add_text( @uri ) if @uri + xml_element.add_element( DIGEST_ELEMENT_NAME ).add_text( @digest ) if @digest xml_element end # If size is defined returns the size in kilobytes + # @return [Float] def size_in_kb - if self.size - self.size.to_f/1024 + if @size + @size.to_f/1024 end end - def to_xml # :nodoc: + # @return [String] + def to_xml self.to_xml_element.to_s end - def inspect # :nodoc: - [ self.resource_desc, self.uri, self.mime_type, self.size ? format( "%.1fKB", self.size_in_kb ) : nil ].compact.join(' - ') + # @return [String] + def inspect + [ @resource_desc, @uri, @mime_type, @size ? format( "%.1fKB", @size_in_kb ) : nil ].compact.join(' - ') end # Returns a string representation of the resource of the form # resource_desc + # + # @return [String] def to_s - self.resource_desc + @resource_desc end - def self.from_xml_element( resource_xml_element ) # :nodoc: + # @param [REXML::Element] resource_xml_element + # @return [Resource] + def self.from_xml_element( resource_xml_element ) resource = self.new( :resource_desc => RCAP.xpath_text( resource_xml_element, RESOURCE_DESC_XPATH, Alert::XMLNS ), :uri => RCAP.xpath_text( resource_xml_element, URI_XPATH, Alert::XMLNS ), :mime_type => RCAP.xpath_text( resource_xml_element, MIME_TYPE_XPATH, Alert::XMLNS ), :size => RCAP.xpath_text( resource_xml_element, SIZE_XPATH, Alert::XMLNS ).to_i, :digest => RCAP.xpath_text( resource_xml_element, DIGEST_XPATH, Alert::XMLNS )) end - RESOURCE_DESC_YAML = "Resource Description" # :nodoc: - URI_YAML = "URI" # :nodoc: - MIME_TYPE_YAML = "Mime Type" # :nodoc: - SIZE_YAML = "Size" # :nodoc: - DIGEST_YAML = "Digest" # :nodoc: + RESOURCE_DESC_YAML = "Resource Description" + URI_YAML = "URI" + MIME_TYPE_YAML = "Mime Type" + SIZE_YAML = "Size" + DIGEST_YAML = "Digest" - def to_yaml( options = {} ) # :nodoc: + # @param [Hash] options + # @return [String] + def to_yaml( options = {} ) RCAP.attribute_values_to_hash( - [ RESOURCE_DESC_YAML, self.resource_desc ], - [ URI_YAML, self.uri ], - [ MIME_TYPE_YAML, self.mime_type ], - [ SIZE_YAML, self.size ], - [ DIGEST_YAML, self.digest ] + [ RESOURCE_DESC_YAML, @resource_desc ], + [ URI_YAML, @uri ], + [ MIME_TYPE_YAML, @mime_type ], + [ SIZE_YAML, @size ], + [ DIGEST_YAML, @digest ] ).to_yaml( options ) end - def self.from_yaml_data( resource_yaml_data ) # :nodoc: + # @param [Hash] resource_yaml_data + # @return [Resource] + def self.from_yaml_data( resource_yaml_data ) self.new( :resource_desc => reource_yaml_data[ RESOURCE_DESC_YAML ], :uri => reource_yaml_data[ URI_YAML ], :mime_type => reource_yaml_data[ MIME_TYPE_YAML ], :size => reource_yaml_data[ SIZE_YAML ], :digest => reource_yaml_data[ DIGEST_YAML ] ) end - RESOURCE_DESC_KEY = 'resource_desc' # :nodoc: - URI_KEY = 'uri' # :nodoc: - MIME_TYPE_KEY = 'mime_type' # :nodoc: - SIZE_KEY = 'size' # :nodoc: - DIGEST_KEY = 'digest' # :nodoc: + RESOURCE_DESC_KEY = 'resource_desc' + URI_KEY = 'uri' + MIME_TYPE_KEY = 'mime_type' + SIZE_KEY = 'size' + DIGEST_KEY = 'digest' - def to_h # :nodoc: + # @return [Hash] + def to_h RCAP.attribute_values_to_hash( - [ RESOURCE_DESC_KEY, self.resource_desc ], - [ URI_KEY, self.uri], - [ MIME_TYPE_KEY, self.mime_type], - [ SIZE_KEY, self.size ], - [ DIGEST_KEY, self.digest ]) + [ RESOURCE_DESC_KEY, @resource_desc ], + [ URI_KEY, @uri], + [ MIME_TYPE_KEY, @mime_type], + [ SIZE_KEY, @size ], + [ DIGEST_KEY, @digest ]) end - def self.from_h( resource_hash ) # :nodoc: + # @param [Hash] resource_hash + # @return [Resource] + def self.from_h( resource_hash ) self.new( :resource_desc => resource_hash[ RESOURCE_DESC_KEY ], :uri => resource_hash[ URI_KEY ], :mime_type => resource_hash[ MIME_TYPE_KEY ], :size => resource_hash[ SIZE_KEY ],