- Contains the first cut at the rpc/encoded SOAP style.
- Replaced `Property` class with `suds.sudsobject.Object`. The
`Property` class was developed a long time ago with a slightly
different purpose. The `suds` `Object` is a simpler (more straight
forward) approach that requires less code and works better in the
debugger.
- The `Binding` (and the encoding) is selected on a per-method basis
which is more consistent with the WSDL. In \<= 0.1.7, the binding
was selected when the `ServiceProxy` was constructed and used for
all service methods. The binding was stored as `self.binding`. Since
the WSDL provides for a separate binding style and encoding for each
operation, `suds` needed to be change to work the same way.
- The `nil_supported` and `faults` flag(s) passed into the service
proxy using \*\*kwargs. In addition to these flags, a `http_proxy`
flag has been added and is passed to the `urllib2.Request` object.
The following args are supported:
- `faults` = Raise faults raised by server (default:`True`), else
return tuple from service method invocation as (HTTP code,
object).
- `nil_supported` = The bindings will set the `xsi:nil="true"` on
nodes that have a `value=None` when this flag is `True`
(default:`True`). Otherwise, an empty node `<x/>` is sent.
- `proxy` = An HTTP proxy to be specified on requests
(default:`{}`). The proxy is defined as `{protocol:proxy,}`.
- HTTP proxy supported (see above).
- `ServiceProxy` refactored to delegate to a `SoapClient`. Since the
service proxy exposes web services via `getattr()`, any attribute
(including methods) provided by the `ServiceProxy` class hides WS
operations defined by the WSDL. So, by moving everything to the
`SoapClient`, WSDL operations are no longer hidden without having to
use *hokey* names for attributes and methods in the service proxy.
Instead, the service proxy has `__client__` and `__factory__`
attributes (which really should be at low risk for name collision).
For now the `get_instance()` and `get_enum()` methods have not been
moved to preserve backward compatibility. Although, the preferred
API change would to replace:
> service = ServiceProxy('myurl')
> person = service.get_instance('person')
with something like:
> service = ServiceProxy('myurl')
> person = service.__factory__.get_instance('person')
After a few releases giving time for users to switch the new API,
the `get_instance()` and `get_enum()` methods may be removed with a
notice in big letters.
- Fixed problem where a WSDL does not define a `<schema/>` section and
`suds` can not resolve the prefixes for the
`http://www.w3.org/2001/XMLSchema` namespace to detect builtin types
such as `xs:string`.