- Make
client.rets_dataavailable immediately when callingclient.searchrather than having to wait until it finishes (Paul Trippett) :rets_versioncan be passed toclient.loginwithout the User-Agent fields being set, for RETS servers that require the version to be passed initially
- Added support for RETS servers that use digest authentication without the quality of protection flag (MRIS)
- Added SSL support (Paul Trippett)
- Fixed metadata parsing breaking if a field wasn't filled out (Paul Trippett)
- Fixed multipart parsing for
client.get_objectif a part is blank
- Fixed a stack overflow due to how Interealty handles User-Agent authentication errors
- Dropped support for TimeoutSeconds, instead if an HTTP 401 is received after a successful request then a reauthentication is forced. Provides better compatibility with how some RETS implementations handle sessions
- Client methods no longer return the HTTP request
- Requests will correctly be called after a HTTP digest becomes stale
client.loginwill now raiseResponseErrorerrors if the RETS tag cannot be found in the responseclient.loginadded the ability to pass:rets_versionto force the RETS Version used in HTTP requests. Provides a small speedup as it can skip one HTTP request depending on the RETS implementationclient.get_objectcan return both Content-Description or Description rather than just Description. Also will return Preferred
- Added support for TimeoutSeconds, after the timeout passes the gem seamlessly reauthenticates
- Improved the edge case handling for authentication requests to greatly increase compatability with logging into any RETS based system
- Object multipart parsing no longer fails if the boundary is wrapped in quotes
- Response parsing won't fail if the RETS server uses odd casing for the "ReplyText" and "ReplyCode" args in RETS
client.logoutwill now raiseCapabilityNotFounderrors if it's unsupportedclient.get_objectnow requires a block which is yielded to rather than returning an array of the contentclient.get_objectheaders are now returned in lowercase form ("content-id" not "Content-ID" and so on)RETS::Client.loginnow uses:useragent => {:name => "Foo", :password => "Bar"}to pass User Agent dataRETS::Client.loginno longer implies the User-Agent username or password by the primary username and password
- Added support for Count, Offset, Select and RestrictedIndicators in
client.search - Added support for Location in
client.get_object - RETS reply code, text and other data such as count or delimiter can be gotten through
client.rets_dataafter the call is finished
- Redid how authentication is handled, no longer implies HTTP Basic auth when using RETS-UA-Authorization
- RETS-Version is now used for RETS-UA-Authorization when available with "RETS/1.7" as a fallback
- Exceptions are now raised consistently and have been simplifed to
APIError,HTTPError,UnauthorizedandCapabilityNotFound HTTPErrorandAPIErrornow include the reply text and code inreply_codeandreply_text