handsoap 1.1.0 → 1.1.1

Sign up to get free protection for your applications and to get access to all the features.
data/DEPLOY.markdown ADDED
@@ -0,0 +1,10 @@
1
+ This is mostly a not to my self, so I don't forget it.
2
+
3
+ To make a release, do:
4
+
5
+ rake version:bump:patch
6
+ rake release
7
+ rake build
8
+ gem push pkg/handsoap-*.gem
9
+
10
+ You need `jeweleer` and `gemcutter`, as well as login credentials for gemcutter.
data/README.markdown CHANGED
@@ -4,8 +4,8 @@ Handsoap
4
4
  Install
5
5
  ---
6
6
 
7
- gem sources -a http://gems.github.com
8
- sudo gem install unwire-handsoap curb nokogiri
7
+ gem sources -a http://gemcutter.org
8
+ sudo gem install handsoap curb nokogiri
9
9
 
10
10
  What
11
11
  ---
data/VERSION.yml CHANGED
@@ -1,4 +1,4 @@
1
1
  ---
2
- :patch: 0
2
+ :patch: 1
3
3
  :major: 1
4
4
  :minor: 1
@@ -5,12 +5,29 @@ module Handsoap
5
5
  module Http
6
6
  module Drivers
7
7
  class CurbDriver < AbstractDriver
8
+ attr_accessor :enable_cookies
9
+
10
+ def initialize
11
+ @enable_cookies = false
12
+ end
13
+
8
14
  def self.load!
9
15
  require 'curb'
10
16
  end
11
17
 
18
+ def get_curl(url)
19
+ if @curl
20
+ @curl.url = url
21
+ else
22
+ @curl = ::Curl::Easy.new(url)
23
+ @curl.enable_cookies = @enable_cookies
24
+ end
25
+ @curl
26
+ end
27
+ private :get_curl
28
+
12
29
  def send_http_request(request)
13
- http_client = Curl::Easy.new(request.url)
30
+ http_client = get_curl(request.url)
14
31
  # Set credentials. The driver will negotiate the actual scheme
15
32
  if request.username && request.password
16
33
  http_client.userpwd = [request.username, ":", request.password].join
@@ -29,6 +29,7 @@ module Handsoap
29
29
  raise "Unsupported request method #{request.http_method}"
30
30
  end
31
31
  http_client = Net::HTTP.new(url.host, url.port)
32
+ http_client.use_ssl = true if url.scheme == 'https'
32
33
  http_client.read_timeout = 120
33
34
  if request.username && request.password
34
35
  # TODO: http://codesnippets.joyent.com/posts/show/1075
@@ -144,6 +144,9 @@ module Handsoap
144
144
  def uri
145
145
  self.class.uri
146
146
  end
147
+ def http_driver_instance
148
+ Handsoap::Http.drivers[Handsoap.http_driver].new
149
+ end
147
150
  # Creates an XML document and sends it over HTTP.
148
151
  #
149
152
  # +action+ is the QName of the rootnode of the envelope.
@@ -178,8 +181,7 @@ module Handsoap
178
181
  headers["SOAPAction"] = options[:soap_action] unless options[:soap_action].nil?
179
182
  on_before_dispatch
180
183
  request = make_http_request(self.uri, doc.to_s, headers)
181
- driver = Handsoap::Http.drivers[Handsoap.http_driver].new
182
- response = driver.send_http_request(request)
184
+ response = http_driver_instance.send_http_request(request)
183
185
  parse_http_response(response)
184
186
  end
185
187
  end
@@ -223,7 +225,7 @@ module Handsoap
223
225
  headers["SOAPAction"] = options[:soap_action] unless options[:soap_action].nil?
224
226
  on_before_dispatch
225
227
  request = make_http_request(self.uri, doc.to_s, headers)
226
- driver = Handsoap::Http.drivers[Handsoap.http_driver].new
228
+ driver = self.http_driver_instance
227
229
  if driver.respond_to? :send_http_request_async
228
230
  deferred = driver.send_http_request_async(request)
229
231
  else
@@ -182,6 +182,10 @@ module Handsoap
182
182
  def xpath(expression, ns = nil)
183
183
  raise NotImplementedError.new
184
184
  end
185
+ # Returns a +NodeSelection+
186
+ def children
187
+ raise NotImplementedError.new
188
+ end
185
189
  # Returns the outer XML for this element.
186
190
  def to_xml
187
191
  raise NotImplementedError.new
@@ -218,6 +222,9 @@ module Handsoap
218
222
  assert_prefixes!(expression, ns)
219
223
  NodeSelection.new(@element.find(expression, ns.map{|k,v| "#{k}:#{v}" }).to_a.map{|node| LibXMLDriver.new(node, ns) })
220
224
  end
225
+ def children
226
+ NodeSelection.new(@element.children.map{|node| LibXMLDriver.new(node) })
227
+ end
221
228
  def [](attribute_name)
222
229
  raise ArgumentError.new unless attribute_name.kind_of? String
223
230
  @element[attribute_name]
@@ -243,7 +250,11 @@ module Handsoap
243
250
  class REXMLDriver
244
251
  include XmlElement
245
252
  def node_name
246
- @element.name
253
+ if @element.respond_to? :name
254
+ @element.name
255
+ else
256
+ @element.class.name.gsub(/.*::([^:]+)$/, "\\1").downcase
257
+ end
247
258
  end
248
259
  def xpath(expression, ns = nil)
249
260
  ns = {} if ns.nil?
@@ -251,6 +262,9 @@ module Handsoap
251
262
  assert_prefixes!(expression, ns)
252
263
  NodeSelection.new(REXML::XPath.match(@element, expression, ns).map{|node| REXMLDriver.new(node, ns) })
253
264
  end
265
+ def children
266
+ NodeSelection.new(@element.children.map{|node| REXMLDriver.new(node) })
267
+ end
254
268
  def [](attribute_name)
255
269
  raise ArgumentError.new unless attribute_name.kind_of? String
256
270
  @element.attributes[attribute_name]
@@ -267,10 +281,10 @@ module Handsoap
267
281
  @element.to_s
268
282
  end
269
283
  def to_s
270
- if @element.kind_of? REXML::Attribute
271
- @element.value
272
- else
284
+ if @element.respond_to? :text
273
285
  @element.text
286
+ else
287
+ @element.value
274
288
  end
275
289
  end
276
290
  end
@@ -289,6 +303,9 @@ module Handsoap
289
303
  assert_prefixes!(expression, ns)
290
304
  NodeSelection.new(@element.xpath(expression, ns).map{|node| NokogiriDriver.new(node, ns) })
291
305
  end
306
+ def children
307
+ NodeSelection.new(@element.children.map{|node| NokogiriDriver.new(node) })
308
+ end
292
309
  def [](attribute_name)
293
310
  raise ArgumentError.new unless attribute_name.kind_of? String
294
311
  @element[attribute_name]
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.0
4
+ version: 1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Troels Knak-Nielsen
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-10-11 00:00:00 +02:00
12
+ date: 2009-10-15 00:00:00 +02:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
@@ -22,6 +22,7 @@ extensions: []
22
22
  extra_rdoc_files:
23
23
  - README.markdown
24
24
  files:
25
+ - DEPLOY.markdown
25
26
  - README.markdown
26
27
  - VERSION.yml
27
28
  - generators/handsoap/USAGE