smarts_api 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile.lock CHANGED
@@ -2,15 +2,15 @@ PATH
2
2
  remote: .
3
3
  specs:
4
4
  smarts_api (0.0.1)
5
- active_support
5
+ activesupport
6
6
  typhoeus
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
10
10
  specs:
11
- active_support (3.0.0)
12
- activesupport (= 3.0.0)
13
- activesupport (3.0.0)
11
+ activesupport (3.2.14)
12
+ i18n (~> 0.6, >= 0.6.4)
13
+ multi_json (~> 1.0)
14
14
  addressable (2.3.5)
15
15
  crack (0.4.1)
16
16
  safe_yaml (~> 0.9.0)
@@ -19,7 +19,9 @@ GEM
19
19
  ffi (>= 1.3.0)
20
20
  mime-types (~> 1.18)
21
21
  ffi (1.9.0)
22
+ i18n (0.6.5)
22
23
  mime-types (1.25)
24
+ multi_json (1.7.9)
23
25
  rspec (2.14.1)
24
26
  rspec-core (~> 2.14.0)
25
27
  rspec-expectations (~> 2.14.0)
@@ -1,7 +1,7 @@
1
1
  class SmartsApi::ConnectMessage < SmartsApi::Message
2
2
 
3
3
  def send
4
- logger.info "Connecting to #{uri}" if logger.respond_to?(:info)
4
+ log "Connecting to #{uri}"
5
5
  response = Typhoeus::Request.post(uri,
6
6
  :method => method,
7
7
  :headers => {:Accept => "text/json"},
@@ -19,17 +19,17 @@ class SmartsApi::ConnectMessage < SmartsApi::Message
19
19
  end
20
20
 
21
21
  def request_document
22
- {:OperationId =>1 , :Header => {:DeploymentId => project_id}}.to_json
22
+ {:OperationId =>1 , :Header => {:DeploymentId => SmartsApi::Configuration.project_id}}.to_json
23
23
  end
24
24
 
25
25
  def request_params
26
26
  params = {
27
- :appId => app_id,
28
- :pwd => pwd,
27
+ :appId => SmartsApi::Configuration.app_id,
28
+ :pwd => SmartsApi::Configuration.pwd,
29
29
  :reqData => request_document,
30
30
  :reqTime => self.timestamp,
31
- :userId => user_id,
32
- :workspaceId => workspace_id
31
+ :userId => SmartsApi::Configuration.user_id,
32
+ :workspaceId => SmartsApi::Configuration.workspace_id
33
33
  }
34
34
  signature = {
35
35
  :sign => sign_request(params)
@@ -38,7 +38,7 @@ class SmartsApi::ConnectMessage < SmartsApi::Message
38
38
  end
39
39
 
40
40
  def uri
41
- "#{base_uri}connect"
41
+ "#{super}connect"
42
42
  end
43
43
 
44
44
  end
@@ -3,7 +3,7 @@ class SmartsApi::DisconnectMessage < SmartsApi::Message
3
3
 
4
4
  def send(session)
5
5
  body = make_form(request_params(session))
6
- logger.info "Disconnecting" if logger.respond_to?(:info)
6
+ log "Disconnecting"
7
7
  response = Typhoeus::Request.post(uri,
8
8
  :method => method,
9
9
  :headers => {:Accept => "text/json"},
@@ -21,7 +21,7 @@ class SmartsApi::DisconnectMessage < SmartsApi::Message
21
21
 
22
22
  def request_params(session)
23
23
  params = {
24
- :appId => app_id,
24
+ :appId => SmartsApi::Configuration.app_id,
25
25
  :reqTime => timestamp,
26
26
  :session => session
27
27
  }
@@ -32,7 +32,7 @@ class SmartsApi::DisconnectMessage < SmartsApi::Message
32
32
  end
33
33
 
34
34
  def uri
35
- "#{base_uri}disconnect"
35
+ "#{super}disconnect"
36
36
  end
37
37
 
38
38
 
@@ -2,7 +2,7 @@ class SmartsApi::EvaluateMessage < SmartsApi::Message
2
2
 
3
3
  def send(session, member, decision)
4
4
  body = make_form(request_params(session, member, decision))
5
- logger.info "Evaluating" if logger.respond_to?(:info)
5
+ log "Evaluating"
6
6
  response = Typhoeus::Request.post(uri,
7
7
  :method => method,
8
8
  :headers => {:Accept => "text/json"},
@@ -16,19 +16,19 @@ class SmartsApi::EvaluateMessage < SmartsApi::Message
16
16
  body = reply["Body"]
17
17
 
18
18
  if body.blank?
19
- logger.info "Rules Engine Evaluation failed. \n\n #{body} \n\n #{response.body}" if logger.respond_to?(:info)
19
+ log "Rules Engine Evaluation failed. \n\n #{body} \n\n #{response.body}"
20
20
 
21
21
  raise SmartsApi::Error, "Rules Evaluation failed. Returned JSON is blank."
22
22
  end
23
23
 
24
- logger.info "Updating issues" if logger.respond_to?(:info)
24
+ log "Updating issues"
25
25
  member.process_smarts_response body
26
26
  return body
27
27
  end
28
28
 
29
29
  def request_params(session, member, decision)
30
30
  params = {
31
- :appId => app_id,
31
+ :appId => SmartsApi::Configuration.app_id,
32
32
  :reqData => request_document(session, member, decision),
33
33
  :reqTime => timestamp,
34
34
  :session => session
@@ -46,6 +46,6 @@ class SmartsApi::EvaluateMessage < SmartsApi::Message
46
46
  end
47
47
 
48
48
  def uri
49
- "#{base_uri}evaluate"
49
+ "#{super}evaluate"
50
50
  end
51
51
  end
@@ -1,26 +1,22 @@
1
1
  require 'typhoeus'
2
2
  require 'json'
3
- require 'active_support/core_ext/class'
4
3
  require 'active_support/core_ext/array'
5
4
  include ERB::Util
6
5
  require 'openssl'
7
6
  require 'base64'
8
7
 
9
8
  class SmartsApi::Message
10
- attr_reader :logger
11
- cattr_accessor :user_id, :pwd, :app_id, :workspace_id, :access_key, :base_uri, :project_id
12
-
13
-
14
- def initialize(logger=nil)
15
- @logger = logger
16
- end
17
9
 
18
10
  def method
19
11
  :post
20
12
  end
21
13
 
22
14
  def uri
23
- base_uri
15
+ SmartsApi::Configuration.base_uri
16
+ end
17
+
18
+ def log(msg)
19
+ SmartsApi::Configuration.logger.info msg if SmartsApi::Configuration.logger.respond_to?(:info)
24
20
  end
25
21
 
26
22
  def sign_request(params)
@@ -42,7 +38,7 @@ class SmartsApi::Message
42
38
 
43
39
  #5 Digest the encode string with SHA256, using the pre-shared AccessKey as the digest key.
44
40
  digest = OpenSSL::Digest::Digest.new('sha256')
45
- hash = OpenSSL::HMAC.hexdigest(digest, access_key, encoded)
41
+ hash = OpenSSL::HMAC.hexdigest(digest, SmartsApi::Configuration.access_key, encoded)
46
42
 
47
43
  #6 OpenSSL::Digest correctly translates the Hash to a string of bytes. Sparkling Logic's algorithm ...unexpectedle converts the hex value to the corresponding ascii code.
48
44
  #So we need to iterate each pair in our byte string and convert to ascii. this is a little ugly, but necessary
@@ -1,5 +1,5 @@
1
1
  module SmartsApi
2
2
  module Version # :nodoc:
3
- STRING = '0.0.1'
3
+ STRING = '0.0.2'
4
4
  end
5
5
  end
data/lib/smarts_api.rb CHANGED
@@ -1,17 +1,32 @@
1
-
1
+ require 'active_support/core_ext/class'
2
2
  module SmartsApi
3
+ def self.configure(configuration = SmartsApi::Configuration.new)
4
+ yield configuration if block_given?
5
+ @@configuration = configuration
6
+ end
7
+
8
+ def self.configuration
9
+ @@configuration ||= SmartsApi::Configuration.new
10
+ end
11
+
12
+ class Configuration
13
+ cattr_accessor :logger
14
+ cattr_accessor :user_id, :pwd, :app_id, :workspace_id, :access_key, :base_uri, :project_id
15
+ end
16
+
17
+
3
18
  Dir[File.expand_path('../../lib/smarts_api/*.rb', __FILE__)].each {|f| require f}
4
19
  Dir[File.expand_path('../../lib/smarts_api/*/*.rb', __FILE__)].each {|f| require f}
5
20
 
6
21
  def self.evaluate(decision, obj, logger = nil)
7
22
  raise SmartsApi::Error.new("Object to be evaluated must define a method 'smarts_document'") unless obj.respond_to?(:smarts_document)
8
- logger.info "processing request for #{obj}" if logger.respond_to?(:info)
23
+ logger.info "processing request for #{obj.class} id=#{obj.id}{" if logger.respond_to?(:info)
9
24
 
10
- session = SmartsApi::ConnectMessage.new(logger).send
11
- response = SmartsApi::EvaluateMessage.new(logger).
25
+ session = SmartsApi::ConnectMessage.new().send
26
+ response = SmartsApi::EvaluateMessage.new().
12
27
  send(session, obj, decision)
13
28
 
14
- #SmartsApi::DisconnectMessage.new(logger).disconnect(session)
29
+ SmartsApi::DisconnectMessage.new().send(session)
15
30
  end
16
31
 
17
32
  end
Binary file
@@ -2,13 +2,13 @@ require 'spec_helper'
2
2
 
3
3
  describe SmartsApi::ConnectMessage do
4
4
  before (:all) do
5
- SmartsApi::Message.base_uri = "http://smarts.dev.thismashine.com/"
6
- SmartsApi::Message.access_key = "sshhhh...Secret!"
5
+ SmartsApi::Configuration.base_uri = "http://smarts.dev.thismashine.com/"
6
+ SmartsApi::Configuration.access_key = "sshhhh...Secret!"
7
7
  end
8
8
 
9
9
  it 'should return session ID if successful' do
10
10
 
11
- stub_http_request(:post, "#{SmartsApi::Message.base_uri}connect")
11
+ stub_http_request(:post, "#{SmartsApi::Configuration.base_uri}connect")
12
12
  .to_return(:status => 200, :body => "{\"Header\":{\"SessionId\":\"487d2c44-43fe-44d3-988f-ea462af03169\"},\"Body\":null,\"ErrorInfo\":null,\"Metrics\":null,\"Success\":true,\"OperationException\":null}")
13
13
 
14
14
 
@@ -18,7 +18,7 @@ describe SmartsApi::ConnectMessage do
18
18
 
19
19
  it 'should throw an error if the connection returns an error' do
20
20
 
21
- stub_http_request(:post, "#{SmartsApi::Message.base_uri}connect")
21
+ stub_http_request(:post, "#{SmartsApi::Configuration.base_uri}connect")
22
22
  .to_return(:status => 200, :body => "{\"OperationId\":0,\"Header\":{\"SessionId\":\"00000000-0000-0000-0000-000000000000\",\"TransactionTime\":\"2012-06-22T21:02:16.642625Z\",\"Workspace\":null,\"DeploymentId\":null,\"DecisionId\":null},\"Body\":null,\"ErrorInfo\":{\"ErrorCode\":\"ServerException\",\"ErrorMessage\":\"Exception during connection\",\"Details\":[\"Invalid API access\"]},\"Metrics\":null,\"Success\":false,\"OperationException\":{\"IsRestException\":true,\"ErrorType\":\"DocApiAccessDeniedException\",\"CompleteStackTrace\":\"Type: DocApiAccessDeniedException\\r\\nMessage: Invalid API access\\r\\nStack Trace:\\r\\n at Splog.Rest.Base.DocRestHttpHandler.VerifyHmacSignature(String method, IEnumerable`1 keys, String signature, String[] paramaters)\\r\\n at Splog.Rest.Decisions.DocRestDecisionService.Connect(String appId, String reqTime, String userId, String pwd, String workspaceId, String reqData, String sign)\\r\\n\\r\\n\",\"ExtraInfo\":null,\"Message\":\"[DecisionServer] Exception connecting to the decision server for session 72950db0-9639-477b-b824-b82ad5122b56\",\"Data\":{}}}")
23
23
 
24
24
  expect{SmartsApi::ConnectMessage.new().send}.to raise_error(SmartsApi::Error)
@@ -27,7 +27,7 @@ describe SmartsApi::ConnectMessage do
27
27
 
28
28
  it 'should throw an error if the returned sessionID is empty' do
29
29
 
30
- stub_http_request(:post, "#{SmartsApi::Message.base_uri}connect")
30
+ stub_http_request(:post, "#{SmartsApi::Configuration.base_uri}connect")
31
31
  .to_return(:status => 200, :body => "{\"OperationId\":0,\"Header\":{\"SessionId\":\"00000000-0000-0000-0000-000000000000\",\"TransactionTime\":\"2012-06-22T21:02:16.642625Z\",\"Workspace\":null,\"DeploymentId\":null,\"DecisionId\":null},\"Body\":null,\"ErrorInfo\":{\"ErrorCode\":\"ServerException\",\"ErrorMessage\":\"Exception during connection\",\"Details\":[\"Invalid API access\"]},\"Metrics\":null,\"Success\":false,\"OperationException\":{\"IsRestException\":true,\"ErrorType\":\"DocApiAccessDeniedException\",\"CompleteStackTrace\":\"Type: DocApiAccessDeniedException\\r\\nMessage: Invalid API access\\r\\nStack Trace:\\r\\n at Splog.Rest.Base.DocRestHttpHandler.VerifyHmacSignature(String method, IEnumerable`1 keys, String signature, String[] paramaters)\\r\\n at Splog.Rest.Decisions.DocRestDecisionService.Connect(String appId, String reqTime, String userId, String pwd, String workspaceId, String reqData, String sign)\\r\\n\\r\\n\",\"ExtraInfo\":null,\"Message\":\"[DecisionServer] Exception connecting to the decision server for session 72950db0-9639-477b-b824-b82ad5122b56\",\"Data\":{}}}")
32
32
 
33
33
  expect{SmartsApi::ConnectMessage.new().send}.to raise_error(SmartsApi::Error)
@@ -36,7 +36,7 @@ describe SmartsApi::ConnectMessage do
36
36
 
37
37
  it 'should throw an error if no body is returned' do
38
38
 
39
- stub_http_request(:post, "#{SmartsApi::Message.base_uri}connect")
39
+ stub_http_request(:post, "#{SmartsApi::Configuration.base_uri}connect")
40
40
  .to_return(:status => 200)
41
41
  expect{SmartsApi::ConnectMessage.new().send}.to raise_error(SmartsApi::Error)
42
42
 
@@ -44,7 +44,7 @@ describe SmartsApi::ConnectMessage do
44
44
 
45
45
  it 'should throw an error if status code is bad' do
46
46
 
47
- stub_http_request(:post, "#{SmartsApi::Message.base_uri}connect")
47
+ stub_http_request(:post, "#{SmartsApi::Configuration.base_uri}connect")
48
48
  .to_return(:status => 500)
49
49
  expect{SmartsApi::ConnectMessage.new().send}.to raise_error(SmartsApi::Error)
50
50
 
@@ -4,7 +4,7 @@ require 'spec_helper'
4
4
  describe SmartsApi::DisconnectMessage do
5
5
  it 'should return session ID if successful' do
6
6
 
7
- stub_http_request(:post, "#{SmartsApi::Message.base_uri}disconnect")
7
+ stub_http_request(:post, "#{SmartsApi::Configuration.base_uri}disconnect")
8
8
  .to_return(:status => 200, :body => "{\"Header\":{\"SessionId\":\"487d2c44-43fe-44d3-988f-ea462af03169\"},\"Body\":null,\"ErrorInfo\":null,\"Metrics\":null,\"Success\":true,\"OperationException\":null}")
9
9
 
10
10
 
@@ -14,7 +14,7 @@ describe SmartsApi::DisconnectMessage do
14
14
 
15
15
  it 'should throw an error if the connection returns an error' do
16
16
 
17
- stub_http_request(:post, "#{SmartsApi::Message.base_uri}disconnect")
17
+ stub_http_request(:post, "#{SmartsApi::Configuration.base_uri}disconnect")
18
18
  .to_return(:status => 200, :body => "{\"OperationId\":0,\"Header\":{\"SessionId\":\"00000000-0000-0000-0000-000000000000\",\"TransactionTime\":\"2012-06-22T21:02:16.642625Z\",\"Workspace\":null,\"DeploymentId\":null,\"DecisionId\":null},\"Body\":null,\"ErrorInfo\":{\"ErrorCode\":\"ServerException\",\"ErrorMessage\":\"Exception during connection\",\"Details\":[\"Invalid API access\"]},\"Metrics\":null,\"Success\":false,\"OperationException\":{\"IsRestException\":true,\"ErrorType\":\"DocApiAccessDeniedException\",\"CompleteStackTrace\":\"Type: DocApiAccessDeniedException\\r\\nMessage: Invalid API access\\r\\nStack Trace:\\r\\n at Splog.Rest.Base.DocRestHttpHandler.VerifyHmacSignature(String method, IEnumerable`1 keys, String signature, String[] paramaters)\\r\\n at Splog.Rest.Decisions.DocRestDecisionService.Connect(String appId, String reqTime, String userId, String pwd, String workspaceId, String reqData, String sign)\\r\\n\\r\\n\",\"ExtraInfo\":null,\"Message\":\"[DecisionServer] Exception connecting to the decision server for session 72950db0-9639-477b-b824-b82ad5122b56\",\"Data\":{}}}")
19
19
 
20
20
  expect{SmartsApi::DisconnectMessage.new().send("487d2c44-43fe-44d3-988f-ea462af03169")}.to raise_error(SmartsApi::Error)
@@ -23,7 +23,7 @@ describe SmartsApi::DisconnectMessage do
23
23
 
24
24
  it 'should throw an error if the returned sessionID is empty returns an error' do
25
25
 
26
- stub_http_request(:post, "#{SmartsApi::Message.base_uri}disconnect")
26
+ stub_http_request(:post, "#{SmartsApi::Configuration.base_uri}disconnect")
27
27
  .to_return(:status => 200, :body => "{\"OperationId\":0,\"Header\":{\"SessionId\":\"00000000-0000-0000-0000-000000000000\",\"TransactionTime\":\"2012-06-22T21:02:16.642625Z\",\"Workspace\":null,\"DeploymentId\":null,\"DecisionId\":null},\"Body\":null,\"ErrorInfo\":{\"ErrorCode\":\"ServerException\",\"ErrorMessage\":\"Exception during connection\",\"Details\":[\"Invalid API access\"]},\"Metrics\":null,\"Success\":false,\"OperationException\":{\"IsRestException\":true,\"ErrorType\":\"DocApiAccessDeniedException\",\"CompleteStackTrace\":\"Type: DocApiAccessDeniedException\\r\\nMessage: Invalid API access\\r\\nStack Trace:\\r\\n at Splog.Rest.Base.DocRestHttpHandler.VerifyHmacSignature(String method, IEnumerable`1 keys, String signature, String[] paramaters)\\r\\n at Splog.Rest.Decisions.DocRestDecisionService.Connect(String appId, String reqTime, String userId, String pwd, String workspaceId, String reqData, String sign)\\r\\n\\r\\n\",\"ExtraInfo\":null,\"Message\":\"[DecisionServer] Exception connecting to the decision server for session 72950db0-9639-477b-b824-b82ad5122b56\",\"Data\":{}}}")
28
28
 
29
29
  expect{SmartsApi::DisconnectMessage.new().send("487d2c44-43fe-44d3-988f-ea462af03169")}.to raise_error(SmartsApi::Error)
@@ -32,14 +32,14 @@ describe SmartsApi::DisconnectMessage do
32
32
 
33
33
  it 'should throw an error if no body is returned' do
34
34
 
35
- stub_http_request(:post, "#{SmartsApi::Message.base_uri}disconnect")
35
+ stub_http_request(:post, "#{SmartsApi::Configuration.base_uri}disconnect")
36
36
  .to_return(:status => 200)
37
37
  expect{SmartsApi::DisconnectMessage.new().send("487d2c44-43fe-44d3-988f-ea462af03169")}.to raise_error(SmartsApi::Error)
38
38
 
39
39
  end
40
40
 
41
41
  it 'should throw an error if status code is bad' do
42
- stub_http_request(:post, "#{SmartsApi::Message.base_uri}disconnect")
42
+ stub_http_request(:post, "#{SmartsApi::Configuration.base_uri}disconnect")
43
43
  .to_return(:status => 500)
44
44
  expect{SmartsApi::DisconnectMessage.new().send("487d2c44-43fe-44d3-988f-ea462af03169")}.to raise_error(SmartsApi::Error)
45
45
 
@@ -3,8 +3,8 @@ require 'spec_helper'
3
3
  describe SmartsApi::EvaluateMessage do
4
4
 
5
5
  before (:all) do
6
- SmartsApi::Message.base_uri = "http://smarts.dev.thismashine.com/"
7
- SmartsApi::Message.access_key = "sshhhh...Secret!"
6
+ SmartsApi::Configuration.base_uri = "http://smarts.dev.thismashine.com/"
7
+ SmartsApi::Configuration.access_key = "sshhhh...Secret!"
8
8
  end
9
9
 
10
10
  let(:eval_class) {
@@ -28,14 +28,14 @@ describe SmartsApi::EvaluateMessage do
28
28
 
29
29
  body = "{\"OperationId\":1,\"Header\":{\"SessionId\":\"e3e2b012-e9b6-45e7-a96a-a009ebf0a07a\"},\"Body\":{\"Documents\":[{\"identification\":{\"actor_group\":\"root\",\"actor_id\":3,\"gender\":\"Male\",\"birth_date\":\"1984-12-08T06:00:00Z\"},\"historical_properties\":[{\"weight\":\"150\"}]}]},\"ErrorInfo\":null,\"Metrics\":null,\"Success\":true,\"OperationException\":null}"
30
30
 
31
- stub_http_request(:post, "#{SmartsApi::Message.base_uri}evaluate")
31
+ stub_http_request(:post, "#{SmartsApi::Configuration.base_uri}evaluate")
32
32
  .to_return(:status => 200, :body => body)
33
33
  SmartsApi::EvaluateMessage.new().send("487d2c44-43fe-44d3-988f-ea462af03169", eval_object, "Issues Analysis Decision").should == JSON.parse(body)["Body"]
34
34
 
35
35
  end
36
36
 
37
37
  it 'should throw an error if the connection returns an error' do
38
- stub_http_request(:post, "#{SmartsApi::Message.base_uri}evaluate")
38
+ stub_http_request(:post, "#{SmartsApi::Configuration.base_uri}evaluate")
39
39
  .to_return(:status => 200, :body => "{\"OperationId\":0,\"Header\":{\"SessionId\":\"00000000-0000-0000-0000-000000000000\",\"TransactionTime\":\"2012-06-22T21:02:16.642625Z\",\"Workspace\":null,\"DeploymentId\":null,\"DecisionId\":null},\"Body\":null,\"ErrorInfo\":{\"ErrorCode\":\"ServerException\",\"ErrorMessage\":\"Exception during connection\",\"Details\":[\"Invalid API access\"]},\"Metrics\":null,\"Success\":false,\"OperationException\":{\"IsRestException\":true,\"ErrorType\":\"DocApiAccessDeniedException\",\"CompleteStackTrace\":\"Type: DocApiAccessDeniedException\\r\\nMessage: Invalid API access\\r\\nStack Trace:\\r\\n at Splog.Rest.Base.DocRestHttpHandler.VerifyHmacSignature(String method, IEnumerable`1 keys, String signature, String[] paramaters)\\r\\n at Splog.Rest.Decisions.DocRestDecisionService.Connect(String appId, String reqTime, String userId, String pwd, String workspaceId, String reqData, String sign)\\r\\n\\r\\n\",\"ExtraInfo\":null,\"Message\":\"[DecisionServer] Exception connecting to the decision server for session 72950db0-9639-477b-b824-b82ad5122b56\",\"Data\":{}}}")
40
40
  expect{SmartsApi::EvaluateMessage.new().send("487d2c44-43fe-44d3-988f-ea462af03169",eval_object, "Issues Analysis Decision")}.to raise_error(SmartsApi::Error)
41
41
 
@@ -43,7 +43,7 @@ describe SmartsApi::EvaluateMessage do
43
43
 
44
44
  it 'should throw an error if the returned sessionID is empty returns an error' do
45
45
 
46
- stub_http_request(:post, "#{SmartsApi::Message.base_uri}evaluate")
46
+ stub_http_request(:post, "#{SmartsApi::Configuration.base_uri}evaluate")
47
47
  .to_return(:status => 200, :body => "{\"OperationId\":0,\"Header\":{\"SessionId\":\"00000000-0000-0000-0000-000000000000\",\"TransactionTime\":\"2012-06-22T21:02:16.642625Z\",\"Workspace\":null,\"DeploymentId\":null,\"DecisionId\":null},\"Body\":null,\"ErrorInfo\":{\"ErrorCode\":\"ServerException\",\"ErrorMessage\":\"Exception during connection\",\"Details\":[\"Invalid API access\"]},\"Metrics\":null,\"Success\":false,\"OperationException\":{\"IsRestException\":true,\"ErrorType\":\"DocApiAccessDeniedException\",\"CompleteStackTrace\":\"Type: DocApiAccessDeniedException\\r\\nMessage: Invalid API access\\r\\nStack Trace:\\r\\n at Splog.Rest.Base.DocRestHttpHandler.VerifyHmacSignature(String method, IEnumerable`1 keys, String signature, String[] paramaters)\\r\\n at Splog.Rest.Decisions.DocRestDecisionService.Connect(String appId, String reqTime, String userId, String pwd, String workspaceId, String reqData, String sign)\\r\\n\\r\\n\",\"ExtraInfo\":null,\"Message\":\"[DecisionServer] Exception connecting to the decision server for session 72950db0-9639-477b-b824-b82ad5122b56\",\"Data\":{}}}")
48
48
  expect{SmartsApi::EvaluateMessage.new().send("487d2c44-43fe-44d3-988f-ea462af03169",eval_object, "Issues Analysis Decision")}.to raise_error(SmartsApi::Error)
49
49
 
@@ -51,7 +51,7 @@ describe SmartsApi::EvaluateMessage do
51
51
 
52
52
  it 'should throw an error if no body is returned' do
53
53
 
54
- stub_http_request(:post, "#{SmartsApi::Message.base_uri}evaluate")
54
+ stub_http_request(:post, "#{SmartsApi::Configuration.base_uri}evaluate")
55
55
  .to_return(:status => 200)
56
56
  expect{SmartsApi::EvaluateMessage.new().send("487d2c44-43fe-44d3-988f-ea462af03169",eval_object, "Issues Analysis Decision")}.to raise_error(SmartsApi::Error)
57
57
 
@@ -59,7 +59,7 @@ describe SmartsApi::EvaluateMessage do
59
59
 
60
60
  it 'should throw an error if status code is bad' do
61
61
 
62
- stub_http_request(:post, "#{SmartsApi::Message.base_uri}evaluate")
62
+ stub_http_request(:post, "#{SmartsApi::Configuration.base_uri}evaluate")
63
63
  .to_return(:status => 500)
64
64
  expect{SmartsApi::EvaluateMessage.new().send("487d2c44-43fe-44d3-988f-ea462af03169",eval_object, "Issues Analysis Decision")}.to raise_error(SmartsApi::Error)
65
65
 
@@ -69,7 +69,7 @@ describe SmartsApi::EvaluateMessage do
69
69
  eval_object.should_receive(:smarts_document)
70
70
  body = "{\"OperationId\":1,\"Header\":{\"SessionId\":\"e3e2b012-e9b6-45e7-a96a-a009ebf0a07a\"},\"Body\":{\"Documents\":[{\"identification\":{\"actor_group\":\"root\",\"actor_id\":3,\"gender\":\"Male\",\"birth_date\":\"1984-12-08T06:00:00Z\"},\"historical_properties\":[{\"weight\":\"150\"}]}]},\"ErrorInfo\":null,\"Metrics\":null,\"Success\":true,\"OperationException\":null}"
71
71
 
72
- stub_http_request(:post, "#{SmartsApi::Message.base_uri}evaluate")
72
+ stub_http_request(:post, "#{SmartsApi::Configuration.base_uri}evaluate")
73
73
  .to_return(:status => 200, :body => body)
74
74
  SmartsApi::EvaluateMessage.new().send("487d2c44-43fe-44d3-988f-ea462af03169", eval_object, "Issues Analysis Decision").should == JSON.parse(body)["Body"]
75
75
  end
@@ -78,7 +78,7 @@ describe SmartsApi::EvaluateMessage do
78
78
 
79
79
  body = "{\"OperationId\":1,\"Header\":{\"SessionId\":\"e3e2b012-e9b6-45e7-a96a-a009ebf0a07a\"},\"Body\":{\"Documents\":[{\"identification\":{\"actor_group\":\"root\",\"actor_id\":3,\"gender\":\"Male\",\"birth_date\":\"1984-12-08T06:00:00Z\"},\"historical_properties\":[{\"weight\":\"150\"}]}]},\"ErrorInfo\":null,\"Metrics\":null,\"Success\":true,\"OperationException\":null}"
80
80
  eval_object.should_receive(:process_smarts_response).with(JSON.parse(body)["Body"])
81
- stub_http_request(:post, "#{SmartsApi::Message.base_uri}evaluate")
81
+ stub_http_request(:post, "#{SmartsApi::Configuration.base_uri}evaluate")
82
82
  .to_return(:status => 200, :body => body)
83
83
  SmartsApi::EvaluateMessage.new().send("487d2c44-43fe-44d3-988f-ea462af03169", eval_object, "Issues Analysis Decision").should == JSON.parse(body)["Body"]
84
84
  end
@@ -3,16 +3,19 @@ require 'spec_helper'
3
3
  describe SmartsApi::Message do
4
4
 
5
5
  before (:all) do
6
- SmartsApi::Message.base_uri = "http://www.versign.com/request/doSomething.aspc"
7
- SmartsApi::Message.access_key = "secretKey"
6
+ SmartsApi::Configuration.base_uri = "http://www.versign.com/request/doSomething.aspc"
7
+ SmartsApi::Configuration.access_key = "secretKey"
8
8
  end
9
9
 
10
10
  describe 'initializer' do
11
11
  it "should keep the logger for logging purposes" do
12
12
  logger = Logger.new(STDOUT)
13
- message = SmartsApi::Message.new(logger)
13
+ SmartsApi::Configuration.logger = logger
14
+ message = SmartsApi::Message.new()
14
15
 
15
- message.logger.should == logger
16
+ logger.should_receive(:info).with("Test is a pass!")
17
+
18
+ message.log "Test is a pass!"
16
19
 
17
20
  end
18
21
  end
@@ -5,8 +5,8 @@ describe SmartsApi do
5
5
  describe "evaluate" do
6
6
 
7
7
  before (:all) do
8
- SmartsApi::Message.base_uri = "http://smarts.dev.thismashine.com/"
9
- SmartsApi::Message.access_key = "sshhhh...Secret!"
8
+ SmartsApi::Configuration.base_uri = "http://smarts.dev.thismashine.com/"
9
+ SmartsApi::Configuration.access_key = "sshhhh...Secret!"
10
10
  end
11
11
 
12
12
  describe "expectations on eval object" do
@@ -38,6 +38,7 @@ describe SmartsApi do
38
38
 
39
39
  SmartsApi::ConnectMessage.any_instance.should_receive(:send).and_return("session 334")
40
40
  SmartsApi::EvaluateMessage.any_instance.should_receive(:send)
41
+ SmartsApi::DisconnectMessage.any_instance.should_receive(:send).with("session 334")
41
42
  SmartsApi.evaluate("string", instance)
42
43
  end
43
44
  end
@@ -49,6 +50,8 @@ describe SmartsApi do
49
50
  instance.should_not be_nil
50
51
  SmartsApi::ConnectMessage.any_instance.should_receive(:send).and_return("session 3339")
51
52
  SmartsApi::EvaluateMessage.any_instance.should_receive(:send).with("session 3339", instance, "Chosen_decision")
53
+ SmartsApi::DisconnectMessage.any_instance.should_receive(:send).with("session 3339")
54
+
52
55
  SmartsApi.evaluate("Chosen_decision", instance)
53
56
  end
54
57
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: smarts_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -91,7 +91,7 @@ dependencies:
91
91
  - - ! '>='
92
92
  - !ruby/object:Gem::Version
93
93
  version: '0'
94
- description: smarts_api-0.0.1
94
+ description: smarts_api-0.0.2
95
95
  email:
96
96
  - theSteveMitchell@gmail.com
97
97
  executables: []
@@ -111,6 +111,7 @@ files:
111
111
  - lib/smarts_api/message/disconnect_message.rb
112
112
  - lib/smarts_api/message/evaluate_message.rb
113
113
  - lib/smarts_api/version.rb
114
+ - smarts_api-0.0.1.gem
114
115
  - smarts_api.gemspec
115
116
  - spec/smarts_api/message/connect_message_spec.rb
116
117
  - spec/smarts_api/message/disconnect_message_spec.rb