Metadata-Version: 1.1
Name: WebDispatch
Version: 1.3
Summary: dispatch request on wsgi application.
Home-page: http://github.com/aodag/WebDispatch
Author: Atsushi Odagiri
Author-email: aodagx@gmail.com
License: MIT
Description: WebDispatch
        ============================
        
        .. image:: https://travis-ci.org/aodag/WebDispatch.svg?branch=master
           :target: https://travis-ci.org/aodag/WebDispatch
        
        .. image:: https://coveralls.io/repos/aodag/WebDispatch/badge.png?branch=master 
           :target: https://coveralls.io/r/aodag/WebDispatch?branch=master 
        
        .. image:: https://pypip.in/wheel/WebDispatch/badge.png
            :target: https://pypi.python.org/pypi/WebDispatch/
            :alt: Wheel Status
        
        WebDispatch is dispatcher collection for wsgi application. 
        That has no dependency to exsiting frameworks, but works fine with `WebOb <http://www.webob.org>`_.
        
        Dispatch and Generate URL
        -----------------------------------------------
        
        dispatch with url patterns.
        
        example helo application::
        
          >>> from webob.dec import wsgify
          >>> @wsgify
          ... def greeting(request):
          ...     return "Hello, %s" % request.urlvars['name']
        
        create and configure URL Dispatcher::
        
          >>> from webdispatch import URLDispatcher
          >>> dispatcher = URLDispatcher()
          >>> dispatcher.add_url('top', '/hello/{name}', greeting)
        
        invoke dispatcher as WSGI Application::
        
          >>> from webob import Request
          >>> req = Request.blank('/hello/webdispatch')
          >>> res = req.get_response(dispatcher)
          >>> res.body
          b'Hello, webdispatch'
        
        
        Wildcard
        +++++++++++++++
        
        You can use wildcard after last slash.
        Pattern with wildcard consumes paths before the wildcard, (and make that new script_name,)
        and remained paths becomes new path_info.
        
        ::
        
          >>> @wsgify
          ... def with_pathinfo(request):
          ...     return "Hello, %s" % request.path_info
          >>> dispatcher.add_url('top', '/with_pathinfo/*', with_pathinfo)
          >>> req = Request.blank('/with_pathinfo/this/is/pathinfo')
          >>> res = req.get_response(dispatcher)
          >>> res.body
          b'Hello, this/is/pathinfo'
        
        Type Converter
        ++++++++++++++++++
        
        You can specify converter with varname below ":".
        
        ::
        
          >>> @wsgify
          ... def add(request):
          ...     result = request.urlvars['v1'] + request.urlvars['v2']
          ...     return "result, %d" % result
          >>> dispatcher.add_url('add', '/add/{v1:int}/{v2:int}', add)
          >>> req = Request.blank('/add/1/2')
          >>> res = req.get_response(dispatcher)
          >>> res.body
          b'result, 3'
        
        default converters are defined as bellow::
        
           DEFAULT_CONVERTERS = {
               'int': int,
               'date': lambda s: datetime.strptime(s, '%Y-%m-%d'),
               'date_ym': lambda s: datetime.strptime(s, '%Y-%m'),
           }
        
        
        Action Dispatch
        -------------------------------------------------
        
        ActionDispatcher invokes object method with action name from urlvars.
        
        action handler class::
        
          >>> class MyHandler(object):
          ...     @wsgify
          ...     def greeting(self, request):
          ...         return "Hello"
        
        create and configure ActionDispatcher::
        
          >>> from webdispatch import ActionDispatcher
          >>> actiondispatcher = ActionDispatcher()
          >>> actiondispatcher.register_actionhandler(MyHandler)
        
        add action url with urlvars named action::
        
          >>> dispatcher.add_url('action_dispatch', '/actions/{action}', actiondispatcher)
        
        invoke wsgi appclication.::
        
          >>> req = Request.blank('/actions/greeting')
          >>> res = req.get_response(dispatcher)
          >>> res.body
          b'Hello'
        
        Method Dispatch
        -------------------------------------
        
        dispatch by HTTP METHOD restfully.
        
        use ``register_app`` decorator::
        
          >>> from webdispatch import MethodDispatcher
          >>> restapp = MethodDispatcher()
          >>> @restapp.register('get')
          ... @wsgify
          ... def get_hello(request):
          ...    return "Get Hello"
          >>> @restapp.register('post')
          ... @wsgify
          ... def post_hello(request):
          ...    return "Post Hello"
        
        
        
        or use ``registe_app`` method::
        
          >>> from webdispatch import MethodDispatcher
          >>> restapp = MethodDispatcher()
          >>> restapp.register_app('get', get_hello)
          >>> restapp.register_app('post', post_hello)
        
        Each applications are registered with HTTP Method name.
        
        invoke WSGI application::
        
          >>> req = Request.blank('/')
          >>> res = req.get_response(restapp)
          >>> res.body
          b'Get Hello'
        
        extra_environ
        ---------------------------
        
        ``DispatchBase`` accepts ``extra_environ`` argument.
        Dispatcher adds that argument to wsgi environ by request.
        
        Changes
        =========================
        
        
        1.3
        -------------------------
        
        - added decrator API
        
        1.2
        -------------------------
        
        - added extra_environ argument to constructer
        - drop python2.6 tests
        - drop dependency for python2.6
        - added type converter for url vars
        
        
        1.1
        -------------------------
        
        - added extra_environ method to DispatchBase class
        - added support for Python 3.4
        
        1.0.1
        ------------------------
        
        - include char of "-" to urlmatch words `#9 <https://github.com/aodag/WebDispatch/issues/9>`_
        
        1.0
        ------------------------
        
        - no changes
        
        1.0b4
        ------------------------
        
        - fix response body to bytes
        
        1.0b3
        ------------------------
        
        - fix some bugs
        
        
        1.0b2
        -----------------------
        
        - fix setup bug
        
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Web Environment
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Topic :: Internet :: WWW/HTTP :: WSGI
Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Middleware
Classifier: Topic :: Software Development :: Libraries
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3.2
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.3
Classifier: Programming Language :: Python :: 3.4
