R: Class 'Middleware'

Middleware-class {Rook} | R Documentation

## Class `Middleware`

### Description

An abstract class for building Rook Middleware applications. `Middleware` applications either handle the incoming web request or hand off the request to the Rook app defined in the field of the same name.

### Methods

`set_app(app)`:

  `app` is a `Rook` application that will handle the request if this Middleware app does not.

### See Also

The following classes implement Middleware: `Brewery` and `Static`.

### Examples

    # Middleware applications are typically instantiated in the argument list of
    # Builder$new(), but here is stand-alone example.
    #
    # Once your browser loads the app, you will see something like this in
    # your location bar: http://127.0.0.1:28649/custom/middle. Add '/foo'
    # onto the end of that and reload.

    setRefClass(
        'FooBar',
        contains = 'Middleware',
        methods = list(
            initialize = function(...){
                # app to defer to.
                callSuper(app=App$new(function(env){
                    res <- Response$new()
                    res$write("<h1>I'm the deferred app.</h1>")
                    res$finish()
                }))
            },
            call = function(env){
                req <- Request$new(env)
                res <- Response$new()
                if (length(grep('foo',req$path_info()))){
                    res$write("<h1>I'm the middleware app.</h1>")
                    return(res$finish())
                } else {
                    app$call(env)
                }
            }
        )
    )
    s <- Rhttpd$new()
    ## Not run:
    s$start(quiet=TRUE)

    ## End(Not run)
    s$add(name="middle",app=getRefClass('FooBar')$new())
    ## Not run:
    s$browse('middle') # Opens a browser window to the app.

    ## End(Not run)
    s$remove(all=TRUE)
    rm(s)

[Package Rook version 1.1-1 Index]