Module: Xively::Parsers::XML::DatapointDefaults

Includes:
Helpers
Included in:
Datapoint
Defined in:
lib/xively-rb/parsers/xml/datapoint_defaults.rb

Instance Method Summary collapse

Instance Method Details

#from_xml(xml) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/xively-rb/parsers/xml/datapoint_defaults.rb', line 8

def from_xml(xml)
  begin
    parsed = MultiXml.parse(xml)
    raise InvalidXMLError, "Missing 'environment' node from base node" if parsed['eeml'].nil? || !parsed['eeml'].key?('environment')
    return {} if parsed['eeml']['environment'].nil?
    datastream = parsed['eeml']['environment']['data']
    raise InvalidXMLError, "Multiple 'data' nodes are not permitted for Datapoint level XML" if datastream.is_a?(Array)
    datapoint = datastream['datapoints']
    raise InvalidXMLError, "Multiple 'value' nodes are not permitted for Datapoint level XML" if datapoint.is_a?(Array)
    _extract_datapoints(datapoint).first
  rescue MultiXml::ParseError => e
    raise InvalidXMLError, e.message
  end
end