smacks-savon 0.0.4 → 0.0.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/README.rdoc +44 -2
 - data/lib/savon/response.rb +75 -31
 - data/lib/savon/service.rb +46 -29
 - data/lib/savon/wsdl.rb +16 -12
 - data/lib/savon.rb +5 -5
 - data/tests/fixtures/soap_response.rb +19 -0
 - data/tests/helper.rb +16 -11
 - data/tests/savon/mash_test.rb +9 -0
 - data/tests/savon/response_test.rb +88 -2
 - data/tests/savon/service_test.rb +0 -1
 - data/tests/savon/wsdl_test.rb +0 -1
 - data/tests/savon_test.rb +3 -3
 - metadata +4 -3
 
    
        data/README.rdoc
    CHANGED
    
    | 
         @@ -2,10 +2,52 @@ 
     | 
|
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            Savon is a lightweight SOAP client.
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
      
 5 
     | 
    
         
            +
            Instantiate Savon::Service and pass in the WSDL of the service you would
         
     | 
| 
      
 6 
     | 
    
         
            +
            like to use. Then just call the SOAP service method on your Savon::Service
         
     | 
| 
      
 7 
     | 
    
         
            +
            instance (catched via method_missing) and pass in a Hash of options for the
         
     | 
| 
      
 8 
     | 
    
         
            +
            service method to receive.
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
       5 
10 
     | 
    
         
             
            == Install
         
     | 
| 
       6 
11 
     | 
    
         | 
| 
       7 
     | 
    
         
            -
              $  
     | 
| 
      
 12 
     | 
    
         
            +
              $ gem install smacks-savon --s http://gems.github.com
         
     | 
| 
       8 
13 
     | 
    
         | 
| 
       9 
14 
     | 
    
         
             
            == Dependencies
         
     | 
| 
       10 
15 
     | 
    
         | 
| 
       11 
     | 
    
         
            -
              Hpricot 0.6.164 (also available for JRuby)
         
     | 
| 
      
 16 
     | 
    
         
            +
              Hpricot 0.6.164 (also available for JRuby)
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
            === Usage example
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
              proxy = Savon::Service.new "http://example.com/ExampleService?wsdl"
         
     | 
| 
      
 21 
     | 
    
         
            +
              response = proxy.findExampleById(:id => 123)
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
            === Check for available SOAP service methods
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
              proxy.wsdl.service_methods
         
     | 
| 
      
 26 
     | 
    
         
            +
              => [ "findExampleById", "findExampleByName" ]
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
            === Checking for HTTP and SOAP faults
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
              response.success?
         
     | 
| 
      
 31 
     | 
    
         
            +
              response.fault?
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
            === Access the fault message and code
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
              response.fault
         
     | 
| 
      
 36 
     | 
    
         
            +
              response.fault_code
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
            === Working with different response formats
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
              # raw XML response:
         
     | 
| 
      
 41 
     | 
    
         
            +
              response.to_s
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
              # response as a Hash
         
     | 
| 
      
 44 
     | 
    
         
            +
              response.to_hash
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
              # response as a Hash starting at a custom root node (via XPath)
         
     | 
| 
      
 47 
     | 
    
         
            +
              response.to_hash("//item")
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
              # response as a Mash
         
     | 
| 
      
 50 
     | 
    
         
            +
              response.to_mash
         
     | 
| 
      
 51 
     | 
    
         
            +
             
     | 
| 
      
 52 
     | 
    
         
            +
              # response as a Mash starting at a custom root node (via XPath)
         
     | 
| 
      
 53 
     | 
    
         
            +
              response.to_mash("//user/email")
         
     | 
    
        data/lib/savon/response.rb
    CHANGED
    
    | 
         @@ -1,29 +1,84 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
             
     | 
| 
       2 
     | 
    
         
            -
            require  
     | 
| 
       3 
     | 
    
         
            -
            require  
     | 
| 
      
 1 
     | 
    
         
            +
            require "rubygems"
         
     | 
| 
      
 2 
     | 
    
         
            +
            require "hpricot"
         
     | 
| 
      
 3 
     | 
    
         
            +
            require "apricoteatsgorilla"
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
       5 
5 
     | 
    
         
             
            module Savon
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
     | 
    
         
            -
              # Savon::Response represents the  
     | 
| 
       8 
     | 
    
         
            -
              # 
     | 
| 
      
 7 
     | 
    
         
            +
              # Savon::Response represents the HTTP response.
         
     | 
| 
      
 8 
     | 
    
         
            +
              #
         
     | 
| 
      
 9 
     | 
    
         
            +
              # === Checking for HTTP and SOAP faults
         
     | 
| 
      
 10 
     | 
    
         
            +
              #
         
     | 
| 
      
 11 
     | 
    
         
            +
              #   response.success?
         
     | 
| 
      
 12 
     | 
    
         
            +
              #   response.fault?
         
     | 
| 
      
 13 
     | 
    
         
            +
              #
         
     | 
| 
      
 14 
     | 
    
         
            +
              # === Access the fault message and code
         
     | 
| 
      
 15 
     | 
    
         
            +
              #
         
     | 
| 
      
 16 
     | 
    
         
            +
              #   response.fault
         
     | 
| 
      
 17 
     | 
    
         
            +
              #   response.fault_code
         
     | 
| 
      
 18 
     | 
    
         
            +
              #
         
     | 
| 
      
 19 
     | 
    
         
            +
              # === Different response formats
         
     | 
| 
      
 20 
     | 
    
         
            +
              #
         
     | 
| 
      
 21 
     | 
    
         
            +
              #   # raw XML response:
         
     | 
| 
      
 22 
     | 
    
         
            +
              #   response.to_s
         
     | 
| 
      
 23 
     | 
    
         
            +
              #
         
     | 
| 
      
 24 
     | 
    
         
            +
              #   # response as a Hash
         
     | 
| 
      
 25 
     | 
    
         
            +
              #   response.to_hash
         
     | 
| 
      
 26 
     | 
    
         
            +
              #
         
     | 
