class Simbiotes::Extract

Public Class Methods

fire(object, interfaces, a, time0= nil, time1= nil) click to toggle source
# File lib/simbiotes/extract.rb, line 39
def self.fire(object, interfaces, a, time0= nil, time1= nil)
  if Simbiotes.configuration.targets[object.class.parent.to_s] != nil
    k = "#{object.class.parent}::#{object.class.parent}".constantize
    i = "#{object.class.parent}".demodulize.underscore.gsub(" ","_").downcase + "_id"
    msg = {
      "action" => a,
      "instance" => k.find(object.send(i)).simbiotes_instance,
      "driver" => object.class.name.to_s,
      "interface" => interfaces,
    }
    if time0 != nil
      msg["time0"] = time0
      msg["time1"] = time1
    end
    c = Simbiotes::Client.new
    c.send(msg.to_json)
    object.skip_extract = true
    interfaces.each do |key, value|
      object.send(("#{key}_ack=").to_sym, false)
      object.send(("#{key}_complete=").to_sym, false)
      object.send(("#{key}_action=").to_sym, a)
    end
    object.save
    object.skip_extract = false
    unless Simbiotes.configuration.local_logging == false
      Extract.save_log(object, interfaces, a)
    end
  end
end
get(object, time0= nil, time1= nil) click to toggle source
# File lib/simbiotes/extract.rb, line 28
def self.get(object, time0= nil, time1= nil)
  object.accessed_fields.each do |field|
    v = Array.new
    if time0 != nil
      Extract.fire(object, field, object.send(field), "get", time0, time1)
    else
      Extract.fire(object, field, object.send(field), "get")
    end
  end
end
is_target(object, k) click to toggle source
# File lib/simbiotes/extract.rb, line 20
def self.is_target(object, k)
  if Simbiotes.configuration.targets[object.class.parent.to_s][object.class.name.demodulize.to_s].include?(k) || Simbiotes.configuration.targets[object.class.parent.to_s][object.class.name.demodulize.to_s].include?(k.titleize)
    return true
  else
    return false
  end
end
save_log(object, interfaces, a) click to toggle source
# File lib/simbiotes/extract.rb, line 71
def self.save_log(object, interfaces, a)
  interfaces.each do |key, value|
    klass = "#{object.class.name.underscore}_#{key}_log".classify.constantize
    r = klass.new
    r.send(("#{key}_action=").to_sym, a)
    r.send(("#{key}=".to_sym), value)
    r.send(("#{key}_ack=").to_sym, false)
    r.send(("#{key}_complete=").to_sym, false)
    r.send(("#{object.class.name.demodulize.underscore.gsub("/","_")}_id=").to_sym, object.id)
    puts r.inspect
    r.save
  end
end
send(object) click to toggle source
# File lib/simbiotes/extract.rb, line 7
def self.send(object)
  interfaces = Hash.new
  puts object.previous_changes
  object.previous_changes.each do |k,v|
    if Simbiotes::Extract.is_target(object, k)
      interfaces[k] = v[1].to_s
    end
  end
  if interfaces != {}
    Extract.fire(object, interfaces, "set-request")
  end
end