handsoap 1.1.4 → 1.1.5
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.yml
CHANGED
@@ -19,12 +19,18 @@ module Handsoap
|
|
19
19
|
if @curl
|
20
20
|
@curl.url = url
|
21
21
|
else
|
22
|
-
@curl
|
23
|
-
@curl.timeout
|
24
|
-
@curl.enable_cookies
|
22
|
+
@curl = ::Curl::Easy.new(url)
|
23
|
+
@curl.timeout = Handsoap.timeout
|
24
|
+
@curl.enable_cookies = @enable_cookies
|
25
|
+
|
26
|
+
if Handsoap.follow_redirects?
|
27
|
+
@curl.follow_location = true
|
28
|
+
@curl.max_redirects = Handsoap.max_redirects
|
29
|
+
end
|
25
30
|
end
|
26
31
|
@curl
|
27
32
|
end
|
33
|
+
|
28
34
|
private :get_curl
|
29
35
|
|
30
36
|
def send_http_request(request)
|
@@ -16,6 +16,8 @@ module Handsoap
|
|
16
16
|
domain = request.url.match(/^(http(s?):\/\/[^\/]+\/)/)[1]
|
17
17
|
http_client.set_auth(domain, request.username, request.password)
|
18
18
|
end
|
19
|
+
http_client.ssl_config.set_trust_ca(request.trust_ca_file) if request.trust_ca_file
|
20
|
+
http_client.ssl_config.set_client_cert_file(request.client_cert_file,request.client_cert_key_file) if request.client_cert_file and request.client_cert_key_file
|
19
21
|
# pack headers
|
20
22
|
headers = request.headers.inject([]) do |arr, (k,v)|
|
21
23
|
arr + v.map {|x| [k,x] }
|
@@ -5,7 +5,7 @@ module Handsoap
|
|
5
5
|
|
6
6
|
# Represents a HTTP Request.
|
7
7
|
class Request
|
8
|
-
attr_reader :url, :http_method, :headers, :body, :username, :password
|
8
|
+
attr_reader :url, :http_method, :headers, :body, :username, :password, :trust_ca_file, :client_cert_file, :client_cert_key_file
|
9
9
|
attr_writer :body, :http_method
|
10
10
|
def initialize(url, http_method = :get)
|
11
11
|
@url = url
|
@@ -14,6 +14,16 @@ module Handsoap
|
|
14
14
|
@body = nil
|
15
15
|
@username = nil
|
16
16
|
@password = nil
|
17
|
+
@trust_ca_file = nil
|
18
|
+
@client_cert_file = nil
|
19
|
+
@client_cert_key_file = nil
|
20
|
+
end
|
21
|
+
def set_trust_ca_file(ca_file)
|
22
|
+
@trust_ca_file = ca_file
|
23
|
+
end
|
24
|
+
def set_client_cert_files(client_cert_file,client_cert_key_file)
|
25
|
+
@client_cert_file = client_cert_file
|
26
|
+
@client_cert_key_file = client_cert_key_file
|
17
27
|
end
|
18
28
|
def set_auth(username, password)
|
19
29
|
@username = username
|
data/lib/handsoap/service.rb
CHANGED
@@ -35,6 +35,27 @@ module Handsoap
|
|
35
35
|
def self.timeout
|
36
36
|
@timeout || (self.timeout = 60)
|
37
37
|
end
|
38
|
+
|
39
|
+
# Tell Handsoap to follow redirects
|
40
|
+
def self.follow_redirects!
|
41
|
+
@follow_redirects = true
|
42
|
+
end
|
43
|
+
|
44
|
+
# Check whether Handsoap should follow redirects
|
45
|
+
def self.follow_redirects?
|
46
|
+
@follow_redirects || false
|
47
|
+
end
|
48
|
+
|
49
|
+
# Sets the max number of redirects
|
50
|
+
def self.max_redirects=(max_redirects)
|
51
|
+
@max_redirects = max_redirects
|
52
|
+
end
|
53
|
+
|
54
|
+
# Fetches the max number of redirects
|
55
|
+
# The default is 1
|
56
|
+
def self.max_redirects
|
57
|
+
@max_redirects || (self.max_redirects = 1)
|
58
|
+
end
|
38
59
|
|
39
60
|
# Wraps SOAP errors in a standard class.
|
40
61
|
class Fault < StandardError
|
@@ -203,7 +224,11 @@ module Handsoap
|
|
203
224
|
elsif options[:soap_action] == :none
|
204
225
|
options[:soap_action] = nil
|
205
226
|
end
|
206
|
-
doc = make_envelope do |body|
|
227
|
+
doc = make_envelope do |body,header|
|
228
|
+
options[:soap_header].each_pair do |k,v|
|
229
|
+
header.add k,v
|
230
|
+
end
|
231
|
+
|
207
232
|
body.add action
|
208
233
|
end
|
209
234
|
if block_given?
|
@@ -215,7 +240,7 @@ module Handsoap
|
|
215
240
|
}
|
216
241
|
headers["SOAPAction"] = options[:soap_action] unless options[:soap_action].nil?
|
217
242
|
on_before_dispatch
|
218
|
-
request = make_http_request(self.uri, doc.to_s, headers)
|
243
|
+
request = make_http_request(self.uri, doc.to_s, headers,options[:http_options])
|
219
244
|
response = http_driver_instance.send_http_request(request)
|
220
245
|
parse_http_response(response)
|
221
246
|
end
|
@@ -347,8 +372,13 @@ module Handsoap
|
|
347
372
|
end
|
348
373
|
end
|
349
374
|
|
350
|
-
def make_http_request(uri, post_body, headers)
|
375
|
+
def make_http_request(uri, post_body, headers,http_options=nil)
|
351
376
|
request = Handsoap::Http::Request.new(uri, :post)
|
377
|
+
|
378
|
+
# SSL CA AND CLIENT CERTIFICATES
|
379
|
+
request.set_trust_ca_file(http_options[:trust_ca_file])
|
380
|
+
request.set_client_cert_files(http_options[:client_cert_file],http_options[:client_cert_key_file])
|
381
|
+
|
352
382
|
headers.each do |key, value|
|
353
383
|
request.add_header(key, value)
|
354
384
|
end
|
@@ -399,7 +429,7 @@ module Handsoap
|
|
399
429
|
self.class.fire_on_create_document doc # deprecated .. use instance method
|
400
430
|
on_create_document(doc)
|
401
431
|
if block_given?
|
402
|
-
yield doc.find("Body")
|
432
|
+
yield doc.find("Body"),doc.find("Header")
|
403
433
|
end
|
404
434
|
return doc
|
405
435
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: handsoap
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Troels Knak-Nielsen
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date:
|
13
|
+
date: 2010-01-12 00:00:00 +01:00
|
14
14
|
default_executable:
|
15
15
|
dependencies: []
|
16
16
|
|