| 
      
 27 
     | 
    
         
            +
              #   # response as a Hash starting at a custom root node (via XPath)
         
     | 
| 
      
 28 
     | 
    
         
            +
              #   response.to_hash("//item")
         
     | 
| 
      
 29 
     | 
    
         
            +
              #
         
     | 
| 
      
 30 
     | 
    
         
            +
              #   # response as a Mash
         
     | 
| 
      
 31 
     | 
    
         
            +
              #   response.to_mash
         
     | 
| 
      
 32 
     | 
    
         
            +
              #
         
     | 
| 
      
 33 
     | 
    
         
            +
              #   # response as a Mash starting at a custom root node (via XPath)
         
     | 
| 
      
 34 
     | 
    
         
            +
              #   response.to_mash("//user/email")
         
     | 
| 
      
 35 
     | 
    
         
            +
              #
         
     | 
| 
      
 36 
     | 
    
         
            +
              # ===
         
     | 
| 
       9 
37 
     | 
    
         
             
              class Response
         
     | 
| 
       10 
38 
     | 
    
         | 
| 
      
 39 
     | 
    
         
            +
                attr_reader :fault, :fault_code
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
       11 
41 
     | 
    
         
             
                # Initializer to set the SOAP response.
         
     | 
| 
      
 42 
     | 
    
         
            +
                #
         
     | 
| 
      
 43 
     | 
    
         
            +
                # === Parameters
         
     | 
| 
      
 44 
     | 
    
         
            +
                #
         
     | 
| 
      
 45 
     | 
    
         
            +
                # * +response+ - The Net::HTTP response.
         
     | 
| 
       12 
46 
     | 
    
         
             
                def initialize(response)
         
     | 
| 
       13 
47 
     | 
    
         
             
                  @response = response
         
     | 
| 
      
 48 
     | 
    
         
            +
                  validate
         
     | 
| 
      
 49 
     | 
    
         
            +
                end
         
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
      
 51 
     | 
    
         
            +
                # Returns true if the request was successful, false otherwise.
         
     | 
| 
      
 52 
     | 
    
         
            +
                def success?
         
     | 
| 
      
 53 
     | 
    
         
            +
                  @fault_code.nil?
         
     | 
| 
      
 54 
     | 
    
         
            +
                end
         
     | 
| 
      
 55 
     | 
    
         
            +
             
     | 
| 
      
 56 
     | 
    
         
            +
                # Returns true if the request was not successful, false otherwise.
         
     | 
| 
      
 57 
     | 
    
         
            +
                def fault?
         
     | 
| 
      
 58 
     | 
    
         
            +
                  !@fault.nil?
         
     | 
| 
       14 
59 
     | 
    
         
             
                end
         
     | 
| 
       15 
60 
     | 
    
         | 
| 
       16 
61 
     | 
    
         
             
                # Returns the SOAP response message as a Hash. Call with XPath expession
         
     | 
| 
       17 
     | 
    
         
            -
                #  
     | 
| 
       18 
     | 
    
         
            -
                # be included in the Hash.
         
     | 
| 
      
 62 
     | 
    
         
            +
                # to define a custom +root_node+ to start parsing at. Defaults to "//return".
         
     | 
| 
      
 63 
     | 
    
         
            +
                # The root node itself will not be included in the Hash.
         
     | 
| 
      
 64 
     | 
    
         
            +
                #
         
     | 
| 
      
 65 
     | 
    
         
            +
                # === Parameters
         
     | 
| 
      
 66 
     | 
    
         
            +
                #
         
     | 
| 
      
 67 
     | 
    
         
            +
                # * +root_node+ - Optional. Custom root node to start parsing at. Defaults to "//return".
         
     | 
| 
       19 
68 
     | 
    
         
             
                def to_hash(root_node = "//return")
         
     | 
| 
       20 
     | 
    
         
            -
                   
     | 
| 
      
 69 
     | 
    
         
            +
                  return nil if fault?
         
     | 
| 
      
 70 
     | 
    
         
            +
                  ApricotEatsGorilla[@response.body, root_node]
         
     | 
| 
       21 
71 
     | 
    
         
             
                end
         
     | 
| 
       22 
72 
     | 
    
         | 
| 
       23 
73 
     | 
    
         
             
                # Returns the SOAP response message as a Savon::Mash object. Call with
         
     | 
| 
       24 
     | 
    
         
            -
                # XPath expession  
     | 
| 
       25 
     | 
    
         
            -
                # itself will not be included in the Mash object.
         
     | 
| 
      
 74 
     | 
    
         
            +
                # XPath expession to define a custom +root_node+. Defaults to "//return".
         
     | 
| 
      
 75 
     | 
    
         
            +
                # The root node itself will not be included in the Mash object.
         
     | 
| 
      
 76 
     | 
    
         
            +
                #
         
     | 
| 
      
 77 
     | 
    
         
            +
                # === Parameters
         
     | 
| 
      
 78 
     | 
    
         
            +
                #
         
     | 
| 
      
 79 
     | 
    
         
            +
                # * +root_node+ - Optional. Custom root node to start parsing at. Defaults to "//return".
         
     | 
| 
       26 
80 
     | 
    
         
             
                def to_mash(root_node = "//return")
         
     | 
| 
      
 81 
     | 
    
         
            +
                  return nil if fault?
         
     | 
| 
       27 
82 
     | 
    
         
             
                  hash = to_hash(root_node)
         
     | 
| 
       28 
83 
     | 
    
         
             
                  Savon::Mash.new(hash)
         
     | 
| 
       29 
84 
     | 
    
         
             
                end
         
     | 
| 
         @@ -33,30 +88,19 @@ module Savon 
     | 
|
| 
       33 
88 
     | 
    
         
             
                  @response.body
         
     | 
| 
       34 
89 
     | 
    
         
             
                end
         
     | 
| 
       35 
90 
     | 
    
         | 
| 
       36 
     | 
    
         
            -
               
     | 
| 
      
 91 
     | 
    
         
            +
              private
         
     | 
| 
       37 
