Sha256: d953cef93af5fe1d3edbc7286ceb72bb41e5ac77067af7d3766ea69331526b54

Contents?: true

Size: 970 Bytes

Versions: 22

Compression:

Stored size: 970 Bytes

Contents

module Helium
  class DataPoint < Resource
    attr_reader :timestamp, :value, :port

    def initialize(opts = {})
      super(opts)

      @timestamp  = @params.dig("attributes", "timestamp")
      @value      = @params.dig("attributes", "value")
      @port       = @params.dig("attributes", "port")
    end

    def timestamp
      DateTime.parse(@timestamp)
    end

    def max
      return nil unless @value.is_a?(Hash)
      @value["max"]
    end

    def min
      return nil unless @value.is_a?(Hash)
      @value["min"]
    end

    def avg
      return nil unless @value.is_a?(Hash)
      @value["avg"]
    end

    def aggregate?
      [max, min, avg].none? { |agg_value| agg_value.nil? }
    end

    def as_json
      j = super.merge({
        timestamp: timestamp,
        port: port
      })

      if aggregate?
        j[:max] = max
        j[:min] = min
        j[:avg] = avg
      else
        j[:value] = value
      end

      j
    end
  end
end

Version data entries

22 entries across 22 versions & 1 rubygems

Version Path
helium-ruby-0.26.0 lib/helium/data_point.rb
helium-ruby-0.25.0 lib/helium/data_point.rb
helium-ruby-0.24.0 lib/helium/data_point.rb
helium-ruby-0.23.0 lib/helium/data_point.rb
helium-ruby-0.22.0 lib/helium/data_point.rb
helium-ruby-0.21.0 lib/helium/data_point.rb
helium-ruby-0.20.0 lib/helium/data_point.rb
helium-ruby-0.19.0 lib/helium/data_point.rb
helium-ruby-0.18.0 lib/helium/data_point.rb
helium-ruby-0.17.0 lib/helium/data_point.rb
helium-ruby-0.16.0 lib/helium/data_point.rb
helium-ruby-0.15.0 lib/helium/data_point.rb
helium-ruby-0.14.0 lib/helium/data_point.rb
helium-ruby-0.13.0 lib/helium/data_point.rb
helium-ruby-0.12.0 lib/helium/data_point.rb
helium-ruby-0.11.0 lib/helium/data_point.rb
helium-ruby-0.10.0 lib/helium/data_point.rb
helium-ruby-0.9.0 lib/helium/data_point.rb
helium-ruby-0.8.0 lib/helium/data_point.rb
helium-ruby-0.7.0 lib/helium/data_point.rb