otrs_connector 1.0.4 → 1.1.0

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.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.4
1
+ 1.1.0
@@ -50,14 +50,15 @@ class OTRS
50
50
  end
51
51
 
52
52
  # Handles communication with OTRS
53
- def self.connect(params)
53
+
54
+ def self.setup_connection_params(params)
54
55
  if self.api_url =~ /^https/
55
56
  require 'net/https'
56
57
  else
57
58
  require 'net/http'
58
59
  end
59
- base_url = self.api_url
60
60
 
61
+ base_url = self.api_url
61
62
  # Build request URL
62
63
  logon = URI.encode("User=#{self.user}&Password=#{self.password}")
63
64
  object = URI.encode(params[:object])
@@ -66,23 +67,42 @@ class OTRS
66
67
  data = URI.encode(data)
67
68
  # Had some issues with certain characters not being escaped properly and causing JSON issues
68
69
  data = URI.escape(data, '=\',\\/+-&?#.;')
69
- uri = URI.parse("#{base_url}?#{logon}&Object=#{object}&Method=#{method}&Data=#{data}")
70
-
71
- # Connect to OTRS
70
+ URI.parse("#{base_url}?#{logon}&Object=#{object}&Method=#{method}&Data=#{data}")
71
+ end
72
+
73
+ def self.get_from_remote(uri, read_timeout=60)
72
74
  http = Net::HTTP.new(uri.host, uri.port)
75
+ http.read_timeout = read_timeout
73
76
  if self.api_url =~ /^https/
74
77
  http.use_ssl = true
75
78
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE
76
79
  end
77
80
  request = Net::HTTP::Get.new(uri.request_uri)
78
81
  response = http.request(request)
82
+ end
83
+
84
+ def self.process_response(response)
79
85
  result = ActiveSupport::JSON::decode(response.body)
80
86
  if result["Result"] == 'successful'
81
- result["Data"]
87
+ return result["Data"]
82
88
  else
83
89
  raise "Error:#{result["Result"]} #{result["Data"]}"
84
90
  end
85
91
  end
92
+
93
+
94
+ def self.connect(params)
95
+ uri = self.setup_connection_params(params)
96
+
97
+ # Connect to OTRS
98
+ begin
99
+ response = self.get_from_remote(uri)
100
+ rescue Timeout::Error
101
+ response = self.get_from_remote(uri,120)
102
+ return self.process_response(response)
103
+ end
104
+ return self.process_response(response)
105
+ end
86
106
 
87
107
  # Base method for processing objects returned by OTRS into Ruby objects
88
108
  # This works in most cases, but not all, namely with OTRS::ConfigItem due to extra attributes
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "otrs_connector"
8
- s.version = "1.0.4"
8
+ s.version = "1.1.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Brian Goff"]
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: otrs_connector
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 1.0.4
5
+ version: 1.1.0
6
6
  platform: ruby
7
7
  authors:
8
8
  - Brian Goff
@@ -126,7 +126,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
126
126
  requirements:
127
127
  - - ">="
128
128
  - !ruby/object:Gem::Version
129
- hash: 3834846862885105818
129
+ hash: -2300522192988681376
130
130
  segments:
131
131
  - 0
132
132
  version: "0"