92 
     | 
    
         | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
       42 
     | 
    
         
            -
             
     | 
| 
       43 
     | 
    
         
            -
             
     | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
       45 
     | 
    
         
            -
                     
     | 
| 
       46 
     | 
    
         
            -
             
     | 
| 
       47 
     | 
    
         
            -
                        if item.is_a?(Hash) then Savon::Mash.new(item) else item end
         
     | 
| 
       48 
     | 
    
         
            -
                      end
         
     | 
| 
       49 
     | 
    
         
            -
                    end
         
     | 
| 
       50 
     | 
    
         
            -
             
     | 
| 
       51 
     | 
    
         
            -
                    # Create and initialize an instance variable for this key/value pair
         
     | 
| 
       52 
     | 
    
         
            -
                    self.instance_variable_set("@#{key}", value)
         
     | 
| 
       53 
     | 
    
         
            -
                    # Create the getter that returns the instance variable
         
     | 
| 
       54 
     | 
    
         
            -
                    self.class.send(:define_method, key, proc{self.instance_variable_get("@#{key}")})
         
     | 
| 
       55 
     | 
    
         
            -
                    # Create the setter that sets the instance variable
         
     | 
| 
       56 
     | 
    
         
            -
                    self.class.send(:define_method, "#{key}=", proc{|value| self.instance_variable_set("@#{key}", value)})
         
     | 
| 
      
 93 
     | 
    
         
            +
                # Checks for and stores HTTP and SOAP-Fault errors.
         
     | 
| 
      
 94 
     | 
    
         
            +
                def validate
         
     | 
| 
      
 95 
     | 
    
         
            +
                  if @response.code.to_i >= 300
         
     | 
| 
      
 96 
     | 
    
         
            +
                    @fault = @response.message
         
     | 
| 
      
 97 
     | 
    
         
            +
                    @fault_code = @response.code
         
     | 
| 
      
 98 
     | 
    
         
            +
                  else
         
     | 
| 
      
 99 
     | 
    
         
            +
                    fault = to_hash("//soap:Fault")
         
     | 
| 
      
 100 
     | 
    
         
            +
                    @fault = fault[:faultstring] unless fault.nil?
         
     | 
| 
      
 101 
     | 
    
         
            +
                    @fault_code = fault[:faultcode] unless fault.nil?
         
     | 
| 
       57 
102 
     | 
    
         
             
                  end
         
     | 
| 
       58 
103 
     | 
    
         
             
                end
         
     | 
| 
       59 
104 
     | 
    
         | 
| 
       60 
105 
     | 
    
         
             
              end
         
     | 
| 
       61 
     | 
    
         
            -
             
     | 
| 
       62 
106 
     | 
    
         
             
            end
         
     | 
    
        data/lib/savon/service.rb
    CHANGED
    
    | 
         @@ -1,43 +1,58 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
             
     | 
| 
       2 
     | 
    
         
            -
            require  
     | 
| 
       3 
     | 
    
         
            -
            require  
     | 
| 
       4 
     | 
    
         
            -
            require  
     | 
| 
       5 
     | 
    
         
            -
            require 'apricoteatsgorilla'
         
     | 
| 
      
 1 
     | 
    
         
            +
            require "rubygems"
         
     | 
| 
      
 2 
     | 
    
         
            +
            require "net/http"
         
     | 
| 
      
 3 
     | 
    
         
            +
            require "uri"
         
     | 
| 
      
 4 
     | 
    
         
            +
            require "apricoteatsgorilla"
         
     | 
| 
       6 
5 
     | 
    
         | 
| 
       7 
6 
     | 
    
         
             
            module Savon
         
     | 
| 
       8 
7 
     | 
    
         | 
| 
       9 
     | 
    
         
            -
              # Savon 
     | 
| 
      
 8 
     | 
    
         
            +
              # Savon is a lightweight SOAP client.
         
     | 
| 
       10 
9 
     | 
    
         
             
              #
         
     | 
| 
       11 
10 
     | 
    
         
             
              # Instantiate Savon::Service and pass in the WSDL of the service you would
         
     | 
| 
       12 
     | 
    
         
            -
              # like to  
     | 
| 
       13 
     | 
    
         
            -
              # instance ( 
     | 
| 
       14 
     | 
    
         
            -
              #  
     | 
| 
      
 11 
     | 
    
         
            +
              # like to use. Then just call the SOAP service method on your Savon::Service
         
     | 
| 
      
 12 
     | 
    
         
            +
              # instance (catched via method_missing) and pass in a Hash of options for the
         
     | 
| 
      
 13 
     | 
    
         
            +
              # service method to receive.
         
     | 
| 
      
 14 
     | 
    
         
            +
              #
         
     | 
| 
      
 15 
     | 
    
         
            +
              # === Usage example
         
     | 
| 
       15 
16 
     | 
    
         
             
              #
         
     | 
| 
       16 
     | 
    
         
            -
              # Example:
         
     | 
| 
       17 
17 
     | 
    
         
             
              #   proxy = Savon::Service.new "http://example.com/ExampleService?wsdl"
         
     | 
| 
       18 
     | 
    
         
            -
              #   response = proxy.findExampleById(:id =>  
     | 
| 
      
 18 
     | 
    
         
            +
              #   response = proxy.findExampleById(:id => 123)
         
     | 
| 
      
 19 
     | 
    
         
            +
              #
         
     | 
| 
      
 20 
     | 
    
         
            +
              # === Check for available SOAP service methods
         
     | 
| 
      
 21 
     | 
    
         
            +
              #
         
     | 
| 
      
 22 
     | 
    
         
            +
              #   proxy.wsdl.service_methods
         
     | 
| 
      
 23 
     | 
    
         
            +
              #   # => [ "findExampleById", "findExampleByName" ]
         
     | 
| 
       19 
24 
     | 
    
         
             
              #
         
     | 
| 
       20 
     | 
    
         
            -
              #  
     | 
| 
      
 25 
     | 
    
         
            +
              # === Working with different response formats
         
     | 
