Confirmed to work with Ruby 2.0.0-p0
RETS-Versionis no longer set toRETS/1.7unless an error20037is returned and no other one is specifiedRETS-Versioncan be set based on a HTTP 200 response for systems which only pass it after authentication (Innovia)
- System name added to
rets_data[:system_id]when pulling metadata out client.request_sizeandclient.request_hashcan be used when streaming is disabled inclient.search- Added
client.request_timewhich gives the time taken in seconds for aclient.searchorclient.get_objectto run
- Fixed an authentication issue when using Retsiq where it would return 20041 in place of HTTP 401
- Fixed errors when streaming with an unknown Content-Length and chunked encoding
- Fixed a block being required when making a
client.searchcall with:count_mode => :only - Fixed character encoding that was causing issues on some RETS servers (Paul Trippett)
- Fixed an exception when Rapattoni RETS servers returned a "RETS-STATUS" XML tag on a multipart
client.get_objectcall - Fixed a
RETS::APIErrorcode 0 error under some RETS systems when making a call toclient.get_objectwith:location
- 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
- Default to HTTP Digest authentication when Digest and Basic are provided (Paul Trippett)
- Fixed authentication header parser if a server returns Basic/Digest and the Digest data goes stale (Paul Trippett)
- Fixed query strings from the initial login request not being saved when discovery service URLs (Paul Trippett)
- 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