Esempio n. 1
0
File: mount.js Progetto: olegp/stick
            match: function(req) {
                var host = req.headers.get("host") || "";
                var path = req.pathInfo || "/";

                return (!spec.host || (host && strings.endsWith(host, spec.host)))
                    && (!spec.path || path === spec.path
                                   || (path && strings.startsWith(path, spec.canonicalPath)));
            },
Esempio n. 2
0
File: mount.js Progetto: olegp/stick
    app.mount = function(spec, target) {
        if (typeof spec === "string") {
            spec = {path: spec};
        } else if (!spec) {
            throw new Error("Missing spec");
        }
        if (spec.path) {
            // set up canonical path with trailing slash
            if (strings.endsWith(spec.path, "/")) {
                spec.canonicalPath = spec.path;
                spec.path = spec.path.slice(0, -1);
            } else {
                spec.canonicalPath = spec.path + "/";
            }
        }

        spec.host = spec.host ? String(spec.host) : null;
        var resolved = resolveApp(target);

        // add mount info to mounted app for reverse lookup
        if (!resolved.mountInfo) {
            resolved.mountInfo = [];
        }
        resolved.mountInfo.push({parent: app, path: spec.path, host: spec.host});

        mounts.push({
            match: function(req) {
                var host = req.headers.get("host") || "";
                var path = req.pathInfo || "/";

                return (!spec.host || (host && strings.endsWith(host, spec.host)))
                    && (!spec.path || path === spec.path
                                   || (path && strings.startsWith(path, spec.canonicalPath)));
            },
            path: spec.path,
            canonicalPath: spec.canonicalPath,
            app: resolved
        });
        mounts.sort(mostSpecificPathFirst);
    };