Class: EmailVision

Inherits:
Object
  • Object
show all
Defined in:
lib/email_vision.rb

Constant Summary collapse

WSDL =
"http://emvapi.emv3.com/apimember/services/MemberService?wsdl"
NAMESPACE =
'http://api.service.apimember.emailvision.com/'
SESSION_TIMEOUT =
10*60
VERSION =
File.read( File.join(File.dirname(__FILE__),'..','VERSION') ).strip
JOB_STATUS =
{
  :finished => 'Job_Done_Or_Does_Not_Exist',
  :error => 'Error'
}

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options) ⇒ EmailVision

Returns a new instance of EmailVision.



14
15
16
# File 'lib/email_vision.rb', line 14

def initialize(options)
  self.options = options
end

Instance Attribute Details

#optionsObject

Returns the value of attribute options.



8
9
10
# File 'lib/email_vision.rb', line 8

def options
  @options
end

Instance Method Details

#columnsObject



65
66
67
68
69
70
# File 'lib/email_vision.rb', line 65

def columns
  result = execute(:desc_member_table)
  result = convert_to_hash(result[:fields], :name, :type)
  result.each{|k,v| result[k] = to_ruby_style(v)}
  result
end

#create(attributes) ⇒ Object



38
39
40
# File 'lib/email_vision.rb', line 38

def create(attributes)
  execute_by_obj(:insert_member_by_obj, attributes)
end

#create_or_update(attributes) ⇒ Object



42
43
44
# File 'lib/email_vision.rb', line 42

def create_or_update(attributes)
  execute_by_obj(:insert_or_update_member_by_obj, attributes)
end

#find(email_or_id) ⇒ Object



18
19
20
21
22
23
24
# File 'lib/email_vision.rb', line 18

def find(email_or_id)
  result = execute_by_email_or_id(:get_member, email_or_id)
  result = result.first if result.is_a?(Array) # may return multiple users if they have the same email -> return first
  return unless result.is_a?(Hash)
  result = convert_to_hash(result[:attributes][:entry], :key, :value)
  result.reject{|k,v| v.nil? }
end

#job_status(job_id) ⇒ Object

should be one of: Insert, Processing, Processed, Error, Job_Done_Or_Does_Not_Exist



47
48
49
# File 'lib/email_vision.rb', line 47

def job_status(job_id)
  execute(:get_member_job_status, :synchro_id => job_id)[:status]
end

#rejoin(email_or_id) ⇒ Object



30
31
32
# File 'lib/email_vision.rb', line 30

def rejoin(email_or_id)
  execute_by_email_or_id(:rejoin_member, email_or_id)
end

#unjoin(email_or_id) ⇒ Object



26
27
28
# File 'lib/email_vision.rb', line 26

def unjoin(email_or_id)
  execute_by_email_or_id(:unjoin_member, email_or_id)
end

#update(attributes) ⇒ Object



34
35
36
# File 'lib/email_vision.rb', line 34

def update(attributes)
  execute_by_obj(:update_member_by_obj, attributes)
end

#wait_for_job_to_finish(job_id, options = {}) ⇒ Object



51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/email_vision.rb', line 51

def wait_for_job_to_finish(job_id, options={})
  interval = options[:interval] || 5
  times = options[:times] || 20

  times.times do
    current_status = job_status(job_id)
    raise "Job failed" if current_status == JOB_STATUS[:error]
    return true if current_status == JOB_STATUS[:finished]
    sleep interval
  end

  raise "Job not finished in time! #{current_status}"
end