Class: Fluent::EverySenseInput::EverySenseParser
- Inherits:
-
Object
- Object
- Fluent::EverySenseInput::EverySenseParser
- Defined in:
- lib/fluent/plugin/in_everysense.rb
Overview
currently EverySenseParser is only used by EverySense Plugin Parser is implemented internally. received message format of EverySense is as follows
[
[
{
"farm_uuid": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"sensor_name": "collection_data_1",
"data_class_name": "AirTemperature",
"data": {
"at": "2016-05-12 21:38:52 UTC",
"memo": null,
"value": 23,
"unit": "degree Celsius"
}
},
{
"farm_uuid": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"sensor_name": "collection_data_2",
"data_class_name": "AirHygrometer",
"data": {
"at": "2016-05-12 21:38:52 UTC",
"memo": null,
"value": 30,
"unit": "%RH"
}
}
]
]
Instance Method Summary collapse
-
#initialize(format, parser) ⇒ EverySenseParser
constructor
A new instance of EverySenseParser.
-
#parse(messages) ⇒ Object
TODO: parser should be impelented prettier way…
Constructor Details
#initialize(format, parser) ⇒ EverySenseParser
Returns a new instance of EverySenseParser.
41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/fluent/plugin/in_everysense.rb', line 41 def initialize(format, parser) case format when 'json' @parser = parser return when 'xml' raise NotImplementedError, "XML parser is not implemented yet." else raise NotImplementedError, "XML parser is not implemented yet." end end |
Instance Method Details
#parse(messages) ⇒ Object
TODO: parser should be impelented prettier way… currently once parse JSON array is parsed and in map loop each message is re-formatted to JSON. After that it is re-parsed by fluent JSON parser which supports time_format etc. options…
57 58 59 60 61 62 63 64 65 |
# File 'lib/fluent/plugin/in_everysense.rb', line 57 def parse() #$log.debug messages JSON.parse().map do || #$log.debug message @parser.parse(.to_json) do |time, record| yield(time, record) end end end |