| 
      
 26 
     | 
    
         
            +
              #
         
     | 
| 
      
 27 
     | 
    
         
            +
              #   # raw XML response:
         
     | 
| 
       21 
28 
     | 
    
         
             
              #   response.to_s
         
     | 
| 
       22 
29 
     | 
    
         
             
              #
         
     | 
| 
       23 
     | 
    
         
            -
              #  
     | 
| 
      
 30 
     | 
    
         
            +
              #   # response as a Hash
         
     | 
| 
       24 
31 
     | 
    
         
             
              #   response.to_hash
         
     | 
| 
       25 
     | 
    
         
            -
              #   response.to_hash("//return")
         
     | 
| 
       26 
32 
     | 
    
         
             
              #
         
     | 
| 
       27 
     | 
    
         
            -
              #  
     | 
| 
      
 33 
     | 
    
         
            +
              #   # response as a Hash starting at a custom root node (via XPath)
         
     | 
| 
      
 34 
     | 
    
         
            +
              #   response.to_hash("//item")
         
     | 
| 
      
 35 
     | 
    
         
            +
              #
         
     | 
| 
      
 36 
     | 
    
         
            +
              #   # response as a Mash
         
     | 
| 
       28 
37 
     | 
    
         
             
              #   response.to_mash
         
     | 
| 
      
 38 
     | 
    
         
            +
              #
         
     | 
| 
      
 39 
     | 
    
         
            +
              #   # response as a Mash starting at a custom root node (via XPath)
         
     | 
| 
       29 
40 
     | 
    
         
             
              #   response.to_mash("//user/email")
         
     | 
| 
       30 
41 
     | 
    
         
             
              class Service
         
     | 
| 
       31 
42 
     | 
    
         | 
| 
       32 
     | 
    
         
            -
                #  
     | 
| 
      
 43 
     | 
    
         
            +
                # The Net::HTTP connection instance to use.
         
     | 
| 
       33 
44 
     | 
    
         
             
                attr_writer :http
         
     | 
| 
       34 
45 
     | 
    
         | 
| 
       35 
     | 
    
         
            -
                # Initializer sets the endpoint URI.
         
     | 
| 
      
 46 
     | 
    
         
            +
                # Initializer sets the WSDL +endpoint+ URI.
         
     | 
| 
      
 47 
     | 
    
         
            +
                #
         
     | 
| 
      
 48 
     | 
    
         
            +
                # ==== Parameters
         
     | 
| 
      
 49 
     | 
    
         
            +
                #
         
     | 
| 
      
 50 
     | 
    
         
            +
                # * +endpoint+ - The WSDL endpoint URI.
         
     | 
| 
       36 
51 
     | 
    
         
             
                def initialize(endpoint)
         
     | 
| 
       37 
52 
     | 
    
         
             
                  @uri = URI(endpoint)
         
     | 
| 
       38 
53 
     | 
    
         
             
                end
         
     | 
| 
       39 
54 
     | 
    
         | 
| 
       40 
     | 
    
         
            -
                # Returns an  
     | 
| 
      
 55 
     | 
    
         
            +
                # Returns an instance of the WSDL.
         
     | 
| 
       41 
56 
     | 
    
         
             
                def wsdl
         
     | 
| 
       42 
57 
     | 
    
         
             
                  @wsdl = Savon::Wsdl.new(@uri, http) if @wsdl.nil?
         
     | 
| 
       43 
58 
     | 
    
         
             
                  @wsdl
         
     | 
| 
         @@ -45,37 +60,34 @@ module Savon 
     | 
|
| 
       45 
60 
     | 
    
         | 
| 
       46 
61 
     | 
    
         
             
              private
         
     | 
| 
       47 
62 
     | 
    
         | 
| 
       48 
     | 
    
         
            -
                #  
     | 
| 
       49 
     | 
    
         
            -
                # Savon::Response object.
         
     | 
| 
      
 63 
     | 
    
         
            +
                # Prepares and processes the SOAP request. Returns a Savon::Response object.
         
     | 
| 
       50 
64 
     | 
    
         
             
                def call_service
         
     | 
