cosm-rb 0.0.10 → 0.1.00
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/lib/cosm-rb.rb +0 -1
- data/lib/cosm-rb/helpers.rb +2 -3
- data/lib/cosm-rb/search_result.rb +5 -0
- data/lib/cosm-rb/templates/json/datapoint_defaults.rb +4 -4
- data/lib/cosm-rb/templates/json/datastream_defaults.rb +31 -36
- data/lib/cosm-rb/templates/json/feed_defaults.rb +43 -89
- data/lib/cosm-rb/templates/json/key_defaults.rb +18 -20
- data/lib/cosm-rb/templates/json/search_result_defaults.rb +18 -23
- data/lib/cosm-rb/templates/json/trigger_defaults.rb +10 -10
- data/lib/cosm-rb/version.rb +1 -1
- data/spec/cosm-rb/datapoint_spec.rb +3 -3
- data/spec/cosm-rb/datastream_spec.rb +1 -2
- data/spec/cosm-rb/feed_spec.rb +1 -2
- data/spec/cosm-rb/search_result_spec.rb +4 -5
- metadata +36 -38
- data/lib/cosm-rb/template.rb +0 -32
- data/spec/cosm-rb/template_spec.rb +0 -74
data/lib/cosm-rb.rb
CHANGED
@@ -18,7 +18,6 @@ require 'cosm-rb/exceptions'
|
|
18
18
|
require 'cosm-rb/string_extensions'
|
19
19
|
require 'cosm-rb/array_extensions'
|
20
20
|
require 'cosm-rb/hash_extensions'
|
21
|
-
require 'cosm-rb/template'
|
22
21
|
require 'cosm-rb/templates/defaults'
|
23
22
|
require 'cosm-rb/parsers/defaults'
|
24
23
|
require 'cosm-rb/feed'
|
data/lib/cosm-rb/helpers.rb
CHANGED
@@ -6,15 +6,14 @@ module Cosm
|
|
6
6
|
tags = []
|
7
7
|
quoted_mode = false
|
8
8
|
tags << string.chars.reduce("") do |buffer, char|
|
9
|
-
|
10
|
-
when ','
|
9
|
+
if char == ','
|
11
10
|
if !quoted_mode
|
12
11
|
tags << buffer
|
13
12
|
buffer = ""
|
14
13
|
else
|
15
14
|
buffer << char
|
16
15
|
end
|
17
|
-
|
16
|
+
elsif char == '"'
|
18
17
|
if buffer.length > 0 && buffer[-1,1] == '\\'
|
19
18
|
buffer[-1] = char
|
20
19
|
else
|
@@ -3,10 +3,10 @@ module Cosm
|
|
3
3
|
module JSON
|
4
4
|
module DatapointDefaults
|
5
5
|
def generate_json(version = nil)
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
6
|
+
{
|
7
|
+
:at => at.iso8601(6),
|
8
|
+
:value => value
|
9
|
+
}.delete_if_nil_value
|
10
10
|
end
|
11
11
|
end
|
12
12
|
end
|
@@ -2,61 +2,56 @@ module Cosm
|
|
2
2
|
module Templates
|
3
3
|
module JSON
|
4
4
|
module DatastreamDefaults
|
5
|
+
|
5
6
|
def generate_json(version, options={})
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
json_0_6_alpha options
|
7
|
+
if version == "1.0.0"
|
8
|
+
output = json_100(options)
|
9
|
+
elsif version == "0.6-alpha"
|
10
|
+
output = json_06alpha(options)
|
11
11
|
end
|
12
|
+
output[:version] = version unless options[:hide_version]
|
13
|
+
!options[:include_blank] ? output.delete_if_nil_value : output
|
12
14
|
end
|
13
15
|
|
14
16
|
private
|
15
17
|
|
16
18
|
# As used by http://cosm.com/api/v2/FEED_ID/datastreams/DATASTREAM_ID.json
|
17
|
-
def
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
{
|
31
|
-
:at => datapoint.at.iso8601(6),
|
32
|
-
:value => datapoint.value
|
33
|
-
}
|
34
|
-
end
|
35
|
-
end if datapoints.any?
|
36
|
-
template.output! options
|
19
|
+
def json_100(options = {})
|
20
|
+
datapoints = self.datapoints.map {|dp| {:value => dp.value, :at => dp.at.iso8601(6)}}
|
21
|
+
{
|
22
|
+
:id => self.id,
|
23
|
+
:current_value => self.current_value,
|
24
|
+
:at => self.updated.iso8601(6),
|
25
|
+
:max_value => self.max_value.to_s,
|
26
|
+
:min_value => self.min_value.to_s,
|
27
|
+
:tags => parse_tag_string(self.tags),
|
28
|
+
:unit => unit_hash(options),
|
29
|
+
:datapoints_function => datapoints_function,
|
30
|
+
:datapoints => datapoints
|
31
|
+
}
|
37
32
|
end
|
38
33
|
|
39
34
|
# As used by http://cosm.com/api/v1/FEED_ID/datastreams/DATASTREAM_ID.json
|
40
|
-
def
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
35
|
+
def json_06alpha(options = {})
|
36
|
+
{
|
37
|
+
:id => self.id,
|
38
|
+
:values =>
|
39
|
+
[{
|
40
|
+
:recorded_at => updated.iso8601,
|
46
41
|
:value => current_value,
|
47
42
|
:max_value => max_value.to_s,
|
48
|
-
:min_value => min_value.to_s
|
43
|
+
:min_value => min_value.to_s
|
44
|
+
}.delete_if_nil_value],
|
45
|
+
:tags => parse_tag_string(self.tags),
|
46
|
+
:unit => unit_hash(options),
|
49
47
|
}
|
50
|
-
template.tags {parse_tag_string(tags)}
|
51
|
-
template.unit {unit_hash(options)}
|
52
|
-
template.output! options
|
53
48
|
end
|
54
49
|
|
55
50
|
def unit_hash(options={})
|
56
51
|
hash = { :type => unit_type,
|
57
52
|
:symbol => unit_symbol,
|
58
53
|
:label => unit_label }
|
59
|
-
!options[:include_blank] ? hash.delete_if_nil_value : hash
|
54
|
+
!options[:include_blank] ? (hash.delete_if_nil_value if unit_type || unit_label || unit_symbol) : hash
|
60
55
|
end
|
61
56
|
|
62
57
|
end
|
@@ -6,96 +6,57 @@ module Cosm
|
|
6
6
|
include Cosm::Helpers
|
7
7
|
|
8
8
|
def generate_json(version, options = {})
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
json_0_6_alpha options
|
9
|
+
if version == "1.0.0"
|
10
|
+
output = json_100(options)
|
11
|
+
elsif version == "0.6-alpha"
|
12
|
+
output = json_06alpha(options)
|
14
13
|
end
|
14
|
+
!options[:include_blank] ? output.delete_if_nil_value : output
|
15
15
|
end
|
16
16
|
|
17
17
|
private
|
18
18
|
|
19
19
|
# As used by http://cosm.com/api/v2/FEED_ID.json
|
20
|
-
def
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
end
|
42
|
-
end
|
43
|
-
template.version {"1.0.0"}
|
44
|
-
if datastreams
|
45
|
-
template.datastreams do
|
46
|
-
datastreams.collect do |ds|
|
47
|
-
if ds.datapoints.any?
|
48
|
-
datapoints = ds.datapoints.collect {|dp| {:value => dp.value, :at => dp.at.iso8601(6)}}
|
49
|
-
end
|
50
|
-
{
|
51
|
-
:id => ds.id,
|
52
|
-
:at => ds.updated.iso8601(6),
|
53
|
-
:max_value => ds.max_value.to_s,
|
54
|
-
:min_value => ds.min_value.to_s,
|
55
|
-
:current_value => ds.current_value,
|
56
|
-
:tags => parse_tag_string(ds.tags),
|
57
|
-
:unit => unit_hash(ds, options),
|
58
|
-
:datapoints => datapoints
|
59
|
-
}.delete_if_nil_value
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
63
|
-
template.location {location_hash(options)}
|
64
|
-
template.output! options
|
20
|
+
def json_100(options = {})
|
21
|
+
{
|
22
|
+
:id => self.id,
|
23
|
+
:title => self.title,
|
24
|
+
:private => self.private.to_s,
|
25
|
+
:icon => icon,
|
26
|
+
:website => website,
|
27
|
+
:tags => parse_tag_string(tags),
|
28
|
+
:description => self.description,
|
29
|
+
:feed => (feed.blank? ? "" : "#{feed}.json"),
|
30
|
+
:auto_feed_url => auto_feed_url,
|
31
|
+
:status => status,
|
32
|
+
:updated => updated.iso8601(6),
|
33
|
+
:created => created.iso8601(6),
|
34
|
+
:email => email,
|
35
|
+
:creator => creator,
|
36
|
+
:user => ({ :login => owner_login } if owner_login),
|
37
|
+
:version => "1.0.0",
|
38
|
+
:datastreams => datastreams.map {|ds| ds.generate_json("1.0.0", options.merge({:hide_version => true}))},
|
39
|
+
:location => location_hash(options)
|
40
|
+
}
|
65
41
|
end
|
66
42
|
|
43
|
+
|
67
44
|
# As used by http://cosm.com/api/v1/FEED_ID.json
|
68
|
-
def
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
{
|
84
|
-
:id => ds.id,
|
85
|
-
:values => [{
|
86
|
-
:max_value => ds.max_value.to_s,
|
87
|
-
:min_value => ds.min_value.to_s,
|
88
|
-
:value => ds.current_value,
|
89
|
-
:recorded_at => ds.updated.iso8601
|
90
|
-
}.delete_if_nil_value],
|
91
|
-
:tags => parse_tag_string(ds.tags),
|
92
|
-
:unit => unit_hash(ds, options)
|
93
|
-
}.delete_if_nil_value
|
94
|
-
end
|
95
|
-
end
|
96
|
-
end
|
97
|
-
template.location {location_hash(options)}
|
98
|
-
template.output! options
|
45
|
+
def json_06alpha(options = {})
|
46
|
+
{
|
47
|
+
:id => self.id,
|
48
|
+
:title => self.title,
|
49
|
+
:icon => icon,
|
50
|
+
:website => website,
|
51
|
+
:description => self.description,
|
52
|
+
:feed => (feed.blank? ? "" : "#{feed}.json"),
|
53
|
+
:status => status,
|
54
|
+
:updated => updated.iso8601(6),
|
55
|
+
:email => email,
|
56
|
+
:version => "0.6-alpha",
|
57
|
+
:datastreams => datastreams.map {|ds| ds.generate_json("0.6-alpha", options.merge({:hide_version => true}))},
|
58
|
+
:location => location_hash(options)
|
59
|
+
}
|
99
60
|
end
|
100
61
|
|
101
62
|
private
|
@@ -111,7 +72,7 @@ module Cosm
|
|
111
72
|
hash[:waypoints] = format_location_waypoints if location_waypoints
|
112
73
|
!options[:include_blank] ? (hash.delete_if_nil_value if location_disposition || location_name || location_exposure || location_domain || location_ele || location_lat || location_lon) : hash
|
113
74
|
end
|
114
|
-
|
75
|
+
|
115
76
|
def format_location_waypoints
|
116
77
|
output = []
|
117
78
|
location_waypoints.each{ |item|
|
@@ -120,13 +81,6 @@ module Cosm
|
|
120
81
|
}
|
121
82
|
output
|
122
83
|
end
|
123
|
-
|
124
|
-
def unit_hash(datastream, options={})
|
125
|
-
hash = { :type => datastream.unit_type,
|
126
|
-
:symbol => datastream.unit_symbol,
|
127
|
-
:label => datastream.unit_label }
|
128
|
-
!options[:include_blank] ? (hash.delete_if_nil_value if datastream.unit_type || datastream.unit_label || datastream.unit_symbol) : hash
|
129
|
-
end
|
130
84
|
end
|
131
85
|
end
|
132
86
|
end
|
@@ -3,26 +3,24 @@ module Cosm
|
|
3
3
|
module JSON
|
4
4
|
module KeyDefaults
|
5
5
|
def generate_json(options={})
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
if s.resources
|
11
|
-
res = s.resources.collect { |r| { :feed_id => r.feed_id, :datastream_id => r.datastream_id, :datastream_trigger_id => r.datastream_trigger_id }.delete_if_nil_value
|
12
|
-
}
|
13
|
-
end
|
14
|
-
{
|
15
|
-
:referer => s.referer,
|
16
|
-
:source_ip => s.source_ip,
|
17
|
-
:label => s.label,
|
18
|
-
:minimum_interval => s.minimum_interval,
|
19
|
-
:access_methods => s.access_methods.collect { |a| a.to_s.downcase },
|
20
|
-
:resources => res
|
6
|
+
if self.permissions
|
7
|
+
s = self.permissions.collect { |s|
|
8
|
+
if s.resources
|
9
|
+
res = s.resources.collect { |r| { :feed_id => r.feed_id, :datastream_id => r.datastream_id, :datastream_trigger_id => r.datastream_trigger_id }.delete_if_nil_value
|
21
10
|
}
|
11
|
+
end
|
12
|
+
{
|
13
|
+
:referer => s.referer,
|
14
|
+
:source_ip => s.source_ip,
|
15
|
+
:label => s.label,
|
16
|
+
:minimum_interval => s.minimum_interval,
|
17
|
+
:access_methods => s.access_methods.collect { |a| a.to_s.downcase },
|
18
|
+
:resources => res
|
22
19
|
}
|
23
|
-
|
24
|
-
|
25
|
-
|
20
|
+
}
|
21
|
+
end
|
22
|
+
output = {
|
23
|
+
:key => {
|
26
24
|
:id => id,
|
27
25
|
:expires_at => expires_at.respond_to?(:iso8601) ? expires_at.iso8601(6) : expires_at,
|
28
26
|
:api_key => key,
|
@@ -31,8 +29,8 @@ module Cosm
|
|
31
29
|
:private_access => private_access,
|
32
30
|
:permissions => s
|
33
31
|
}
|
34
|
-
|
35
|
-
|
32
|
+
}
|
33
|
+
!options[:include_blank] ? output.delete_if_nil_value : output
|
36
34
|
end
|
37
35
|
end
|
38
36
|
end
|
@@ -6,38 +6,33 @@ module Cosm
|
|
6
6
|
include Helpers
|
7
7
|
|
8
8
|
def generate_json(version)
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
json_0_6_alpha
|
9
|
+
if version == "1.0.0"
|
10
|
+
json_100.delete_if_nil_value
|
11
|
+
elsif version == "0.6-alpha"
|
12
|
+
json_06alpha.delete_if_nil_value
|
14
13
|
end
|
15
14
|
end
|
16
15
|
|
17
16
|
private
|
18
17
|
|
19
18
|
# As used by http://cosm.com/api/v2/feeds.json
|
20
|
-
def
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
end
|
28
|
-
template.output!
|
19
|
+
def json_100
|
20
|
+
{
|
21
|
+
:totalResults => totalResults,
|
22
|
+
:startIndex => startIndex,
|
23
|
+
:itemsPerPage => itemsPerPage,
|
24
|
+
:results => results.collect{|f| f.generate_json("1.0.0")}
|
25
|
+
}
|
29
26
|
end
|
30
27
|
|
31
28
|
# As used by http://cosm.com/api/v1/feeds.json
|
32
|
-
def
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
end
|
40
|
-
template.output!
|
29
|
+
def json_06alpha
|
30
|
+
{
|
31
|
+
:totalResults => totalResults,
|
32
|
+
:startIndex => startIndex,
|
33
|
+
:itemsPerPage => itemsPerPage,
|
34
|
+
:results => results.collect{|f| f.generate_json("0.6-alpha")}
|
35
|
+
}
|
41
36
|
end
|
42
37
|
|
43
38
|
end
|
@@ -3,16 +3,16 @@ module Cosm
|
|
3
3
|
module JSON
|
4
4
|
module TriggerDefaults
|
5
5
|
def generate_json(version = nil)
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
6
|
+
{
|
7
|
+
:id => self.id,
|
8
|
+
:threshold_value => self.threshold_value,
|
9
|
+
:notified_at => self.notified_at,
|
10
|
+
:url => self.url,
|
11
|
+
:trigger_type => self.trigger_type,
|
12
|
+
:stream_id => self.stream_id,
|
13
|
+
:environment_id => self.environment_id,
|
14
|
+
:user => self.user,
|
15
|
+
}.delete_if_nil_value
|
16
16
|
end
|
17
17
|
end
|
18
18
|
end
|
data/lib/cosm-rb/version.rb
CHANGED
@@ -102,9 +102,9 @@ describe Cosm::Datapoint do
|
|
102
102
|
# Provided by Cosm::Templates::DatapointDefaults
|
103
103
|
describe "#generate_json" do
|
104
104
|
it "should take a version and generate the appropriate template" do
|
105
|
-
|
106
|
-
Cosm::
|
107
|
-
|
105
|
+
now = Time.now
|
106
|
+
datapoint = Cosm::Datapoint.new({:at => now, :value => 123})
|
107
|
+
datapoint.generate_json.should == {:at => now.iso8601(6), :value => 123}
|
108
108
|
end
|
109
109
|
end
|
110
110
|
|
@@ -260,8 +260,7 @@ describe Cosm::Datastream do
|
|
260
260
|
describe "#generate_json" do
|
261
261
|
it "should take a version and generate the appropriate template" do
|
262
262
|
datastream = Cosm::Datastream.new({})
|
263
|
-
|
264
|
-
lambda {datastream.generate_json("1.0.0")}.should raise_error(NoMethodError)
|
263
|
+
datastream.generate_json("1.0.0").should == {:version => "1.0.0"}
|
265
264
|
end
|
266
265
|
end
|
267
266
|
|
data/spec/cosm-rb/feed_spec.rb
CHANGED
@@ -252,8 +252,7 @@ describe Cosm::Feed do
|
|
252
252
|
describe "#generate_json" do
|
253
253
|
it "should take a version and generate the appropriate template" do
|
254
254
|
feed = Cosm::Feed.new({})
|
255
|
-
|
256
|
-
lambda {feed.generate_json("1.0.0", {})}.should raise_error(NoMethodError)
|
255
|
+
feed.generate_json("1.0.0").should == {:version => "1.0.0"}
|
257
256
|
end
|
258
257
|
end
|
259
258
|
|
@@ -149,9 +149,9 @@ describe Cosm::SearchResult do
|
|
149
149
|
@search_result = Cosm::SearchResult.new({})
|
150
150
|
end
|
151
151
|
|
152
|
-
it "should return
|
152
|
+
it "should return [] if not an array" do
|
153
153
|
@search_result.results = "kittens"
|
154
|
-
@search_result.results.should
|
154
|
+
@search_result.results.should be_empty
|
155
155
|
end
|
156
156
|
|
157
157
|
it "should accept an array of feeds and hashes and store an array of datastreams" do
|
@@ -187,9 +187,8 @@ describe Cosm::SearchResult do
|
|
187
187
|
# Provided by Cosm::Templates::SearchResultDefaults
|
188
188
|
describe "#generate_json" do
|
189
189
|
it "should take a version and generate the appropriate template" do
|
190
|
-
search_result = Cosm::SearchResult.new({})
|
191
|
-
|
192
|
-
lambda {search_result.generate_json("1.0.0")}.should raise_error(NoMethodError)
|
190
|
+
search_result = Cosm::SearchResult.new({"totalResults" => 100, "itemsPerPage" => 12, :results => []})
|
191
|
+
search_result.generate_json("1.0.0").should == {:totalResults => 100, :itemsPerPage => 12}
|
193
192
|
end
|
194
193
|
end
|
195
194
|
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cosm-rb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 27
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
+
- 1
|
8
9
|
- 0
|
9
|
-
|
10
|
-
version: 0.0.10
|
10
|
+
version: 0.1.00
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Paul Bellamy
|
@@ -17,11 +17,13 @@ autorequire:
|
|
17
17
|
bindir: bin
|
18
18
|
cert_chain: []
|
19
19
|
|
20
|
-
date: 2012-
|
20
|
+
date: 2012-09-01 00:00:00 +00:00
|
21
21
|
default_executable:
|
22
22
|
dependencies:
|
23
23
|
- !ruby/object:Gem::Dependency
|
24
|
-
|
24
|
+
name: yajl-ruby
|
25
|
+
prerelease: false
|
26
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
25
27
|
none: false
|
26
28
|
requirements:
|
27
29
|
- - ">="
|
@@ -32,12 +34,12 @@ dependencies:
|
|
32
34
|
- 8
|
33
35
|
- 1
|
34
36
|
version: 0.8.1
|
35
|
-
requirement: *id001
|
36
37
|
type: :runtime
|
37
|
-
|
38
|
-
prerelease: false
|
38
|
+
version_requirements: *id001
|
39
39
|
- !ruby/object:Gem::Dependency
|
40
|
-
|
40
|
+
name: nokogiri
|
41
|
+
prerelease: false
|
42
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
41
43
|
none: false
|
42
44
|
requirements:
|
43
45
|
- - ">="
|
@@ -48,12 +50,12 @@ dependencies:
|
|
48
50
|
- 4
|
49
51
|
- 4
|
50
52
|
version: 1.4.4
|
51
|
-
requirement: *id002
|
52
53
|
type: :runtime
|
53
|
-
|
54
|
-
prerelease: false
|
54
|
+
version_requirements: *id002
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
|
56
|
+
name: httparty
|
57
|
+
prerelease: false
|
58
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
57
59
|
none: false
|
58
60
|
requirements:
|
59
61
|
- - ">="
|
@@ -64,12 +66,12 @@ dependencies:
|
|
64
66
|
- 8
|
65
67
|
- 3
|
66
68
|
version: 0.8.3
|
67
|
-
requirement: *id003
|
68
69
|
type: :runtime
|
69
|
-
|
70
|
-
prerelease: false
|
70
|
+
version_requirements: *id003
|
71
71
|
- !ruby/object:Gem::Dependency
|
72
|
-
|
72
|
+
name: fastercsv
|
73
|
+
prerelease: false
|
74
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
73
75
|
none: false
|
74
76
|
requirements:
|
75
77
|
- - ">="
|
@@ -80,12 +82,12 @@ dependencies:
|
|
80
82
|
- 5
|
81
83
|
- x
|
82
84
|
version: 1.5.x
|
83
|
-
requirement: *id004
|
84
85
|
type: :runtime
|
85
|
-
|
86
|
-
prerelease: false
|
86
|
+
version_requirements: *id004
|
87
87
|
- !ruby/object:Gem::Dependency
|
88
|
-
|
88
|
+
name: ruby-debug
|
89
|
+
prerelease: false
|
90
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
89
91
|
none: false
|
90
92
|
requirements:
|
91
93
|
- - ">="
|
@@ -94,12 +96,12 @@ dependencies:
|
|
94
96
|
segments:
|
95
97
|
- 0
|
96
98
|
version: "0"
|
97
|
-
requirement: *id005
|
98
99
|
type: :development
|
99
|
-
|
100
|
-
prerelease: false
|
100
|
+
version_requirements: *id005
|
101
101
|
- !ruby/object:Gem::Dependency
|
102
|
-
|
102
|
+
name: rcov
|
103
|
+
prerelease: false
|
104
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
103
105
|
none: false
|
104
106
|
requirements:
|
105
107
|
- - ">="
|
@@ -110,12 +112,12 @@ dependencies:
|
|
110
112
|
- 9
|
111
113
|
- 9
|
112
114
|
version: 0.9.9
|
113
|
-
requirement: *id006
|
114
115
|
type: :development
|
115
|
-
|
116
|
-
prerelease: false
|
116
|
+
version_requirements: *id006
|
117
117
|
- !ruby/object:Gem::Dependency
|
118
|
-
|
118
|
+
name: rake
|
119
|
+
prerelease: false
|
120
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
119
121
|
none: false
|
120
122
|
requirements:
|
121
123
|
- - "="
|
@@ -126,12 +128,12 @@ dependencies:
|
|
126
128
|
- 8
|
127
129
|
- 7
|
128
130
|
version: 0.8.7
|
129
|
-
requirement: *id007
|
130
131
|
type: :development
|
131
|
-
|
132
|
-
prerelease: false
|
132
|
+
version_requirements: *id007
|
133
133
|
- !ruby/object:Gem::Dependency
|
134
|
-
|
134
|
+
name: rspec
|
135
|
+
prerelease: false
|
136
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
135
137
|
none: false
|
136
138
|
requirements:
|
137
139
|
- - "="
|
@@ -142,10 +144,8 @@ dependencies:
|
|
142
144
|
- 6
|
143
145
|
- 0
|
144
146
|
version: 2.6.0
|
145
|
-
requirement: *id008
|
146
147
|
type: :development
|
147
|
-
|
148
|
-
prerelease: false
|
148
|
+
version_requirements: *id008
|
149
149
|
description: A library for communicating with the Cosm REST API, parsing and rendering Cosm feed formats
|
150
150
|
email:
|
151
151
|
- paul.a.bellamy@gmail.com
|
@@ -205,7 +205,6 @@ files:
|
|
205
205
|
- lib/cosm-rb/resource.rb
|
206
206
|
- lib/cosm-rb/search_result.rb
|
207
207
|
- lib/cosm-rb/string_extensions.rb
|
208
|
-
- lib/cosm-rb/template.rb
|
209
208
|
- lib/cosm-rb/templates/csv/datapoint_defaults.rb
|
210
209
|
- lib/cosm-rb/templates/csv/datastream_defaults.rb
|
211
210
|
- lib/cosm-rb/templates/csv/feed_defaults.rb
|
@@ -249,7 +248,6 @@ files:
|
|
249
248
|
- spec/cosm-rb/parsers/xml/trigger_defaults_spec.rb
|
250
249
|
- spec/cosm-rb/search_result_spec.rb
|
251
250
|
- spec/cosm-rb/string_extensions_spec.rb
|
252
|
-
- spec/cosm-rb/template_spec.rb
|
253
251
|
- spec/cosm-rb/templates/csv/datapoint_defaults_spec.rb
|
254
252
|
- spec/cosm-rb/templates/csv/datastream_defaults_spec.rb
|
255
253
|
- spec/cosm-rb/templates/csv/feed_defaults_spec.rb
|
data/lib/cosm-rb/template.rb
DELETED
@@ -1,32 +0,0 @@
|
|
1
|
-
module Cosm
|
2
|
-
class Template
|
3
|
-
attr_accessor :subject
|
4
|
-
attr_accessor :presentation
|
5
|
-
attr_accessor :output
|
6
|
-
|
7
|
-
def initialize(subject, presentation, &block)
|
8
|
-
@subject = subject
|
9
|
-
@presentation = presentation
|
10
|
-
@output = {}
|
11
|
-
end
|
12
|
-
|
13
|
-
def method_missing(sym, *args, &block)
|
14
|
-
if block_given?
|
15
|
-
@output[sym] = @subject.instance_eval &block
|
16
|
-
else
|
17
|
-
@output[sym] = @subject.send(sym)
|
18
|
-
end
|
19
|
-
rescue NameError, NoMethodError => e
|
20
|
-
@output[sym] = nil
|
21
|
-
end
|
22
|
-
|
23
|
-
def id
|
24
|
-
method_missing(:id)
|
25
|
-
end
|
26
|
-
|
27
|
-
def output!(options = {})
|
28
|
-
!options[:include_blank] ? @output.reject {|k,v| v.nil? || v.blank?} : @output
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
@@ -1,74 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Cosm::Template do
|
4
|
-
describe "initialisation" do
|
5
|
-
it "should accept an object and format" do
|
6
|
-
template = Cosm::Template.new(@feed, :json)
|
7
|
-
template.subject.should == @feed
|
8
|
-
template.presentation.should == :json
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
describe "presenting json" do
|
13
|
-
before(:each) do
|
14
|
-
@feed = Cosm::Feed.new(feed_as_(:hash))
|
15
|
-
@template = Cosm::Template.new(@feed, :json)
|
16
|
-
end
|
17
|
-
|
18
|
-
it "should allow describing :title => @feed.title" do
|
19
|
-
@template.title
|
20
|
-
@template.output!.should == {:title => @feed.title}
|
21
|
-
end
|
22
|
-
|
23
|
-
it "should allow describing :name => @feed.title" do
|
24
|
-
@template.name {title}
|
25
|
-
@template.output!.should == {:name => @feed.title}
|
26
|
-
end
|
27
|
-
|
28
|
-
it "should allow describing :tags => @feed.tags.map(&:strip).sort" do
|
29
|
-
@template.tags { [*tags].map(&:strip).sort }
|
30
|
-
@template.output!.should == {:tags => [*@feed.tags].map(&:strip).sort}
|
31
|
-
end
|
32
|
-
|
33
|
-
it "should allow describing datastreams" do
|
34
|
-
@template.title
|
35
|
-
@template.datastreams do |f|
|
36
|
-
f.datastreams.collect do |ds|
|
37
|
-
{
|
38
|
-
:id => ds.id,
|
39
|
-
:current_value => ds.current_value
|
40
|
-
}
|
41
|
-
end
|
42
|
-
end
|
43
|
-
datastreams = @feed.datastreams.collect {|ds| {:id => ds.id, :current_value => ds.current_value}}
|
44
|
-
@template.output!.should == {
|
45
|
-
:title => @feed.title,
|
46
|
-
:datastreams => datastreams
|
47
|
-
}
|
48
|
-
end
|
49
|
-
|
50
|
-
it "should ignore nils" do
|
51
|
-
@feed.title = nil
|
52
|
-
@template.title
|
53
|
-
@template.output!.should == {}
|
54
|
-
end
|
55
|
-
|
56
|
-
it "should return nils for NameErrors" do
|
57
|
-
@template.title {litter}
|
58
|
-
@template.output!.should == {}
|
59
|
-
end
|
60
|
-
|
61
|
-
it "should return nils for NoMethodErrors" do
|
62
|
-
@feed.should_not respond_to(:rubbish)
|
63
|
-
@template.rubbish.should == nil
|
64
|
-
end
|
65
|
-
|
66
|
-
it "should include blanks if we pass :include_blank" do
|
67
|
-
@feed.title = ''
|
68
|
-
@template.title
|
69
|
-
@template.output!(:include_blank => true).should == {:title => ''}
|
70
|
-
end
|
71
|
-
|
72
|
-
end
|
73
|
-
end
|
74
|
-
|