class MixReader::Base

Constants

MIXPANEL_JQL_URL

Attributes

filters[RW]
options[RW]
script[RW]

Public Class Methods

new(args) click to toggle source
# File lib/mix_reader/base.rb, line 18
def initialize(args)
  raise "can not instantiate base class" if class_name == "Base"
  @filters = args
end
query(args) click to toggle source
# File lib/mix_reader/base.rb, line 11
def query(args)
  raise "invalid arguments" unless args.is_a?(Hash)

  new(args).query
end

Public Instance Methods

query() click to toggle source
# File lib/mix_reader/base.rb, line 23
def query
  build_script
  build_options
  query_and_init_objects
end

Private Instance Methods

api_secret() click to toggle source
# File lib/mix_reader/base.rb, line 63
def api_secret
  MixReader::configuration.api_secret
end
build_options() click to toggle source
# File lib/mix_reader/base.rb, line 47
def build_options
  @options = {
    basic_auth: { username: api_secret },
    body: { script: script }
  }
end
class_name() click to toggle source
# File lib/mix_reader/base.rb, line 59
def class_name
  self.class.name.split("::").last
end
m_key(key) click to toggle source
# File lib/mix_reader/base.rb, line 54
def m_key(key)
  return key unless key[0] >= 'a' && key[0] <= 'z'
  '$' + key
end
query_and_init_objects() click to toggle source
# File lib/mix_reader/base.rb, line 31
def query_and_init_objects
  response = send_request
  data = response.parsed_response
  data.map do |item|
    item_data = item["properties"]
    h = {}
    item_data.each{ |k, v| h[k[1..-1]] = v if k[0] == '$' }
    item_data["class_name"] = class_name
    item_data
  end
end
send_request() click to toggle source
# File lib/mix_reader/base.rb, line 43
def send_request
  self.class.send("post", MIXPANEL_JQL_URL, @options)
end