Skip to content

Commit

Permalink
embrace modularity by requiring dependencies per file
Browse files Browse the repository at this point in the history
  • Loading branch information
rubiii committed Sep 1, 2010
1 parent 5277eee commit be94c28
Show file tree
Hide file tree
Showing 18 changed files with 81 additions and 45 deletions.
29 changes: 2 additions & 27 deletions lib/savon.rb
@@ -1,3 +1,5 @@
require "savon/client"

module Savon

# Raised in case of an HTTP error.
Expand All @@ -7,30 +9,3 @@ class HTTPError < StandardError; end
class SOAPFault < StandardError; end

end

# standard libs
require "logger"
require "net/https"
require "base64"
require "digest/sha1"
require "rexml/document"
require "stringio"
require "zlib"
require "cgi"

# gem dependencies
require "builder"
require "crack/xml"
require "net/ntlm_http"

# core files
require "savon/core_ext"
require "savon/wsse"
require "savon/soap"
require "savon/logger"
require "savon/request"
require "savon/response"
require "savon/wsdl_stream"
require "savon/wsdl"
require "savon/client"
require "savon/version"
6 changes: 6 additions & 0 deletions lib/savon/client.rb
@@ -1,3 +1,9 @@
require "savon/soap"
require "savon/wsdl"
require "savon/request"
require "savon/wsse"
require "savon/response"

module Savon

# = Savon::Client
Expand Down
8 changes: 0 additions & 8 deletions lib/savon/core_ext.rb

This file was deleted.

13 changes: 10 additions & 3 deletions lib/savon/core_ext/array.rb
@@ -1,3 +1,10 @@
require "builder"

require "savon/core_ext/object"
require "savon/core_ext/string"
require "savon/core_ext/hash"
require "savon/core_ext/datetime"

module Savon
module CoreExt
module Array
Expand All @@ -9,8 +16,8 @@ def to_soap_xml(key, escape_xml = true, attributes = {})
each_with_index do |item, index|
attrs = tag_attributes attributes, index
case item
when Hash then xml.tag!(key, attrs) { xml << item.to_soap_xml }
else xml.tag!(key, attrs) { xml << (escape_xml ? item.to_soap_value : item.to_soap_value!) }
when ::Hash then xml.tag!(key, attrs) { xml << item.to_soap_xml }
else xml.tag!(key, attrs) { xml << (escape_xml ? item.to_soap_value : item.to_soap_value!) }
end
end

Expand All @@ -25,7 +32,7 @@ def tag_attributes(attributes, index)
return {} if attributes.empty?

attributes.inject({}) do |hash, (key, value)|
value = value[index] if value.kind_of? Array
value = value[index] if value.kind_of? ::Array
hash.merge key => value
end
end
Expand Down
2 changes: 2 additions & 0 deletions lib/savon/core_ext/datetime.rb
@@ -1,3 +1,5 @@
require "savon/soap"

module Savon
module CoreExt
module DateTime
Expand Down
22 changes: 15 additions & 7 deletions lib/savon/core_ext/hash.rb
@@ -1,3 +1,11 @@
require "builder"

require "savon/core_ext/object"
require "savon/core_ext/string"
require "savon/core_ext/symbol"
require "savon/core_ext/array"
require "savon/core_ext/datetime"

module Savon
module CoreExt
module Hash
Expand Down Expand Up @@ -68,9 +76,9 @@ def to_soap_xml
key = key.to_soap_key

case value
when Array then xml << value.to_soap_xml(key, escape_xml, attrs)
when Hash then xml.tag!(key, attrs) { xml << value.to_soap_xml }
else xml.tag!(key, attrs) { xml << (escape_xml ? value.to_soap_value : value.to_soap_value!) }
when ::Array then xml << value.to_soap_xml(key, escape_xml, attrs)
when ::Hash then xml.tag!(key, attrs) { xml << value.to_soap_xml }
else xml.tag!(key, attrs) { xml << (escape_xml ? value.to_soap_value : value.to_soap_value!) }
end
end

