Changelog
=========

**Version 0.2.5 (09 December 2013)**

- Django 1.6 compatibility (`#29`_)

.. _#29: https://github.com/davidfischer/rpc4django/pull/29


**Version 0.2.4 (30 May 2013)**

- Fixed a packaging issue with 0.2.3


**Version 0.2.3 (30 May 2013)**

- Python3 compatibility!
- Code cleanup and code quality (flake8!)
- **[security]** Fixed billion laughs denial of service issue (`#20`_)

.. _#20: https://github.com/davidfischer/rpc4django/issues/20


**Version 0.2.2 (22 May 2013)**

- Fixed error involving simplejson with Django 1.5 (`#14`_)
- Fixed ProtocolError relating to modwsgi and JSONEncoder (`#15`_)
- Formatting cleanup

.. _#14: https://github.com/davidfischer/rpc4django/issues/14
.. _#15: https://github.com/davidfischer/rpc4django/issues/15


**Version 0.2.1 (08 March 2013)**

- Body length check fix for Django 1.5


**Version 0.2.0 (04 November 2012)**

- The demo site is now on Heroku
- ``params`` is now optional in JSONRPC requests (thanks to Albert Hopkins)
- Switching supported versions to Django supported versions (deprecating Django < 1.3 support)
- Moved documentation to readthedocs.org

**Version 0.1.12 (02 February 2012)**

- JSON encoding is customizable `#3`_ (thanks to Alexander Morozov)

.. _#3: https://github.com/davidfischer/rpc4django/pull/3/files

**Version 0.1.11 (21 December 2011)**

- Added a login_required parameter to the @rpcmethod decorator `#2`_

.. _#2: https://github.com/davidfischer/rpc4django/pull/2/files?w=1

**Version 0.1.10 (14 November 2011)**

- Removed requirement on Django in setup.py `#798823`_
- Refactored to use standard setuptools tests (``python setup.py test``)
- Moved development to Github_

.. _#798823: https://bugs.launchpad.net/rpc4django/+bug/798823
.. _Github: https://github.com/davidfischer/rpc4django

**Version 0.1.9 (10 July 2011)**

- Added a CookieTransport class with a lot of help from Douglas Peter Sculley.
- RPC4Django's logging now goes to the rpc4django logger.
- Catches an ExpatError in xmlrpclib that was previously uncaught under
  certain conditions
- Fixed error with scanning of ``INSTALLED_APPS`` for ``@rpcmethods``. This
  was causing an issue when South_ was installed. (`#807628`_)
- Fixed `bug #807653`_ related to scanning ServerProxy objects

.. _South: http://south.aeracode.org/ticket/586
.. _bug #807653: https://bugs.launchpad.net/rpc4django/+bug/807653
.. _#807628: https://bugs.launchpad.net/rpc4django/+bug/807628

**Version 0.1.8 (26 October 2010)**

- Added cross referenced Sphinx_ based documentation
- Fixed `bug #570852`_ which caused incompatibilities with MongoDB because
  of the name class with the variable ``is_rpcmethod``.
- Fixed `bug #658788`_ which caused CSRF issues with 
  :meth:`serve_rpc_request <rpc4django.views.serve_rpc_request>`.
- Added :ref:`out of the box authentication <ootb_auth>` as per the 
  blueprint_ on Launchpad.

.. _Sphinx: http://sphinx.pocoo.org
.. _bug #570852: https://bugs.launchpad.net/rpc4django/+bug/570852
.. _bug #658788: https://bugs.launchpad.net/rpc4django/+bug/658788
.. _blueprint: https://blueprints.launchpad.net/rpc4django/+spec/handle-authentication

**Version 0.1.7 (19 January 2010)**

- Fixed a bug relating to CSRF
- Added feature to allow recursive imports of RPC methods

**Version 0.1.6 (13 January 2010)**

- Changed the XMLRPC dispatcher to allow sending 
  `nil <http://ontosys.com/xml-rpc/extensions.php>`_ which translates to the 
  Python ``None``. This was already allowed with JSONRPC
- Cross site request forgery (CSRF_) framework support
- Added cross domain 
  `access control <https://developer.mozilla.org/en/HTTP_access_control>`_
- Added unit tests for base64 encoded binary
- Added access to HttpRequest object form inside a called RPC method

.. _CSRF: http://docs.djangoproject.com/en/dev/ref/contrib/csrf/

**Version 0.1.5 (4 October 2009)**

- Authenticated view that ties in with Django's 
  `auth <http://docs.djangoproject.com/en/dev/topics/auth>`_ system
- Added unicode unit test cases to verify that RPC4Django supports 
  unicode (it does!)
- Added `authenticated demo site <https://rpcauth.davidfischer.name>`_ 
  (user = pass = rpc4django, self signed certificate)
- Improved the documentation stylesheet 

**Version 0.1.4 (31 August 2009)**

- Provided a workaround for the bug relating to 
  `Django Bug #6681 <http://code.djangoproject.com/ticket/6681>`_.
- Provided the settings.py option :envvar:`RPC4DJANGO_RESTRICT_REST` which 
  forces RPC4Django to not attempt to convert any of the method summary 
  docstrings to restructured text.

**Version 0.1.3 (15 July 2009)**

- Fixed a serious bug where RPC4Django relied on 
  ``request.META['CONTENT_TYPE']`` to be set by the web server
- Added generator tag to the template with RPC4Django and the version
- Renamed ``RPC4DJANGO_RESTRICT_DOCUMENTATION`` to 
  :envvar:`RPC4DJANGO_RESTRICT_METHOD_SUMMARY` for clarity
- Built out the example better so that it could be deployed as a 
  `demo <http://rpc4django.davidfischer.name>`_ without modification
- Improved JSON output formatting to be consistent with 
  SimpleXMLRPCDispatcher's XML output

**Version 0.1.2 (13 July 2009)**

- Improved unit testing including adding support for 
  `testing views <http://docs.djangoproject.com/en/dev/topics/testing/#making-requests>`_
- Fixed a minor bug involving the incorrect use of ``xmlrpclib.Fault`` which 
  was causing some errors to be reported with the wrong error message
- Fetched the URL for the simple method descriptor using 
  `reverse() <http://docs.djangoproject.com/en/dev/topics/http/urls/#reverse>`_
- Enabled testing an RPC method directly from the method summary
- Fixed some failing unit tests on older python versions

**Version 0.1.1 (11 July 2009)**

- Improved documentation by integrating 
  `reST <http://docutils.sourceforge.net/rst.html>`_
- Allowed reST markup in rpcmethod docstrings
- Fix easy_install problems related to django templates
- Tested version compatibility
- Allowed analyzing post data when content-type cannot tell whether the 
  data is XML or JSON

**Version 0.1.0 (6 July 2009)**

- First version of RPC4Django
