emailvision 2.1.9 → 2.1.10

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 (2) hide show
  1. data/lib/emailvision/api.rb +54 -19
  2. metadata +2 -2
@@ -43,8 +43,13 @@ module Emailvision
43
43
  # - True if the connection has been destroyed
44
44
  # - False if the connection cannot be destroyed or has already been destroyed
45
45
  def close_connection
46
- return false unless connected?
47
- get.connect.close.call if connected?
46
+ if connected?
47
+ get.connect.close.call
48
+ else
49
+ return false
50
+ end
51
+ rescue Emailvision::Exception => e
52
+ ensure
48
53
  invalidate_token!
49
54
  not connected?
50
55
  end
@@ -95,25 +100,55 @@ module Emailvision
95
100
  # 3. Convert to xml
96
101
  body_xml = Emailvision::Tools.to_xml_as_is body
97
102
 
98
- # == Send request ==
99
- logger.send "#{uri} with query : #{parameters} and body : #{body}"
100
- response = self.class.send http_verb, uri, :query => parameters, :body => body_xml, :timeout => 30
101
-
102
- # == Parse response ==
103
- http_code = response.header.code
104
- content = {}
103
+ # == Send request ==
104
+ retries = 2
105
105
  begin
106
- content = Crack::XML.parse response.body
107
- rescue MultiXml::ParseError => e
108
- logger.send "#{uri} Error when parsing response body (#{e.to_s})"
109
- end
110
- logger.receive content.inspect
106
+ logger.send "#{uri} with query : #{parameters} and body : #{body}"
107
+ response = self.class.send http_verb, uri, :query => parameters, :body => body_xml, :timeout => 30
108
+
109
+ # == Parse response ==
110
+ http_code = response.header.code
111
+ content = {}
112
+ begin
113
+ content = Crack::XML.parse response.body
114
+ rescue MultiXml::ParseError => e
115
+ logger.send "#{uri} Error when parsing response body (#{e.to_s})"
116
+ end
117
+ logger.receive content.inspect
118
+
119
+ # Return response or raise an exception if request failed
120
+ if (http_code == "200") and (content and content["response"])
121
+ response = content["response"]["result"] || content["response"]
122
+ else
123
+ raise Emailvision::Exception.new "#{http_code} - #{content}"
124
+ end
125
+
126
+ return response
111
127
 
112
- # Return response or raise an exception if request failed
113
- if (http_code == "200") and (content and content["response"])
114
- content["response"]["result"] || content["response"]
115
- else
116
- raise Emailvision::Exception.new "#{http_code} - #{content}"
128
+ rescue Emailvision::Exception => e
129
+ if e.message =~ /Your session has expired/
130
+ self.close_connection
131
+ self.open_connection
132
+ if((retries -= 1) >= 0)
133
+ retry
134
+ else
135
+ raise e
136
+ end
137
+ else
138
+ raise e
139
+ end
140
+ rescue Errno::ECONNRESET => e
141
+ if((retries -= 1) >= 0)
142
+ retry
143
+ else
144
+ raise e
145
+ end
146
+ rescue Timeout::Error => e
147
+ if((retries -= 1) >= 0)
148
+ retry
149
+ else
150
+ raise e
151
+ end
117
152
  end
118
153
  end
119
154
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: emailvision
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.9
4
+ version: 2.1.10
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-10-05 00:00:00.000000000 Z
12
+ date: 2012-10-26 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: httparty