Beispiel #1
0
        /// <summary>
        ///     do a breadth-first search to find all nodes reachable from item.
        ///     edgeFunction determines the nodes directly reachable from any
        ///     given item.
        /// </summary>
        /// <param name="item"></param>
        /// <param name="closureFunction"></param>
        /// <returns></returns>
        private static ICollection <T> GetClosure(T item, EdgeFunction edgeFunction)
        {
            var closure = new QueueHashSet <T>();
            var queue   = new QueueHashSet <T>();

            foreach (var i in edgeFunction(item))
            {
                queue.Enqueue(i);
            }

            while (queue.Count > 0)
            {
                // get first element in queue
                var i = queue.Dequeue();
                if (!closure.Contains(i))
                {
                    closure.Enqueue(i);
                    foreach (var j in edgeFunction(i))
                    {
                        if (!queue.Contains(j) &&
                            !closure.Contains(j))
                        {
                            queue.Enqueue(j);
                        }
                    }
                }
            }

            return(closure.Queue);
        }
        internal AuthlambdaFunctionsStack(Construct scope, string id, IStackProps props = null) : base(scope, id, props)
        {
            /*
             * loginHandler = new EdgeFunction(this, "loginHandler", new EdgeFunctionProps() {
             *  Code = Code.FromAsset("src/lambdaEdge"),
             *  Handler = "login.handler",
             *  Runtime = Runtime.NODEJS_12_X,
             *  Description = "Login handler Lambda@Edge"
             * });
             *
             * checkAuthHandler = new EdgeFunction(this, "checkAuthHandler", new EdgeFunctionProps() {
             *  Code = Code.FromAsset("src/lambdaEdge"),
             *  Handler = "checkAuth.handler",
             *  Runtime = Runtime.NODEJS_12_X,
             *  Description = "Login handler Lambda@Edge"
             * });
             */

            parseAuthHandler = new EdgeFunction(this, "parseAuthHandler", new EdgeFunctionProps()
            {
                Code        = Code.FromAsset("src/lambda-edge/parse-auth/dist"),
                Handler     = "bundle.handler",
                Runtime     = Runtime.NODEJS_12_X,
                Description = "parseAuthHandler Lambda@Edge",
            });

            checkAuthHandler = new EdgeFunction(this, "checkAuthHandler", new EdgeFunctionProps()
            {
                Code        = Code.FromAsset("src/lambda-edge/check-auth/dist"),
                Handler     = "bundle.handler",
                Runtime     = Runtime.NODEJS_12_X,
                Description = "checkAuthHandler Lambda@Edge",
            });

            httpHeadersHandler = new EdgeFunction(this, "httpHeadersHandler", new EdgeFunctionProps()
            {
                Code        = Code.FromAsset("src/lambda-edge/http-headers/dist"),
                Handler     = "bundle.handler",
                Runtime     = Runtime.NODEJS_12_X,
                Description = "httpHeadersHandler Lambda@Edge",
            });

            refreshAuthHandler = new EdgeFunction(this, "refreshAuthHandler", new EdgeFunctionProps()
            {
                Code        = Code.FromAsset("src/lambda-edge/refresh-auth/dist"),
                Handler     = "bundle.handler",
                Runtime     = Runtime.NODEJS_12_X,
                Description = "refreshAuthHandler Lambda@Edge",
            });

            signOutHandler = new EdgeFunction(this, "signOutHandler", new EdgeFunctionProps()
            {
                Code        = Code.FromAsset("src/lambda-edge/sign-out/dist"),
                Handler     = "bundle.handler",
                Runtime     = Runtime.NODEJS_12_X,
                Description = "signOutHandler Lambda@Edge",
            });
        }