Previously we would use response.raise_for_status to ensure errored responses did not percolate beyond the method call. Now we instead identify bad requests via response.ok and then condtionally return the raw content on an error. This should make rauth more transparent when things go wrong in the request token retrieval process.
Python 2.6 doesn't have unittest.TestCase.assertIsNotNone, among others. If we don't have it, try to import unittest2 as unittest.
This allows the consumer token and secret to be changed prior to using the service object. This is nice in web apps where you might be pulling tokens and secrets from a config file after statically constructing the service object. It also matches behavior of the OAuth2Service.
Essentially header authenication would fail under certain circumstances due to the fact that optional oauth parameters, such as `oauth_verifier` were being appended multiple times. This is now solved by parsing out these paramters before generating the `oauth_params` property. Additionally Token objects have been removed; they add unneeded complexity to the wrapper. Values of tokens are simply set as attributes directly on the hook itself. This simplifies this portion of the library and reduces the number of classes needed without breaking existing functionality. Finally `get_authenticated_session` has been removed and replaced by `_get_session`. This also signals an important aspect of this update: state of the hook was not being saved between authentication steps or even calls. Now through the use of this new method and instantiation of the hook as an attribute of the service wrapper, we are able to update attribtes on the hook object, rather than re-instantiate it on each call.
This updates rauth to v0.4.1 and fixes a bug wherein POSTing to a given endpoint could not contain the oauth_verifier parameter. Now instead of keeping a record of the verifier on the token object we assign it as a property of the hook. This property is populated automatically: in the scope of the hook's `__call__` method we introspect URL parameters and data, if we find `oauth_verifier` in either this value is assigned to our hook instance as a property. Otherwise this can be manually overridden by explicit assignment.
Previously parameters that contained whitespace, while quoted and encoded, were not escaped. This would cause authentication problems due to the fact that the signature being generated was incorrect. Now this is solved by calling replace('+', '%20') on the string returned by urlencode. Additionally handling of OAuth 1.0/a POSTs has been updated to include the oauth paramters in the query string. This is a stopgap fix, the fact that the request body cannot be updated within the scope of a hook remains an issue on Requests. This will be updated once a fix has been pushed there.
This release is not directly compatiable with the previous releases as the API has been updated and extended. Namely the service wrapper request calls have been made more generic to allow for various HTTP methods as well as flexibility when indicating the name of provider credentials, such as access_token. Specifically this addresses an issue where a service uses a non-standard naming scheme, such as Foursquare. Previously there was no easy way to overide the parameter name and internally the variable was required or the method would throw an error. Now the method has been abstracted to allow for generic naming as well as dynamic HTTP methods. Also the API has been extended and modified to be more closely aligned with Request's. For instance, all service wrappers now have get(), post(), put(), and delete() methods and corrospond to their respective HTTP methods. Some naming conventions were altered, such as the http_method parameter which is now simply method. (This also mirrors Request's API.)