emailvision 2.1.9 → 2.1.10

Sign up to get free protection for your applications and to get access to all the features.
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