rcap 1.3.0 → 1.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/{CHANGELOG.rdoc → CHANGELOG.md} +26 -20
- data/README.md +259 -0
- data/Rakefile +8 -7
- data/lib/extensions/array.rb +7 -1
- data/lib/extensions/date_time.rb +5 -1
- data/lib/extensions/string.rb +14 -1
- data/lib/extensions/time.rb +5 -1
- data/lib/rcap.rb +1 -1
- data/lib/rcap/alert.rb +24 -10
- data/lib/rcap/cap_1_0/alert.rb +232 -166
- data/lib/rcap/cap_1_0/area.rb +100 -67
- data/lib/rcap/cap_1_0/circle.rb +47 -22
- data/lib/rcap/cap_1_0/event_code.rb +3 -2
- data/lib/rcap/cap_1_0/geocode.rb +3 -2
- data/lib/rcap/cap_1_0/info.rb +265 -202
- data/lib/rcap/cap_1_0/parameter.rb +43 -20
- data/lib/rcap/cap_1_0/point.rb +23 -9
- data/lib/rcap/cap_1_0/polygon.rb +37 -19
- data/lib/rcap/cap_1_0/resource.rb +77 -55
- data/lib/rcap/cap_1_1/alert.rb +222 -156
- data/lib/rcap/cap_1_1/area.rb +100 -67
- data/lib/rcap/cap_1_1/circle.rb +49 -22
- data/lib/rcap/cap_1_1/event_code.rb +3 -2
- data/lib/rcap/cap_1_1/geocode.rb +3 -2
- data/lib/rcap/cap_1_1/info.rb +281 -217
- data/lib/rcap/cap_1_1/parameter.rb +35 -16
- data/lib/rcap/cap_1_1/point.rb +23 -9
- data/lib/rcap/cap_1_1/polygon.rb +38 -20
- data/lib/rcap/cap_1_1/resource.rb +106 -65
- data/lib/rcap/cap_1_2/alert.rb +224 -158
- data/lib/rcap/cap_1_2/area.rb +100 -67
- data/lib/rcap/cap_1_2/circle.rb +49 -24
- data/lib/rcap/cap_1_2/event_code.rb +3 -2
- data/lib/rcap/cap_1_2/geocode.rb +3 -2
- data/lib/rcap/cap_1_2/info.rb +285 -219
- data/lib/rcap/cap_1_2/parameter.rb +39 -19
- data/lib/rcap/cap_1_2/point.rb +23 -9
- data/lib/rcap/cap_1_2/polygon.rb +37 -20
- data/lib/rcap/cap_1_2/resource.rb +107 -67
- data/lib/rcap/config.rb +4 -0
- data/lib/rcap/utilities.rb +55 -2
- data/lib/rcap/validations.rb +2 -2
- data/lib/rcap/version.rb +1 -1
- data/rcap.gemspec +2 -2
- data/spec/cap_1_0/parameter_spec.rb +5 -1
- data/spec/cap_1_1/resource_spec.rb +6 -0
- data/spec/cap_1_2/alert_spec.rb +8 -0
- data/spec/cap_1_2/resource_spec.rb +8 -2
- metadata +11 -10
- data/README.rdoc +0 -247
- data/lib/config.rb +0 -2
@@ -8,63 +8,86 @@ module RCAP
|
|
8
8
|
|
9
9
|
validates_presence_of( :name, :value )
|
10
10
|
|
11
|
-
|
11
|
+
# @return [String]
|
12
|
+
attr_accessor( :name )
|
13
|
+
# @return [String]
|
14
|
+
attr_accessor( :value )
|
12
15
|
|
13
|
-
XML_ELEMENT_NAME = "parameter"
|
14
|
-
NAME_ELEMENT_NAME = "valueName"
|
15
|
-
VALUE_ELEMENT_NAME = "value"
|
16
|
+
XML_ELEMENT_NAME = "parameter"
|
17
|
+
NAME_ELEMENT_NAME = "valueName"
|
18
|
+
VALUE_ELEMENT_NAME = "value"
|
16
19
|
|
17
|
-
XPATH = "cap:#{ XML_ELEMENT_NAME }"
|
18
|
-
NAME_XPATH = "cap:#{ NAME_ELEMENT_NAME }"
|
19
|
-
VALUE_XPATH = "cap:#{ VALUE_ELEMENT_NAME }"
|
20
|
+
XPATH = "cap:#{ XML_ELEMENT_NAME }"
|
21
|
+
NAME_XPATH = "cap:#{ NAME_ELEMENT_NAME }"
|
22
|
+
VALUE_XPATH = "cap:#{ VALUE_ELEMENT_NAME }"
|
20
23
|
|
24
|
+
# @param [Hash] attributes
|
25
|
+
# @option attributes [Symbol] :name Parameter name
|
26
|
+
# @option attributes [Symbol] :value Parameter value
|
21
27
|
def initialize( attributes = {} )
|
22
28
|
@name = attributes[ :name ]
|
23
29
|
@value = attributes[ :value ]
|
24
30
|
end
|
25
31
|
|
26
|
-
|
32
|
+
# @return [REXML::Element]
|
33
|
+
def to_xml_element
|
27
34
|
xml_element = REXML::Element.new( self.class::XML_ELEMENT_NAME )
|
28
|
-
xml_element.add_text( "#{
|
35
|
+
xml_element.add_text( "#{ @name }=#{ @value }")
|
29
36
|
xml_element
|
30
37
|
end
|
31
38
|
|
32
|
-
|
39
|
+
# @return [String]
|
40
|
+
def to_xml
|
33
41
|
self.to_xml_element.to_s
|
34
42
|
end
|
35
43
|
|
36
|
-
|
37
|
-
|
44
|
+
# @return [String]
|
45
|
+
def inspect
|
46
|
+
"#{ @name }: #{ @value }"
|
38
47
|
end
|
39
48
|
|
40
49
|
# Returns a string representation of the parameter of the form
|
41
50
|
# name: value
|
51
|
+
#
|
52
|
+
# @return [String]
|
42
53
|
def to_s
|
43
54
|
self.inspect
|
44
55
|
end
|
45
56
|
|
46
|
-
|
57
|
+
# @param [REXML::Element] parameter_xml_element
|
58
|
+
# @return [Parameter]
|
59
|
+
def self.from_xml_element( parameter_xml_element )
|
47
60
|
self.new( self.parse_parameter( parameter_xml_element.text ))
|
48
61
|
end
|
49
62
|
|
50
63
|
# Two parameters are equivalent if they have the same name and value.
|
64
|
+
#
|
65
|
+
# @param [Parameter] other
|
66
|
+
# @return [true, false]
|
51
67
|
def ==( other )
|
52
|
-
[
|
68
|
+
[ @name, @value ] == [ other.name, other.value ]
|
53
69
|
end
|
54
70
|
|
55
|
-
|
56
|
-
|
71
|
+
# @return [Hash]
|
72
|
+
def to_h
|
73
|
+
RCAP.attribute_values_to_hash( [ @name, @value ])
|
57
74
|
end
|
58
75
|
|
59
|
-
|
76
|
+
# @param [Hash] hash
|
77
|
+
# @return [Parameter]
|
78
|
+
def self.from_h( hash )
|
60
79
|
key = hash.keys.first
|
61
80
|
self.new( :name => key, :value => hash[ key ])
|
62
81
|
end
|
63
82
|
|
64
|
-
|
83
|
+
# @param [String] parameter_string
|
84
|
+
# @return [Hash]
|
85
|
+
def self.parse_parameter( parameter_string )
|
65
86
|
name, value = parameter_string.split("=")
|
66
|
-
|
67
|
-
:
|
87
|
+
if name && value
|
88
|
+
{ :name => name,
|
89
|
+
:value => value }
|
90
|
+
end
|
68
91
|
end
|
69
92
|
end
|
70
93
|
end
|
data/lib/rcap/cap_1_0/point.rb
CHANGED
@@ -11,13 +11,18 @@ module RCAP
|
|
11
11
|
MAX_LATTITUDE = 90
|
12
12
|
MIN_LATTITUDE = -90
|
13
13
|
|
14
|
+
# @return [Numeric]
|
14
15
|
attr_accessor( :lattitude )
|
16
|
+
# @return [Numeric]
|
15
17
|
attr_accessor( :longitude )
|
16
18
|
|
17
19
|
validates_numericality_of( :lattitude, :longitude )
|
18
20
|
validates_inclusion_of( :lattitude, :in => MIN_LATTITUDE..MAX_LATTITUDE )
|
19
21
|
validates_inclusion_of( :longitude, :in => MIN_LONGITUDE..MAX_LONGITUDE)
|
20
22
|
|
23
|
+
# @param [Hash] attributes
|
24
|
+
# @option attributes [Numeric] :lattitude
|
25
|
+
# @option attributes [Numeric] :longitude
|
21
26
|
def initialize( attributes = {} )
|
22
27
|
@lattitude = attributes[ :lattitude ]
|
23
28
|
@longitude = attributes[ :longitude ]
|
@@ -25,29 +30,38 @@ module RCAP
|
|
25
30
|
|
26
31
|
# Returns a string representation of the point of the form
|
27
32
|
# lattitude,longitude
|
33
|
+
#
|
34
|
+
# @return [String]
|
28
35
|
def to_s
|
29
|
-
"#{
|
36
|
+
"#{ @lattitude },#{ @longitude }"
|
30
37
|
end
|
31
38
|
|
32
|
-
|
39
|
+
# @return [String]
|
40
|
+
def inspect
|
33
41
|
'('+self.to_s+')'
|
34
42
|
end
|
35
43
|
|
36
44
|
# Two points are equivalent if they have the same lattitude and longitude
|
45
|
+
#
|
46
|
+
# @param [Point] other
|
47
|
+
# @return [true, false]
|
37
48
|
def ==( other )
|
38
|
-
[
|
49
|
+
[ @lattitude, @longitude ] == [ other.lattitude, other.longitude ]
|
39
50
|
end
|
40
51
|
|
41
|
-
LATTITUDE_KEY = 'lattitude'
|
42
|
-
LONGITUDE_KEY = 'longitude'
|
52
|
+
LATTITUDE_KEY = 'lattitude'
|
53
|
+
LONGITUDE_KEY = 'longitude'
|
43
54
|
|
44
|
-
|
55
|
+
# @return [Hash]
|
56
|
+
def to_h
|
45
57
|
RCAP.attribute_values_to_hash(
|
46
|
-
[ LATTITUDE_KEY,
|
47
|
-
[ LONGITUDE_KEY,
|
58
|
+
[ LATTITUDE_KEY, @lattitude ],
|
59
|
+
[ LONGITUDE_KEY, @longitude ])
|
48
60
|
end
|
49
61
|
|
50
|
-
|
62
|
+
# @param [Hash] point_hash
|
63
|
+
# @return [Point]
|
64
|
+
def self.from_h( point_hash )
|
51
65
|
self.new( :lattitude => point_hash[ LATTITUDE_KEY ], :longitude => point_hash[ LONGITUDE_KEY ])
|
52
66
|
end
|
53
67
|
end
|
data/lib/rcap/cap_1_0/polygon.rb
CHANGED
@@ -6,25 +6,28 @@ module RCAP
|
|
6
6
|
class Polygon
|
7
7
|
include Validation
|
8
8
|
|
9
|
-
# Collection of Point objects
|
9
|
+
# @return [Array<Point>] Collection of {Point} objects
|
10
10
|
attr_reader( :points )
|
11
11
|
|
12
12
|
validates_collection_of( :points )
|
13
13
|
validates_length_of( :points, :minimum => 3 )
|
14
14
|
validates_equality_of_first_and_last( :points )
|
15
15
|
|
16
|
-
XML_ELEMENT_NAME = 'polygon'
|
17
|
-
XPATH = "cap:#{ XML_ELEMENT_NAME }"
|
18
|
-
|
16
|
+
XML_ELEMENT_NAME = 'polygon'
|
17
|
+
XPATH = "cap:#{ XML_ELEMENT_NAME }"
|
18
|
+
|
19
|
+
# @param [Hash] attributes
|
20
|
+
# @option attributes [Array<Point>] :points Collection of {Point} objects
|
19
21
|
def initialize( attributes = {})
|
20
22
|
@points = Array( attributes[ :points ])
|
21
23
|
end
|
22
24
|
|
23
|
-
# Creates a new Point object and adds it to the points array.
|
24
|
-
#
|
25
|
+
# Creates a new Point object and adds it to the points array.
|
26
|
+
#
|
27
|
+
# @see Point#initialize
|
25
28
|
def add_point( point_attributes = {})
|
26
29
|
point = Point.new( point_attributes )
|
27
|
-
|
30
|
+
@points << point
|
28
31
|
point
|
29
32
|
end
|
30
33
|
|
@@ -35,26 +38,37 @@ module RCAP
|
|
35
38
|
@points.join( ' ' )
|
36
39
|
end
|
37
40
|
|
38
|
-
|
41
|
+
# @return [String]
|
42
|
+
def inspect
|
39
43
|
"(#{ @points.map{|point| point.inspect}.join(', ')})"
|
40
44
|
end
|
41
45
|
|
42
|
-
|
46
|
+
# @return [REXML::Element]
|
47
|
+
def to_xml_element
|
43
48
|
xml_element = REXML::Element.new( XML_ELEMENT_NAME )
|
44
49
|
xml_element.add_text( self.to_s )
|
45
50
|
xml_element
|
46
51
|
end
|
47
52
|
|
53
|
+
# @return [String]
|
54
|
+
def to_xml
|
55
|
+
self.to_xml_element.to_s
|
56
|
+
end
|
57
|
+
|
48
58
|
# Two polygons are equivalent if their collection of points is equivalent.
|
59
|
+
#
|
60
|
+
# @return [true,false]
|
49
61
|
def ==( other )
|
50
|
-
|
62
|
+
@points == other.points
|
51
63
|
end
|
52
64
|
|
53
|
-
|
65
|
+
# @return [Array<Array(Numeric,Numeric)>]
|
66
|
+
def self.parse_polygon_string( polygon_string )
|
54
67
|
polygon_string.split( ' ' ).map{ |coordinate_string| coordinate_string.split( ',' ).map{|coordinate| coordinate.to_f }}
|
55
68
|
end
|
56
69
|
|
57
|
-
|
70
|
+
# @return [Polygon]
|
71
|
+
def self.from_xml_element( polygon_xml_element )
|
58
72
|
if !polygon_xml_element.text.nil? && !polygon_xml_element.text.empty?
|
59
73
|
coordinates = self.parse_polygon_string( polygon_xml_element.text )
|
60
74
|
points = coordinates.map{ |lattitude, longitude| Point.new( :lattitude => lattitude, :longitude => longitude )}
|
@@ -65,21 +79,25 @@ module RCAP
|
|
65
79
|
end
|
66
80
|
|
67
81
|
|
68
|
-
|
69
|
-
|
82
|
+
# @return [String]
|
83
|
+
def to_yaml( options = {} )
|
84
|
+
@points.map{ |point| [ point.lattitude, point.longitude ]}.to_yaml( options )
|
70
85
|
end
|
71
86
|
|
72
|
-
|
87
|
+
# @return [Polygon]
|
88
|
+
def self.from_yaml_data( polygon_yaml_data )
|
73
89
|
self.new( :points => Array( polygon_yaml_data ).map{ |lattitude, longitude| Point.new( :lattitude => lattitude, :longitude => longitude )})
|
74
90
|
end
|
75
91
|
|
76
|
-
POINTS_KEY = 'points'
|
92
|
+
POINTS_KEY = 'points'
|
77
93
|
|
78
|
-
|
79
|
-
|
94
|
+
# @return [Hash]
|
95
|
+
def to_h
|
96
|
+
{ POINTS_KEY => @points.map{ |point| point.to_h }}
|
80
97
|
end
|
81
98
|
|
82
|
-
|
99
|
+
# @return [Polygon]
|
100
|
+
def self.from_h( polygon_hash )
|
83
101
|
self.new( :points => polygon_hash[ POINTS_KEY ].map{ |point_hash| Point.from_h( point_hash )})
|
84
102
|
end
|
85
103
|
end
|
@@ -6,32 +6,39 @@ module RCAP
|
|
6
6
|
class Resource
|
7
7
|
include Validation
|
8
8
|
|
9
|
-
# Resource Description
|
9
|
+
# @return [String] Resource Description
|
10
10
|
attr_accessor( :resource_desc )
|
11
|
+
# @return [String]
|
11
12
|
attr_accessor( :mime_type )
|
12
|
-
# Expressed in bytes
|
13
|
+
# @return [Integer] Expressed in bytes
|
13
14
|
attr_accessor( :size )
|
14
|
-
# Resource location
|
15
|
+
# @return [String] Resource location
|
15
16
|
attr_accessor( :uri )
|
16
|
-
# SHA-1 hash of contents of resource
|
17
|
+
# @return [String] SHA-1 hash of contents of resource
|
17
18
|
attr_accessor( :digest )
|
18
19
|
|
19
20
|
validates_presence_of( :resource_desc )
|
20
21
|
|
21
|
-
XML_ELEMENT_NAME = 'resource'
|
22
|
-
MIME_TYPE_ELEMENT_NAME = 'mimeType'
|
23
|
-
SIZE_ELEMENT_NAME = 'size'
|
24
|
-
URI_ELEMENT_NAME = 'uri'
|
25
|
-
DIGEST_ELEMENT_NAME = 'digest'
|
26
|
-
RESOURCE_DESC_ELEMENT_NAME = 'resourceDesc'
|
27
|
-
|
28
|
-
XPATH = "cap:#{ XML_ELEMENT_NAME }"
|
29
|
-
MIME_TYPE_XPATH = "cap:#{ MIME_TYPE_ELEMENT_NAME }"
|
30
|
-
SIZE_XPATH = "cap:#{ SIZE_ELEMENT_NAME }"
|
31
|
-
URI_XPATH = "cap:#{ URI_ELEMENT_NAME }"
|
32
|
-
DIGEST_XPATH = "cap:#{ DIGEST_ELEMENT_NAME }"
|
33
|
-
RESOURCE_DESC_XPATH = "cap:#{ RESOURCE_DESC_ELEMENT_NAME }"
|
34
|
-
|
22
|
+
XML_ELEMENT_NAME = 'resource'
|
23
|
+
MIME_TYPE_ELEMENT_NAME = 'mimeType'
|
24
|
+
SIZE_ELEMENT_NAME = 'size'
|
25
|
+
URI_ELEMENT_NAME = 'uri'
|
26
|
+
DIGEST_ELEMENT_NAME = 'digest'
|
27
|
+
RESOURCE_DESC_ELEMENT_NAME = 'resourceDesc'
|
28
|
+
|
29
|
+
XPATH = "cap:#{ XML_ELEMENT_NAME }"
|
30
|
+
MIME_TYPE_XPATH = "cap:#{ MIME_TYPE_ELEMENT_NAME }"
|
31
|
+
SIZE_XPATH = "cap:#{ SIZE_ELEMENT_NAME }"
|
32
|
+
URI_XPATH = "cap:#{ URI_ELEMENT_NAME }"
|
33
|
+
DIGEST_XPATH = "cap:#{ DIGEST_ELEMENT_NAME }"
|
34
|
+
RESOURCE_DESC_XPATH = "cap:#{ RESOURCE_DESC_ELEMENT_NAME }"
|
35
|
+
|
36
|
+
# @param [Hash{Symbol => Object}] attributes
|
37
|
+
# @option attributes [String] :mime_type
|
38
|
+
# @option attributes [Numeric] :size Size in bytes
|
39
|
+
# @option attributes [String] :uri
|
40
|
+
# @option attributes [String] :digest
|
41
|
+
# @option attributes [String] :resource_desc
|
35
42
|
def initialize( attributes = {} )
|
36
43
|
@mime_type = attributes[ :mime_type ]
|
37
44
|
@size = attributes[ :size ]
|
@@ -40,38 +47,46 @@ module RCAP
|
|
40
47
|
@resource_desc = attributes[ :resource_desc ]
|
41
48
|
end
|
42
49
|
|
43
|
-
|
50
|
+
# @return [REXML::Element]
|
51
|
+
def to_xml_element
|
44
52
|
xml_element = REXML::Element.new( XML_ELEMENT_NAME )
|
45
|
-
xml_element.add_element( RESOURCE_DESC_ELEMENT_NAME ).add_text(
|
46
|
-
xml_element.add_element( MIME_TYPE_ELEMENT_NAME ).add_text(
|
47
|
-
xml_element.add_element( SIZE_ELEMENT_NAME ).add_text(
|
48
|
-
xml_element.add_element( URI_ELEMENT_NAME ).add_text(
|
49
|
-
xml_element.add_element( DIGEST_ELEMENT_NAME ).add_text(
|
53
|
+
xml_element.add_element( RESOURCE_DESC_ELEMENT_NAME ).add_text( @resource_desc )
|
54
|
+
xml_element.add_element( MIME_TYPE_ELEMENT_NAME ).add_text( @mime_type ) if @mime_type
|
55
|
+
xml_element.add_element( SIZE_ELEMENT_NAME ).add_text( @size.to_s ) if @size
|
56
|
+
xml_element.add_element( URI_ELEMENT_NAME ).add_text( @uri ) if @uri
|
57
|
+
xml_element.add_element( DIGEST_ELEMENT_NAME ).add_text( @digest ) if @digest
|
50
58
|
xml_element
|
51
59
|
end
|
52
60
|
|
53
61
|
# If size is defined returns the size in kilobytes
|
62
|
+
# @return [Float]
|
54
63
|
def size_in_kb
|
55
|
-
if
|
56
|
-
|
64
|
+
if @size
|
65
|
+
@size.to_f/1024
|
57
66
|
end
|
58
67
|
end
|
59
68
|
|
60
|
-
|
69
|
+
# @return [String]
|
70
|
+
def to_xml
|
61
71
|
self.to_xml_element.to_s
|
62
72
|
end
|
63
73
|
|
64
|
-
|
65
|
-
|
74
|
+
# @return [String]
|
75
|
+
def inspect
|
76
|
+
[ @resource_desc, @uri, @mime_type, @size ? format( "%.1fKB", @size_in_kb ) : nil ].compact.join(' - ')
|
66
77
|
end
|
67
78
|
|
68
79
|
# Returns a string representation of the resource of the form
|
69
80
|
# resource_desc
|
81
|
+
#
|
82
|
+
# @return [String]
|
70
83
|
def to_s
|
71
|
-
|
84
|
+
@resource_desc
|
72
85
|
end
|
73
86
|
|
74
|
-
|
87
|
+
# @param [REXML::Element] resource_xml_element
|
88
|
+
# @return [Resource]
|
89
|
+
def self.from_xml_element( resource_xml_element )
|
75
90
|
resource = self.new( :resource_desc => RCAP.xpath_text( resource_xml_element, RESOURCE_DESC_XPATH, Alert::XMLNS ),
|
76
91
|
:uri => RCAP.xpath_text( resource_xml_element, URI_XPATH, Alert::XMLNS ),
|
77
92
|
:mime_type => RCAP.xpath_text( resource_xml_element, MIME_TYPE_XPATH, Alert::XMLNS ),
|
@@ -79,23 +94,27 @@ module RCAP
|
|
79
94
|
:digest => RCAP.xpath_text( resource_xml_element, DIGEST_XPATH, Alert::XMLNS ))
|
80
95
|
end
|
81
96
|
|
82
|
-
RESOURCE_DESC_YAML = "Resource Description"
|
83
|
-
URI_YAML = "URI"
|
84
|
-
MIME_TYPE_YAML = "Mime Type"
|
85
|
-
SIZE_YAML = "Size"
|
86
|
-
DIGEST_YAML = "Digest"
|
97
|
+
RESOURCE_DESC_YAML = "Resource Description"
|
98
|
+
URI_YAML = "URI"
|
99
|
+
MIME_TYPE_YAML = "Mime Type"
|
100
|
+
SIZE_YAML = "Size"
|
101
|
+
DIGEST_YAML = "Digest"
|
87
102
|
|
88
|
-
|
103
|
+
# @param [Hash] options
|
104
|
+
# @return [String]
|
105
|
+
def to_yaml( options = {} )
|
89
106
|
RCAP.attribute_values_to_hash(
|
90
|
-
[ RESOURCE_DESC_YAML,
|
91
|
-
[ URI_YAML,
|
92
|
-
[ MIME_TYPE_YAML,
|
93
|
-
[ SIZE_YAML,
|
94
|
-
[ DIGEST_YAML,
|
107
|
+
[ RESOURCE_DESC_YAML, @resource_desc ],
|
108
|
+
[ URI_YAML, @uri ],
|
109
|
+
[ MIME_TYPE_YAML, @mime_type ],
|
110
|
+
[ SIZE_YAML, @size ],
|
111
|
+
[ DIGEST_YAML, @digest ]
|
95
112
|
).to_yaml( options )
|
96
113
|
end
|
97
114
|
|
98
|
-
|
115
|
+
# @param [Hash] resource_yaml_data
|
116
|
+
# @return [Resource]
|
117
|
+
def self.from_yaml_data( resource_yaml_data )
|
99
118
|
self.new(
|
100
119
|
:resource_desc => reource_yaml_data[ RESOURCE_DESC_YAML ],
|
101
120
|
:uri => reource_yaml_data[ URI_YAML ],
|
@@ -105,22 +124,25 @@ module RCAP
|
|
105
124
|
)
|
106
125
|
end
|
107
126
|
|
108
|
-
RESOURCE_DESC_KEY = 'resource_desc'
|
109
|
-
URI_KEY = 'uri'
|
110
|
-
MIME_TYPE_KEY = 'mime_type'
|
111
|
-
SIZE_KEY = 'size'
|
112
|
-
DIGEST_KEY = 'digest'
|
127
|
+
RESOURCE_DESC_KEY = 'resource_desc'
|
128
|
+
URI_KEY = 'uri'
|
129
|
+
MIME_TYPE_KEY = 'mime_type'
|
130
|
+
SIZE_KEY = 'size'
|
131
|
+
DIGEST_KEY = 'digest'
|
113
132
|
|
114
|
-
|
133
|
+
# @return [Hash]
|
134
|
+
def to_h
|
115
135
|
RCAP.attribute_values_to_hash(
|
116
|
-
[ RESOURCE_DESC_KEY,
|
117
|
-
[ URI_KEY,
|
118
|
-
[ MIME_TYPE_KEY,
|
119
|
-
[ SIZE_KEY,
|
120
|
-
[ DIGEST_KEY,
|
136
|
+
[ RESOURCE_DESC_KEY, @resource_desc ],
|
137
|
+
[ URI_KEY, @uri],
|
138
|
+
[ MIME_TYPE_KEY, @mime_type],
|
139
|
+
[ SIZE_KEY, @size ],
|
140
|
+
[ DIGEST_KEY, @digest ])
|
121
141
|
end
|
122
142
|
|
123
|
-
|
143
|
+
# @param [Hash] resource_hash
|
144
|
+
# @return [Resource]
|
145
|
+
def self.from_h( resource_hash )
|
124
146
|
self.new(
|
125
147
|
:resource_desc => resource_hash[ RESOURCE_DESC_KEY ],
|
126
148
|
:uri => resource_hash[ URI_KEY ],
|