Sha256: 1c7e5867ec95e6c67765dc39202ac7ad583f20ca98f5fac5ae8c1e1729e27cd7

Contents?: true

Size: 1.71 KB

Versions: 1

Compression:

Stored size: 1.71 KB

Contents

require 'keen'

module Pushpop

  class Keen < Step

    PLUGIN_NAME = 'keen'

    attr_accessor :_event_collection
    attr_accessor :_analysis_type
    attr_accessor :_timeframe
    attr_accessor :_target_property
    attr_accessor :_group_by
    attr_accessor :_interval
    attr_accessor :_filters
    attr_accessor :_steps
    attr_accessor :_analyses

    def run(last_response=nil, step_responses=nil)
      self.configure(last_response, step_responses)
      ::Keen.send(self._analysis_type, self._event_collection, self.to_analysis_options)
    end

    def configure(last_response=nil, step_responses=nil)
      self.instance_exec(last_response, step_responses, &block)
    end

    def to_analysis_options
      { timeframe: self._timeframe,
        target_property: self._target_property,
        group_by: self._group_by,
        interval: self._interval,
        filters: self._filters,
        analyses: self._analyses,
        steps: self._steps
      }.delete_if { |_, v| v.nil? }
    end

    def event_collection(event_collection)
      self._event_collection = event_collection
    end

    def analysis_type(analysis_type)
      self._analysis_type = analysis_type
    end

    def timeframe(timeframe)
      self._timeframe = timeframe
    end

    def target_property(target_property)
      self._target_property = target_property
    end

    def group_by(group_by)
      self._group_by = group_by
    end

    def interval(interval)
      self._interval = interval
    end

    def filters(filters)
      self._filters = filters
    end

    def steps(steps)
      self._steps = steps
    end

    def analyses(analyses)
      self._analyses = analyses
    end

  end

  Pushpop::Job.register_plugin(Keen::PLUGIN_NAME, Keen)
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
pushpop-0.1.0 lib/plugins/keen.rb