Class: RCAP::CAP_1_2::Resource
- Inherits:
-
Base::Resource
- Object
- Base::Resource
- RCAP::CAP_1_2::Resource
- Defined in:
- lib/rcap/cap_1_2/resource.rb
Overview
A Resource object is valid if
-
it has a resource description
-
it has a mime_type
Constant Summary collapse
- DEREF_URI_ELEMENT_NAME =
'derefUri'- DEREF_URI_XPATH =
"cap:#{ DEREF_URI_ELEMENT_NAME }"- DEREF_URI_YAML =
'Derefrenced URI Data'- DEREF_URI_KEY =
'deref_uri'
Constants inherited from Base::Resource
Base::Resource::DIGEST_ELEMENT_NAME, Base::Resource::DIGEST_KEY, Base::Resource::DIGEST_XPATH, Base::Resource::DIGEST_YAML, Base::Resource::MIME_TYPE_ELEMENT_NAME, Base::Resource::MIME_TYPE_KEY, Base::Resource::MIME_TYPE_XPATH, Base::Resource::MIME_TYPE_YAML, Base::Resource::RESOURCE_DESC_ELEMENT_NAME, Base::Resource::RESOURCE_DESC_KEY, Base::Resource::RESOURCE_DESC_XPATH, Base::Resource::RESOURCE_DESC_YAML, Base::Resource::SIZE_ELEMENT_NAME, Base::Resource::SIZE_KEY, Base::Resource::SIZE_XPATH, Base::Resource::SIZE_YAML, Base::Resource::URI_ELEMENT_NAME, Base::Resource::URI_KEY, Base::Resource::URI_XPATH, Base::Resource::URI_YAML, Base::Resource::XML_ELEMENT_NAME, Base::Resource::XPATH
Instance Attribute Summary collapse
-
#deref_uri ⇒ String
Dereferenced URI - contents of URI Base64 encoded.
Attributes inherited from Base::Resource
#digest, #mime_type, #resource_desc, #size, #uri
Class Method Summary collapse
- .from_h(resource_hash) ⇒ Resource
- .from_xml_element(resource_xml_element) ⇒ Resource
- .from_yaml_data(resource_yaml_data) ⇒ Resource
Instance Method Summary collapse
-
#dereference_uri! ⇒ Array(Integer,String)
Retrieves the content at uri and stores it in deref_uri as Base64 encoded text.
- #to_h ⇒ Hash
- #to_xml_element ⇒ REXML::Element
- #to_yaml(options = {}) ⇒ String
- #xmlns ⇒ String
Methods inherited from Base::Resource
#calculate_hash_and_size, #decoded_deref_uri, #initialize, #inspect, #size_in_kb, #to_s, #to_xml, #to_yaml_data
Methods included from Validation
#errors, included, #valid?, #validate
Constructor Details
This class inherits a constructor from RCAP::Base::Resource
Instance Attribute Details
#deref_uri ⇒ String
8 9 10 |
# File 'lib/rcap/cap_1_2/resource.rb', line 8 def deref_uri @deref_uri end |
Class Method Details
.from_h(resource_hash) ⇒ Resource
93 94 95 96 97 |
# File 'lib/rcap/cap_1_2/resource.rb', line 93 def self.from_h(resource_hash) super.tap do |resource| resource.deref_uri = resource_hash[DEREF_URI_KEY].strip if resource_hash[DEREF_URI_KEY] end end |
.from_xml_element(resource_xml_element) ⇒ Resource
51 52 53 54 55 |
# File 'lib/rcap/cap_1_2/resource.rb', line 51 def self.from_xml_element(resource_xml_element) super.tap do |resource| resource.deref_uri = RCAP.xpath_text(resource_xml_element, DEREF_URI_XPATH, resource.xmlns) end end |
.from_yaml_data(resource_yaml_data) ⇒ Resource
73 74 75 76 77 |
# File 'lib/rcap/cap_1_2/resource.rb', line 73 def self.from_yaml_data(resource_yaml_data) super.tap do |resource| resource.deref_uri = resource_yaml_data[DEREF_URI_YAML].strip if resource_yaml_data[DEREF_URI_YAML] end end |
Instance Method Details
#dereference_uri! ⇒ Array(Integer,String)
Retrieves the content at uri and stores it in deref_uri as Base64 encoded text. It will also calculate the Base::Resource#digest on the encoded data using SHA1 and set the Base::Resource#size.
This uses the open-uri Ruby API to open and read the content. This method may throw an exception due to any number of network related issue so please handle accordingly.
Returns an array containing the size (in bytes) and SHA-1 hash.
38 39 40 41 42 |
# File 'lib/rcap/cap_1_2/resource.rb', line 38 def dereference_uri! content = URI.parse(uri).read @deref_uri = Base64.encode64(content) calculate_hash_and_size end |
#to_h ⇒ Hash
82 83 84 85 86 87 88 89 |
# File 'lib/rcap/cap_1_2/resource.rb', line 82 def to_h RCAP.attribute_values_to_hash([RESOURCE_DESC_KEY, @resource_desc], [URI_KEY, @uri], [MIME_TYPE_KEY, @mime_type], [DEREF_URI_KEY, @deref_uri], [SIZE_KEY, @size], [DIGEST_KEY, @digest]) end |
#to_xml_element ⇒ REXML::Element
17 18 19 20 21 22 23 24 25 26 |
# File 'lib/rcap/cap_1_2/resource.rb', line 17 def to_xml_element xml_element = REXML::Element.new(XML_ELEMENT_NAME) 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(DEREF_URI_ELEMENT_NAME).add_text(@deref_uri) if @deref_uri xml_element.add_element(DIGEST_ELEMENT_NAME).add_text(@digest) if @digest xml_element end |
#to_yaml(options = {}) ⇒ String
61 62 63 64 65 66 67 68 69 |
# File 'lib/rcap/cap_1_2/resource.rb', line 61 def to_yaml( = {}) RCAP.attribute_values_to_hash( [RESOURCE_DESC_YAML, @resource_desc], [URI_YAML, @uri], [MIME_TYPE_YAML, @mime_type], [DEREF_URI_YAML, @deref_uri], [SIZE_YAML, @size], [DIGEST_YAML, @digest]).to_yaml() end |
#xmlns ⇒ String
45 46 47 |
# File 'lib/rcap/cap_1_2/resource.rb', line 45 def xmlns Alert::XMLNS end |