Floppy-amee 2.0.10 → 2.0.11

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/amee.rb CHANGED
@@ -38,6 +38,7 @@ require 'amee/data_item_value'
38
38
  require 'amee/profile'
39
39
  require 'amee/profile_category'
40
40
  require 'amee/profile_item'
41
+ require 'amee/profile_item_value'
41
42
  require 'amee/drill_down'
42
43
 
43
44
  class Date
@@ -296,7 +296,11 @@ module AMEE
296
296
  # Post to category
297
297
  response = connection.raw_post(category_path, post_data).body
298
298
  # Send back a category object containing all the created items
299
- AMEE::Profile::Category.parse(connection, response)
299
+ unless response.empty?
300
+ return AMEE::Profile::Category.parse(connection, response)
301
+ else
302
+ return true
303
+ end
300
304
  end
301
305
 
302
306
  def self.update(connection, path, options = {})
@@ -333,7 +337,11 @@ module AMEE
333
337
  # Post to category
334
338
  response = connection.raw_put(category_path, put_data).body
335
339
  # Send back a category object containing all the created items
336
- AMEE::Profile::Category.parse(connection, response)
340
+ unless response.empty?
341
+ return AMEE::Profile::Category.parse(connection, response)
342
+ else
343
+ return true
344
+ end
337
345
  end
338
346
 
339
347
  def self.delete(connection, path)
@@ -0,0 +1,106 @@
1
+ module AMEE
2
+ module Profile
3
+ class ItemValue < AMEE::Profile::Object
4
+
5
+ def initialize(data = {})
6
+ @value = data ? data[:value] : nil
7
+ @type = data ? data[:type] : nil
8
+ @unit = data ? data[:unit] : nil
9
+ @per_unit = data ? data[:per_unit] : nil
10
+ @from_profile = data ? data[:from_profile] : nil
11
+ @from_data = data ? data[:from_data] : nil
12
+ super
13
+ end
14
+
15
+ attr_reader :type
16
+ attr_accessor :unit
17
+ attr_accessor :per_unit
18
+
19
+ def value
20
+ case type
21
+ when "DECIMAL"
22
+ @value.to_f
23
+ else
24
+ @value
25
+ end
26
+ end
27
+
28
+ def value=(val)
29
+ @value = val
30
+ end
31
+
32
+ def from_profile?
33
+ @from_profile
34
+ end
35
+
36
+ def from_data?
37
+ @from_data
38
+ end
39
+
40
+ def self.from_json(json, path)
41
+ # Read JSON
42
+ doc = JSON.parse(json)['itemValue']
43
+ data = {}
44
+ data[:uid] = doc['uid']
45
+ data[:created] = DateTime.parse(doc['created'])
46
+ data[:modified] = DateTime.parse(doc['modified'])
47
+ data[:name] = doc['name']
48
+ data[:path] = path.gsub(/^\/profiles/, '')
49
+ data[:value] = doc['value']
50
+ data[:unit] = doc['unit']
51
+ data[:per_unit] = doc['perUnit']
52
+ data[:type] = doc['itemValueDefinition']['valueDefinition']['valueType']
53
+ # Create object
54
+ ItemValue.new(data)
55
+ rescue
56
+ raise AMEE::BadData.new("Couldn't load ProfileItemValue from JSON. Check that your URL is correct.")
57
+ end
58
+
59
+ def self.from_xml(xml, path)
60
+ # Read XML
61
+ doc = REXML::Document.new(xml)
62
+ data = {}
63
+ data[:uid] = REXML::XPath.first(doc, "/Resources/ProfileItemValueResource/ItemValue/@uid").to_s
64
+ data[:created] = DateTime.parse(REXML::XPath.first(doc, "/Resources/ProfileItemValueResource/ItemValue/@Created").to_s)
65
+ data[:modified] = DateTime.parse(REXML::XPath.first(doc, "/Resources/ProfileItemValueResource/ItemValue/@Modified").to_s)
66
+ data[:name] = REXML::XPath.first(doc, '/Resources/ProfileItemValueResource/ItemValue/Name').text
67
+ data[:path] = path.gsub(/^\/profiles/, '')
68
+ data[:value] = REXML::XPath.first(doc, '/Resources/ProfileItemValueResource/ItemValue/Value').text
69
+ data[:unit] = REXML::XPath.first(doc, '/Resources/ProfileItemValueResource/ItemValue/Unit').text rescue nil
70
+ data[:per_unit] = REXML::XPath.first(doc, '/Resources/ProfileItemValueResource/ItemValue/PerUnit').text rescue nil
71
+ data[:type] = REXML::XPath.first(doc, '/Resources/ProfileItemValueResource/ItemValue/ItemValueDefinition/ValueDefinition/ValueType').text
72
+ data[:from_profile] = REXML::XPath.first(doc, '/Resources/ProfileItemValueResource/ItemValue/ItemValueDefinition/FromProfile').text == "true" ? true : false
73
+ data[:from_data] = REXML::XPath.first(doc, '/Resources/ProfileItemValueResource/ItemValue/ItemValueDefinition/FromData').text == "true" ? true : false
74
+ # Create object
75
+ ItemValue.new(data)
76
+ rescue
77
+ raise AMEE::BadData.new("Couldn't load ProfileItemValue from XML. Check that your URL is correct.")
78
+ end
79
+
80
+ def self.get(connection, path)
81
+ # Load Profile from path
82
+ response = connection.get(path).body
83
+ # Parse data from response
84
+ if response.is_json?
85
+ value = ItemValue.from_json(response, path)
86
+ else
87
+ value = ItemValue.from_xml(response, path)
88
+ end
89
+ # Store connection in object for future use
90
+ value.connection = connection
91
+ # Done
92
+ return value
93
+ rescue
94
+ raise AMEE::BadData.new("Couldn't load ProfileItemValue. Check that your URL is correct.")
95
+ end
96
+
97
+ def save!
98
+ options = {:value => value}
99
+ options[:unit] = unit if unit
100
+ options[:perUnit] = per_unit if per_unit
101
+ response = @connection.put(full_path, options).body
102
+ end
103
+
104
+ end
105
+ end
106
+ end
data/lib/amee/version.rb CHANGED
@@ -3,7 +3,7 @@ module AMEE
3
3
  module VERSION #:nodoc:
4
4
  MAJOR = 2
5
5
  MINOR = 0
6
- TINY = 10
6
+ TINY = 11
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
9
9
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: Floppy-amee
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.10
4
+ version: 2.0.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Smith
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-03-11 00:00:00 -07:00
12
+ date: 2009-03-24 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -41,6 +41,7 @@ files:
41
41
  - lib/amee/profile_object.rb
42
42
  - lib/amee/profile_category.rb
43
43
  - lib/amee/profile_item.rb
44
+ - lib/amee/profile_item_value.rb
44
45
  - lib/amee/version.rb
45
46
  - lib/amee/data_category.rb
46
47
  - lib/amee/data_item_value.rb