API Docs for: 0.2.2
Show:

File: src\R.RenderServer.js

module.exports = function(R) {
    var co = require("co");
    var _ = require("lodash");
    var assert = require("assert");
    var url = require("url");

    /**
    * <p>Simply provides an specified App for the RenderServer</p>
    * <p>Provides instance of App </p>
    * <ul>
    * <li> RenderServer.middleware => compute all React Components with data and render the corresponding HTML for the requesting client </li>
    * </ul>
    * @class R.RenderServer
    */
    var RenderServer = function RenderServer(App) {
        R.Debug.dev(function() {
            assert(R.isServer(), "R.RenderServer(...): should only be called in the server.");
        });
        this._app = new App();
        this.middleware = R.scope(this.middleware, this);
    };

    _.extend(RenderServer.prototype, /** @lends R.RenderServer.Prototype */ {
        _app: null,
        /**
        * <p> Call the renderToStringInServer from R.App function </p>
        * @method middleware
        */
        middleware: function middleware(req, res) {
            co(function*() {
                return yield this._app.renderToStringInServer(req);
            }).call(this, function(err, val) {
                if(err) {
                    if(R.Debug.isDev()) {
                        return res.status(500).json({ err: err.toString(), stack: err.stack });
                    }
                    else {
                        return res.status(500).json({ err: err.toString() });
                    }
                }
                else {
                    res.status(200).send(val);
                }
            });
        },
    });

    return RenderServer;
};