| 
       51 
     | 
    
         
            -
                  headers = {  
     | 
| 
      
 65 
     | 
    
         
            +
                  headers = { "Content-Type" => "text/xml; charset=utf-8", "SOAPAction" => @action }
         
     | 
| 
       52 
66 
     | 
    
         
             
                  body = ApricotEatsGorilla.soap_envelope("wsdl" => wsdl.namespace_uri) do
         
     | 
| 
       53 
     | 
    
         
            -
                    ApricotEatsGorilla 
     | 
| 
      
 67 
     | 
    
         
            +
                    ApricotEatsGorilla["wsdl:#{@action}" => namespaced_options]
         
     | 
| 
       54 
68 
     | 
    
         
             
                  end
         
     | 
| 
       55 
69 
     | 
    
         
             
                  response = @http.request_post(@uri.path, body, headers)
         
     | 
| 
       56 
70 
     | 
    
         
             
                  Savon::Response.new(response)
         
     | 
| 
       57 
71 
     | 
    
         
             
                end
         
     | 
| 
       58 
72 
     | 
    
         | 
| 
       59 
     | 
    
         
            -
                # Returns  
     | 
| 
      
 73 
     | 
    
         
            +
                # Returns the Net::HTTP instance to use.
         
     | 
| 
       60 
74 
     | 
    
         
             
                def http
         
     | 
| 
       61 
75 
     | 
    
         
             
                  if @http.nil?
         
     | 
| 
       62 
76 
     | 
    
         
             
                    raise ArgumentError, "Invalid endpoint URI" unless @uri.scheme
         
     | 
| 
       63 
77 
     | 
    
         
             
                    @http = Net::HTTP.new(@uri.host, @uri.port)
         
     | 
| 
       64 
     | 
    
         
            -
                    #@http.set_debug_output(STDOUT)
         
     | 
| 
       65 
     | 
    
         
            -
                    #@http.read_timeout = 5
         
     | 
| 
       66 
78 
     | 
    
         
             
                  end
         
     | 
| 
       67 
79 
     | 
    
         
             
                  @http
         
     | 
| 
       68 
80 
     | 
    
         
             
                end
         
     | 
| 
       69 
81 
     | 
    
         | 
| 
       70 
     | 
    
         
            -
                # Checks if the  
     | 
| 
       71 
     | 
    
         
            -
                # Raises an ArgumentError in case it  
     | 
| 
      
 82 
     | 
    
         
            +
                # Checks if the requested SOAP service method is available.
         
     | 
| 
      
 83 
     | 
    
         
            +
                # Raises an ArgumentError in case it is not.
         
     | 
| 
       72 
84 
     | 
    
         
             
                def validate_action
         
     | 
| 
       73 
85 
     | 
    
         
             
                  unless wsdl.service_methods.include? @action
         
     | 
| 
       74 
86 
     | 
    
         
             
                    raise ArgumentError, "Invalid service method '#{@action}'"
         
     | 
| 
       75 
87 
     | 
    
         
             
                  end
         
     | 
| 
       76 
88 
     | 
    
         
             
                end
         
     | 
| 
       77 
89 
     | 
    
         | 
| 
       78 
     | 
    
         
            -
                # Checks if there were any choice elements found in the  
     | 
| 
      
 90 
     | 
    
         
            +
                # Checks if there were any choice elements found in the WSDL and namespaces
         
     | 
| 
       79 
91 
     | 
    
         
             
                # the corresponding keys from the passed in Hash of options.
         
     | 
| 
       80 
92 
     | 
    
         
             
                def namespaced_options
         
     | 
| 
       81 
93 
     | 
    
         
             
                  return @options if wsdl.choice_elements.empty?
         
     | 
| 
         @@ -97,7 +109,12 @@ module Savon 
     | 
|
| 
       97 
109 
     | 
    
         
             
                  options
         
     | 
| 
       98 
110 
     | 
    
         
             
                end
         
     | 
| 
       99 
111 
     | 
    
         | 
| 
       100 
     | 
    
         
            -
                #  
     | 
| 
      
 112 
     | 
    
         
            +
                # Intercepts calls to SOAP service methods.
         
     | 
| 
      
 113 
     | 
    
         
            +
                #
         
     | 
| 
      
 114 
     | 
    
         
            +
                # === Parameters
         
     | 
| 
      
 115 
     | 
    
         
            +
                #
         
     | 
| 
      
 116 
     | 
    
         
            +
                # * +method+ - The SOAP service method to call.
         
     | 
| 
      
 117 
     | 
    
         
            +
                # * +options+ - Hash of options for the service method to receive.
         
     | 
| 
       101 
118 
     | 
    
         
             
                def method_missing(method, options = {})
         
     | 
| 
       102 
119 
     | 
    
         
             
                  @action = method.to_s
         
     | 
| 
       103 
120 
     | 
    
         
             
                  @options = options
         
     | 
    
        data/lib/savon/wsdl.rb
    CHANGED
    
    | 
         @@ -1,7 +1,6 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
             
     | 
| 
       2 
     | 
    
         
            -
            require  
     | 
| 
       3 
     | 
    
         
            -
            require  
     | 
| 
       4 
     | 
    
         
            -
            require 'hpricot'
         
     | 
| 
      
 1 
     | 
    
         
            +
            require "rubygems"
         
     | 
| 
      
 2 
     | 
    
         
            +
            require "net/http"
         
     | 
| 
      
 3 
     | 
    
         
            +
            require "hpricot"
         
     | 
| 
       5 
4 
     | 
    
         | 
| 
       6 
5 
     | 
    
         
             
            module Savon
         
     | 
| 
       7 
6 
     | 
    
         | 
| 
         @@ -11,14 +10,19 @@ module Savon 
     | 
|
| 
       11 
10 
     | 
    
         
             
                # The namespace URI.
         
     | 
| 
       12 
11 
     | 
    
         
             
                attr_reader :namespace_uri
         
     | 
| 
       13 
12 
     | 
    
         | 
| 
       14 
     | 
    
         
            -
                #  
     | 
| 
      
 13 
     | 
    
         
            +
                # SOAP service methods.
         
     | 
| 
       15 
14 
     | 
    
         
             
                attr_reader :service_methods
         
     | 
| 
       16 
15 
     | 
    
         | 
| 
       17 
16 
     | 
    
         
             
                # Choice elements.
         
     | 
| 
       18 
17 
     | 
    
         
             
                attr_reader :choice_elements
         
     | 
| 
       19 
18 
     | 
    
         | 
| 
       20 
     | 
    
         
            -
                # Initializer expects an endpoint  
     | 
| 
       21 
     | 
    
         
            -
                #  
     | 
| 
      
 19 
     | 
    
         
            +
                # Initializer expects an endpoint +uri+ and an +http+ connection instance,
         
     | 
| 
      
 20 
     | 
    
         
            +
                # then gets and parses the WSDL at the given URI.
         
     | 
| 
      
 21 
     | 
    
         
            +
                #
         
     | 
| 
      
 22 
     | 
    
         
            +
                # === Parameters
         
     | 
| 
      
 23 
     | 
    
         
            +
                #
         
     | 
| 
      
 24 
     | 
    
         
            +
                # * +uri+ - The URI to access.
         
     | 
| 
      
 25 
     | 
    
         
            +
                # * +http+ - The Net::HTTP connection instance to use.
         
     | 
| 
       22 
26 
     | 
    
         
             
                def initialize(uri, http)
         
     | 
| 
       23 
27 
     | 
    
         
             
                  @uri = uri
         
     | 
| 
       24 
28 
     | 
    
         
             
                  @http = http
         
     | 
| 
         @@ -42,16 +46,16 @@ module Savon 
     | 
|
| 
       42 
46 
     | 
    
         
             
                # Parses the WSDL for the namespace URI, available service methods
         
     | 
| 
       43 
47 
     | 
    
         
             
                # and choice elements.
         
     | 
| 
       44 
48 
     | 
    
         
             
                def parse_wsdl
         
     | 
| 
       45 
     | 
    
         
            -
                  @namespace_uri = @doc.at( 
     | 
| 
      
 49 
     | 
    
         
            +
                  @namespace_uri = @doc.at("//wsdl:definitions").get_attribute("targetNamespace")
         
     | 
| 
       46 
50 
     | 
    
         | 
| 
       47 
51 
     | 
    
         
             
                  @service_methods = []
         
     | 
| 
       48 
     | 
    
         
            -
                  @doc.search( 
     | 
| 
       49 
     | 
    
         
            -
                    service_methods << operation.parent.get_attribute( 
     | 
| 
      
 52 
     | 
    
         
            +
                  @doc.search("//soap:operation").each do |operation|
         
     | 
| 
      
 53 
     | 
    
         
            +
                    service_methods << operation.parent.get_attribute("name")
         
     | 
| 
       50 
54 
     | 
    
         
             
                  end
         
     | 
| 
       51 
55 
     | 
    
         | 
| 
       52 
56 
     | 
    
         
             
                  @choice_elements = []
         
     | 
| 
       53 
     | 
    
         
            -
                  @doc.search( 
     | 
| 
       54 
     | 
    
         
            -
                    name = choice.get_attribute( 
     | 
| 
      
 57 
     | 
    
         
            +
                  @doc.search("//xs:choice//xs:element").each do |choice|
         
     | 
| 
      
 58 
     | 
    
         
            +
                    name = choice.get_attribute("ref").sub(/(.+):/, "")
         
     | 
| 
       55 
59 
     | 
    
         
             
                    choice_elements << name unless @choice_elements.include? name
         
     | 
| 
       56 
60 
     | 
    
         
             
                  end
         
     | 
| 
       57 
61 
     | 
    
         
             
                end
         
     | 
    
        data/lib/savon.rb
    CHANGED
    
    | 
         @@ -1,5 +1,5 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
             
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            require  
     | 
| 
       4 
     | 
    
         
            -
            require  
     | 
| 
       5 
     | 
    
         
            -
            require  
     | 
| 
      
 1 
     | 
    
         
            +
            $:.unshift(File.join(File.dirname(__FILE__), "savon"))
         
     | 
| 
      
 2 
     | 
    
         
            +
            require "service"
         
     | 
| 
      
 3 
     | 
    
         
            +
            require "response"
         
     | 
| 
      
 4 
     | 
    
         
            +
            require "wsdl"
         
     | 
| 
      
 5 
     | 
    
         
            +
            require "mash"
         
     | 
| 
         @@ -12,4 +12,23 @@ module SoapResponseFixture 
     | 
|
| 
       12 
12 
     | 
    
         
             
                </soap:Envelope>'
         
     | 
| 
       13 
13 
     | 
    
         
             
              end
         
     | 
| 
       14 
14 
     | 
    
         | 
| 
      
 15 
     | 
    
         
            +
              def soap_fault_response
         
     | 
| 
      
 16 
     | 
    
         
            +
                '<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
         
     | 
| 
      
 17 
     | 
    
         
            +
                   <soap:Body>
         
     | 
| 
      
 18 
     | 
    
         
            +
                      <soap:Fault>
         
     | 
| 
      
 19 
     | 
    
         
            +
                         <faultcode>' << soap_fault_code << '</faultcode>
         
     | 
| 
      
 20 
     | 
    
         
            +
                         <faultstring>' << soap_fault << '</faultstring>
         
     | 
| 
      
 21 
     | 
    
         
            +
                      </soap:Fault>
         
     | 
| 
      
 22 
     | 
    
         
            +
                   </soap:Body>
         
     | 
| 
      
 23 
     | 
    
         
            +
                </soap:Envelope>'
         
     | 
| 
      
 24 
     | 
    
         
            +
              end
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
              def soap_fault
         
     | 
| 
      
 27 
     | 
    
         
            +
                "Failed to authenticate client."
         
     | 
| 
      
 28 
     | 
    
         
            +
              end
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
              def soap_fault_code
         
     | 
| 
      
 31 
     | 
    
         
            +
                "soap:Server"
         
     | 
| 
      
 32 
     | 
    
         
            +
              end
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
       15 
34 
     | 
    
         
             
            end
         
     | 
    
        data/tests/helper.rb
    CHANGED
    
    | 
         @@ -1,13 +1,10 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require  
     | 
| 
       2 
     | 
    
         
            -
            require  
     | 
| 
       3 
     | 
    
         
            -
            require  
     | 
| 
       4 
     | 
    
         
            -
            require  
     | 
| 
      
 1 
     | 
    
         
            +
            require "rubygems"
         
     | 
| 
      
 2 
     | 
    
         
            +
            require "test/unit"
         
     | 
| 
      
 3 
     | 
    
         
            +
            require "mocha"
         
     | 
| 
      
 4 
     | 
    
         
            +
            require "shoulda"
         
     | 
| 
       5 
5 
     | 
    
         
             
            require "apricoteatsgorilla"
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
              require File.join(File.dirname(__FILE__), "..", "lib", "savon", file)
         
     | 
| 
       9 
     | 
    
         
            -
            end
         
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
      
 7 
     | 
    
         
            +
            require File.join(File.dirname(__FILE__), "..", "lib", "savon")
         
     | 
| 
       11 
8 
     | 
    
         
             
            require File.join(File.dirname(__FILE__), "factories", "wsdl")
         
     | 
| 
       12 
9 
     | 
    
         
             
            require File.join(File.dirname(__FILE__), "fixtures", "soap_response")
         
     | 
| 
       13 
10 
     | 
    
         | 
| 
         @@ -35,10 +32,18 @@ module TestHelper 
     | 
|
| 
       35 
32 
     | 
    
         
             
              end
         
     | 
| 
       36 
33 
     | 
    
         | 
| 
       37 
34 
     | 
    
         
             
              def response_mock(response_body)
         
     | 
| 
       38 
     | 
    
         
            -
                 
     | 
| 
      
 35 
     | 
    
         
            +
                build_response_mock("200", "OK", response_body)
         
     | 
| 
      
 36 
     | 
    
         
            +
              end
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
              def response_fault_mock
         
     | 
| 
      
 39 
     | 
    
         
            +
                build_response_mock("404", "NotFound")
         
     | 
| 
      
 40 
     | 
    
         
            +
              end
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
      
 42 
     | 
    
         
            +
              def build_response_mock(code, message, body = nil)
         
     | 
| 
      
 43 
     | 
    
         
            +
                response_mock = mock("Net::HTTPResponse")
         
     | 
| 
       39 
44 
     | 
    
         
             
                response_mock.stubs(
         
     | 
| 
       40 
     | 
    
         
            -
                  :code =>  
     | 
| 
       41 
     | 
    
         
            -
                  :body =>  
     | 
| 
      
 45 
     | 
    
         
            +
                  :code => code, :message => message, :content_type => "text/html",
         
     | 
| 
      
 46 
     | 
    
         
            +
                  :body => body
         
     | 
| 
       42 
47 
     | 
    
         
             
                )
         
     | 
| 
       43 
48 
     | 
    
         
             
                response_mock
         
     | 
| 
       44 
49 
     | 
    
         
             
              end
         
     | 
| 
         @@ -1,4 +1,3 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # -*- coding: utf-8 -*-
         
     | 
| 
       2 
1 
     | 
    
         
             
            require File.join(File.dirname(__FILE__), "..", "helper")
         
     | 
| 
       3 
2 
     | 
    
         | 
| 
       4 
3 
     | 
    
         
             
            class SavonResponseTest < Test::Unit::TestCase
         
     | 
| 
         @@ -17,7 +16,7 @@ class SavonResponseTest < Test::Unit::TestCase 
     | 
|
| 
       17 
16 
     | 
    
         
             
                end
         
     | 
| 
       18 
17 
     | 
    
         | 
| 
       19 
18 
     | 
    
         
             
                should "return a Hash equal to the response on to_hash" do
         
     | 
| 
       20 
     | 
    
         
            -
                  assert_equal ApricotEatsGorilla 
     | 
| 
      
 19 
     | 
    
         
            +
                  assert_equal ApricotEatsGorilla[some_soap_response, "//return"], @response.to_hash
         
     | 
| 
       21 
20 
     | 
    
         
             
                end
         
     | 
| 
       22 
21 
     | 
    
         | 
| 
       23 
22 
     | 
    
         
             
                should "return a Mash object on to_mash" do
         
     | 
| 
         @@ -31,6 +30,93 @@ class SavonResponseTest < Test::Unit::TestCase 
     | 
|
| 
       31 
30 
     | 
    
         
             
                should "return the raw XML response on to_s" do
         
     | 
| 
       32 
31 
     | 
    
         
             
                  assert_equal some_soap_response, @response.to_s
         
     | 
| 
       33 
32 
     | 
    
         
             
                end
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
                should "return 'true' on success?" do
         
     | 
| 
      
 35 
     | 
    
         
            +
                  assert_equal true, @response.success?
         
     | 
| 
      
 36 
     | 
    
         
            +
                end
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
                should "return 'false' on fault?" do
         
     | 
| 
      
 39 
     | 
    
         
            +
                  assert_equal false, @response.fault?
         
     | 
| 
      
 40 
     | 
    
         
            +
                end
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
      
 42 
     | 
    
         
            +
                should "return 'nil' for fault" do
         
     | 
| 
      
 43 
     | 
    
         
            +
                  assert_equal nil, @response.fault
         
     | 
| 
      
 44 
     | 
    
         
            +
                end
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
                should "return 'nil' for fault_code" do
         
     | 
| 
      
 47 
     | 
    
         
            +
                  assert_equal nil, @response.fault_code
         
     | 
| 
      
 48 
     | 
    
         
            +
                end
         
     | 
| 
      
 49 
     | 
    
         
            +
              end
         
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
      
 51 
     | 
    
         
            +
              context "Savon::Response with SOAP::Fault response" do
         
     | 
| 
      
 52 
     | 
    
         
            +
                setup do
         
     | 
| 
      
 53 
     | 
    
         
            +
                  ApricotEatsGorilla.sort_keys = true
         
     | 
| 
      
 54 
     | 
    
         
            +
                  @response = Savon::Response.new(response_mock(soap_fault_response))
         
     | 
| 
      
 55 
     | 
    
         
            +
                end
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
                should "return 'nil' on to_hash" do
         
     | 
| 
      
 58 
     | 
    
         
            +
                  assert_equal nil, @response.to_hash
         
     | 
| 
      
 59 
     | 
    
         
            +
                end
         
     | 
| 
      
 60 
     | 
    
         
            +
             
     | 
| 
      
 61 
     | 
    
         
            +
                should "return 'nil' on to_mash" do
         
     | 
| 
      
 62 
     | 
    
         
            +
                  assert_equal nil, @response.to_mash
         
     | 
| 
      
 63 
     | 
    
         
            +
                end
         
     | 
| 
      
 64 
     | 
    
         
            +
             
     | 
| 
      
 65 
     | 
    
         
            +
                should "return the raw XML response on to_s" do
         
     | 
| 
      
 66 
     | 
    
         
            +
                  assert_equal soap_fault_response, @response.to_s
         
     | 
| 
      
 67 
     | 
    
         
            +
                end
         
     | 
| 
      
 68 
     | 
    
         
            +
             
     | 
| 
      
 69 
     | 
    
         
            +
                should "return 'false' on success?" do
         
     | 
| 
      
 70 
     | 
    
         
            +
                  assert_equal false, @response.success?
         
     | 
| 
      
 71 
     | 
    
         
            +
                end
         
     | 
| 
      
 72 
     | 
    
         
            +
             
     | 
| 
      
 73 
     | 
    
         
            +
                should "return 'true' on fault?" do
         
     | 
| 
      
 74 
     | 
    
         
            +
                  assert_equal true, @response.fault?
         
     | 
| 
      
 75 
     | 
    
         
            +
                end
         
     | 
| 
      
 76 
     | 
    
         
            +
             
     | 
| 
      
 77 
     | 
    
         
            +
                should "return the fault on fault" do
         
     | 
| 
      
 78 
     | 
    
         
            +
                  assert_equal soap_fault, @response.fault
         
     | 
| 
      
 79 
     | 
    
         
            +
                end
         
     | 
| 
      
 80 
     | 
    
         
            +
             
     | 
| 
      
 81 
     | 
    
         
            +
                should "return the fault_code on fault_code" do
         
     | 
| 
      
 82 
     | 
    
         
            +
                  assert_equal soap_fault_code, @response.fault_code
         
     | 
| 
      
 83 
     | 
    
         
            +
                end
         
     | 
| 
      
 84 
     | 
    
         
            +
              end
         
     | 
| 
      
 85 
     | 
    
         
            +
             
     | 
| 
      
 86 
     | 
    
         
            +
              context "Savon::Response with 404 error" do
         
     | 
| 
      
 87 
     | 
    
         
            +
                setup do
         
     | 
| 
      
 88 
     | 
    
         
            +
                  ApricotEatsGorilla.sort_keys = true
         
     | 
| 
      
 89 
     | 
    
         
            +
                  @response = Savon::Response.new(response_fault_mock)
         
     | 
| 
      
 90 
     | 
    
         
            +
                end
         
     | 
| 
      
 91 
     | 
    
         
            +
             
     | 
| 
      
 92 
     | 
    
         
            +
                should "return 'nil' on to_hash" do
         
     | 
| 
      
 93 
     | 
    
         
            +
                  assert_equal nil, @response.to_hash
         
     | 
| 
      
 94 
     | 
    
         
            +
                end
         
     | 
| 
      
 95 
     | 
    
         
            +
             
     | 
| 
      
 96 
     | 
    
         
            +
                should "return 'nil' on to_mash" do
         
     | 
| 
      
 97 
     | 
    
         
            +
                  assert_equal nil, @response.to_mash
         
     | 
| 
      
 98 
     | 
    
         
            +
                end
         
     | 
| 
      
 99 
     | 
    
         
            +
             
     | 
| 
      
 100 
     | 
    
         
            +
                should "return nil on to_s" do
         
     | 
| 
      
 101 
     | 
    
         
            +
                  assert_equal nil, @response.to_s
         
     | 
| 
      
 102 
     | 
    
         
            +
                end
         
     | 
| 
      
 103 
     | 
    
         
            +
             
     | 
| 
      
 104 
     | 
    
         
            +
                should "return 'false' on success?" do
         
     | 
| 
      
 105 
     | 
    
         
            +
                  assert_equal false, @response.success?
         
     | 
| 
      
 106 
     | 
    
         
            +
                end
         
     | 
| 
      
 107 
     | 
    
         
            +
             
     | 
| 
      
 108 
     | 
    
         
            +
                should "return 'true' on fault?" do
         
     | 
| 
      
 109 
     | 
    
         
            +
                  assert_equal true, @response.fault?
         
     | 
| 
      
 110 
     | 
    
         
            +
                end
         
     | 
| 
      
 111 
     | 
    
         
            +
             
     | 
| 
      
 112 
     | 
    
         
            +
                should "return the fault on fault" do
         
     | 
| 
      
 113 
     | 
    
         
            +
                  assert_equal "NotFound", @response.fault
         
     | 
| 
      
 114 
     | 
    
         
            +
                end
         
     | 
| 
      
 115 
     | 
    
         
            +
             
     | 
| 
      
 116 
     | 
    
         
            +
                should "return the fault_code on fault_code" do
         
     | 
| 
      
 117 
     | 
    
         
            +
                  assert_equal "404", @response.fault_code
         
     | 
| 
      
 118 
     | 
    
         
            +
                end
         
     | 
| 
      
 119 
     | 
    
         
            +
             
     | 
| 
       34 
120 
     | 
    
         
             
              end
         
     | 
| 
       35 
121 
     | 
    
         | 
| 
       36 
122 
     | 
    
         
             
            end
         
     | 
    
        data/tests/savon/service_test.rb
    CHANGED
    
    
    
        data/tests/savon/wsdl_test.rb
    CHANGED
    
    
    
        data/tests/savon_test.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification 
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: smacks-savon
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version 
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.0.5
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors: 
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Daniel Harrington
         
     | 
| 
         @@ -30,7 +30,7 @@ dependencies: 
     | 
|
| 
       30 
30 
     | 
    
         
             
                requirements: 
         
     | 
| 
       31 
31 
     | 
    
         
             
                - - ">="
         
     | 
| 
       32 
32 
     | 
    
         
             
                  - !ruby/object:Gem::Version 
         
     | 
| 
       33 
     | 
    
         
            -
                    version: 0. 
     | 
| 
      
 33 
     | 
    
         
            +
                    version: 0.3.31
         
     | 
| 
       34 
34 
     | 
    
         
             
                version: 
         
     | 
| 
       35 
35 
     | 
    
         
             
            description: Savon is a lightweight SOAP client.
         
     | 
| 
       36 
36 
     | 
    
         
             
            email: 
         
     | 
| 
         @@ -79,5 +79,6 @@ test_files: 
     | 
|
| 
       79 
79 
     | 
    
         
             
            - tests/factories/wsdl.rb
         
     | 
| 
       80 
80 
     | 
    
         
             
            - tests/fixtures/soap_response.rb
         
     | 
| 
       81 
81 
     | 
    
         
             
            - tests/savon/service_test.rb
         
     | 
| 
       82 
     | 
    
         
            -
            - tests/savon/wsdl_test.rb
         
     | 
| 
       83 
82 
     | 
    
         
             
            - tests/savon/response_test.rb
         
     | 
| 
      
 83 
     | 
    
         
            +
            - tests/savon/wsdl_test.rb
         
     | 
| 
      
 84 
     | 
    
         
            +
            - tests/savon/mash_test.rb
         
     |