Class: SmartsApi::EvaluateMessage

Inherits:
Message
  • Object
show all
Defined in:
lib/smarts_api/message/evaluate_message.rb

Instance Method Summary collapse

Methods inherited from Message

#encode_hash, #hex_string_to_ascii, #log, #make_form, #method, #sign_request, #timestamp

Instance Method Details

#request_document(session, obj_hash, decision) ⇒ Object



39
40
41
42
43
# File 'lib/smarts_api/message/evaluate_message.rb', line 39

def request_document(session, obj_hash, decision)
  doc = {:OperationId =>1 , :Header => {:SessionId => session, :DecisionId => decision}, :Body => {:Documents => []}}
  doc[:Body][:Documents] = obj_hash
  return doc.to_json
end

#request_params(session, obj_hash, decision) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/smarts_api/message/evaluate_message.rb', line 26

def request_params(session, obj_hash, decision)
  params = {
      :appId => SmartsApi::Configuration.app_id,
      :reqData => request_document(session, obj_hash, decision),
      :reqTime => timestamp,
      :session => session
  }
  signature = {
      :sign => sign_request(params)
  }
  return params.merge(signature)
end

#send(session, obj_hash, decision) ⇒ Object

Raises:



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/smarts_api/message/evaluate_message.rb', line 3

def send(session, obj_hash, decision)
  body = make_form(request_params(session, obj_hash, decision))
  log "Evaluating"
  response = Typhoeus::Request.post(uri,
                                    :method => method,
                                    :headers => {:Accept => "text/json"},
                                    :body => body
  )
  raise SmartsApi::Error, "Rules Evaluation failed failed.  Recieved empty reply" if response.nil? || response.body.blank?
  reply = JSON.parse(response.body)

  raise SmartsApi::Error, "Rules Evaluation failed failed.  Received malformed response." unless reply["Header"] && ["Body"]

  body = reply["Body"]

  if body.blank?
    log "Rules Engine Evaluation failed. \n\n #{body} \n\n #{response.body}"

    raise SmartsApi::Error, "Rules Evaluation failed.  Returned JSON is blank."
  end
  return body
end

#uriObject



45
46
47
# File 'lib/smarts_api/message/evaluate_message.rb', line 45

def uri
  "#{super}evaluate"
end