Expand All @@ -81,9 +89,9 @@ def to_soap_xml
def map_soap_response
inject({}) do |hash, (key, value)|
value = case value
when Hash then value["xsi:nil"] ? nil : value.map_soap_response
when Array then value.map { |val| val.map_soap_response rescue val }
when String then value.map_soap_response
when ::Hash then value["xsi:nil"] ? nil : value.map_soap_response
when ::Array then value.map { |val| val.map_soap_response rescue val }
when ::String then value.map_soap_response
end

hash.merge key.strip_namespace.snakecase.to_sym => value
Expand All @@ -97,7 +105,7 @@ def map_soap_response
# Array does not match the Hash keys.
def order
order = delete :order!
order = keys unless order.kind_of? Array
order = keys unless order.kind_of? ::Array

missing, spurious = keys - order, order - keys
raise ArgumentError, "Missing elements in :order! #{missing.inspect}" unless missing.empty?
Expand Down
2 changes: 2 additions & 0 deletions lib/savon/core_ext/net_http.rb
@@ -1,3 +1,5 @@
require "net/https"

module Savon
module CoreExt
module Net
Expand Down
2 changes: 2 additions & 0 deletions lib/savon/core_ext/object.rb
@@ -1,3 +1,5 @@
require "savon/core_ext/datetime"

module Savon
module CoreExt
module Object
Expand Down
4 changes: 4 additions & 0 deletions lib/savon/core_ext/string.rb
@@ -1,3 +1,7 @@
require "cgi"

require "savon/soap"

module Savon
module CoreExt
module String
Expand Down
2 changes: 2 additions & 0 deletions lib/savon/core_ext/symbol.rb
@@ -1,3 +1,5 @@
require "savon/core_ext/string"

module Savon
module CoreExt
module Symbol
Expand Down
2 changes: 2 additions & 0 deletions lib/savon/core_ext/uri.rb
@@ -1,3 +1,5 @@
require "uri"

module Savon
module CoreExt
module URI
Expand Down
2 changes: 2 additions & 0 deletions lib/savon/logger.rb
@@ -1,3 +1,5 @@
require "logger"

module Savon

# = Savon::Logger
Expand Down
8 changes: 8 additions & 0 deletions lib/savon/request.rb
@@ -1,3 +1,11 @@
require "uri"
require "net/https"
require "net/ntlm_http"

require "savon/logger"
require "savon/core_ext/uri"
require "savon/core_ext/net_http"

module Savon

# = Savon::Request
Expand Down
6 changes: 6 additions & 0 deletions lib/savon/response.rb
@@ -1,3 +1,9 @@
require "stringio"
require "zlib"
require "crack/xml"

require "savon/core_ext/hash"

module Savon

# = Savon::Response
Expand Down
4 changes: 4 additions & 0 deletions lib/savon/soap.rb
@@ -1,3 +1,7 @@
require "builder"

require "savon/core_ext/hash"

module Savon

# = Savon::SOAP
Expand Down
4 changes: 4 additions & 0 deletions lib/savon/wsdl.rb
@@ -1,3 +1,7 @@
require "rexml/document"

require "savon/wsdl_stream"

module Savon

# = Savon::WSDL
Expand Down
3 changes: 3 additions & 0 deletions lib/savon/wsdl_stream.rb
@@ -1,3 +1,6 @@
require "savon/core_ext/object"
require "savon/core_ext/string"

module Savon

# = Savon::WSDLStream
Expand Down
7 changes: 7 additions & 0 deletions lib/savon/wsse.rb
@@ -1,3 +1,10 @@
require "base64"
require "digest/sha1"
require "builder"

require "savon/core_ext/string"
require "savon/soap"

module Savon

# = Savon::WSSE
Expand Down

0 comments on commit be94c28

Please sign in to comment.