responsys 0.0.3 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. data/lib/responsys.rb +24 -5
  2. data/responsys.gemspec +1 -1
  3. metadata +2 -2
data/lib/responsys.rb CHANGED
@@ -2,9 +2,12 @@ require 'metal/defaultDriver.rb'
2
2
  require 'metal/defaultMappingRegistry.rb'
3
3
 
4
4
  class Responsys
5
- TIMEOUT = 10
5
+ TIMEOUT = 180
6
6
  MAX_MEMBERS = 200
7
7
 
8
+ class TooManyMembersError < StandardError
9
+ end
10
+
8
11
  class ResponsysTimeoutError < StandardError
9
12
  end
10
13
 
@@ -12,16 +15,30 @@ class Responsys
12
15
  end
13
16
 
14
17
  attr_reader :session_id
18
+ attr_reader :timeout_threshold
15
19
 
16
20
  # Creates a client object to connect to Responsys via SOAP API
17
21
  #
18
22
  # <username> - The login username
19
23
  # <password> - The login password
20
- def initialize(username, password)
24
+ # <options>
25
+ # timeout_threshold - number of seconds (default 180)
26
+ def initialize(username, password, options)
21
27
  @username = username
22
28
  @password = password
23
29
  @client = ResponsysWS.new
24
30
  @keep_alive = false
31
+
32
+ self.timeout_threshold = options[:timeout_threshold] || TIMEOUT
33
+ end
34
+
35
+ def timeout_threshold=(secs)
36
+ # Sets the timeout on the internal responsys http client.
37
+ @client.options['protocol.http.connect_timeout'] = secs
38
+ @client.options['protocol.http.send_timeout'] = secs
39
+ @client.options['protocol.http.receive_timeout'] = secs
40
+
41
+ @timeout_threshold = secs
25
42
  end
26
43
 
27
44
  def login
@@ -29,7 +46,7 @@ class Responsys
29
46
  login_request = Login.new
30
47
  login_request.username = @username
31
48
  login_request.password = @password
32
- response = @client.login login_request
49
+ response = @client.login(login_request)
33
50
  @session_id = response.result.sessionId
34
51
  assign_session
35
52
  end
@@ -43,7 +60,7 @@ class Responsys
43
60
  def logout
44
61
  begin
45
62
  logout_request = Logout.new
46
- @client.logout logout_request
63
+ @client.logout(logout_request)
47
64
  ensure
48
65
  @session_id = nil
49
66
  end
@@ -61,6 +78,8 @@ class Responsys
61
78
  # options: {}
62
79
  # }
63
80
  def send_email(campaign_name, recipients)
81
+ raise TooManyMembersError if recipients.size > MAX_MEMBERS
82
+
64
83
  trigger_campaign_message = TriggerCampaignMessage.new
65
84
  interact_object = InteractObject.new
66
85
  interact_object.folderName = 'ignored'
@@ -94,7 +113,7 @@ class Responsys
94
113
  end
95
114
 
96
115
  def with_timeout
97
- Timeout::timeout(TIMEOUT, ResponsysTimeoutError) do
116
+ Timeout::timeout(timeout_threshold, ResponsysTimeoutError) do
98
117
  yield
99
118
  end
100
119
  end
data/responsys.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'responsys'
3
- s.version = '0.0.3'
3
+ s.version = '0.0.4'
4
4
  s.platform = Gem::Platform::RUBY
5
5
  s.summary = 'Responsys Interact API client.'
6
6
  s.description = 'A client for interacting with the Responsys API.'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: responsys
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-11-14 00:00:00.000000000 Z
12
+ date: 2012-11-29 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: mumboe-soap4r