Exemple #1
0
        public static void Main()
        {
            var page = new PageNode();

            page.Add <StartNode>();
            page.Add <ProcessNode>();
            page.Add <DecisionNode>();
            page.Add <ProcessNode>();
            page.Add <ProcessNode>();
            page.Add <EndNode>();
            Console.WriteLine("Page run started.");
            var next = page.Execute();

            while (next != Guid.Empty)
            {
                next = page.GetNodeById(next).Execute();
                Console.WriteLine("Next: {0}", next);
                Console.ReadLine();
            }
            Console.WriteLine("Page run ended.");
            Console.WriteLine();

            Console.Clear();
            Console.WriteLine("Serializing Object to XML . . .");
            Console.WriteLine();
            var a = PageSerializer.ToString(page);

            Console.WriteLine(a);
            Console.WriteLine();
            Console.WriteLine("Serializing Object to XML completed.");
            Console.WriteLine("Deserializing XML to Object . . .");
            var b = PageSerializer.ToString(PageSerializer.ToObject <PageNode>(a));

            Console.WriteLine("Deserializing XML to Object completed.");
            Console.WriteLine("Matched: {0}", a == b);
            Console.WriteLine();
            Console.WriteLine();
            Console.WriteLine("Press any key to run Element Inspector . . . ");
            Console.ReadKey();
            Console.Clear();

            var desktop = new Desktop();

            desktop.LaunchChrome("https://example.com");
            desktop.LaunchEdge("https://example.com");
            while (true)
            {
                var query = desktop.Inspect();
                var els   = desktop.Query(query);
                Console.WriteLine("{0} match found..", els.Count());
                Console.WriteLine();
                foreach (var el in els)
                {
                    Console.WriteLine("{0} - {1}", el.Path, el.Bounds);
                }
            }
        }
        public HttpResponseMessage GetFeedPosts([FromBody] PageSerializer pageSerializer)
        {
            try
            {
                int pageNumber = pageSerializer.PageNumber, pageSize = pageSerializer.PageSize;
                var posts = new List <Models.Post>();

                var foundPosts = Entities.FeedPostsGet(CurrentIdentity.UserId, pageNumber, pageSize).ToList();
                var totalItems = foundPosts.First().TotalItems;

                foreach (var foundPost in foundPosts)
                {
                    var foundComments = Entities.PostCommentsGet(foundPost.PostId).ToList();

                    posts.Add(PackPost(foundPost, foundComments));
                }

                foreach (var post in posts)
                {
                    //post.Likes = Entities.Likes.Count(l => l.PostId == post.PostId);
                    //post.Liked =
                    //    Entities.Likes.SingleOrDefault(
                    //        l => l.UserId == CurrentIdentity.UserId.Value && l.PostId == post.PostId) != null;

                    foreach (var comment in post.Comments)
                    {
                        comment.Likes = Entities.Likes.Count(l => l.CommentId == comment.CommentId);
                        comment.Liked = Entities.Likes.SingleOrDefault(l => l.UserId == CurrentIdentity.UserId.Value && l.CommentId == comment.CommentId) != null;
                    }
                }

                int?nextPage = (pageNumber * pageSize) < totalItems ? ++pageNumber : -1;
                nextPage = nextPage == -1 ? null : nextPage;

                var res = new List <object> {
                    posts, nextPage
                };
                return(Request.CreateResponse(HttpStatusCode.OK, new ResponseMessage
                {
                    Success = true,
                    Data = res,
                    Message = "Posts retrieved."
                }));
            }
            catch (Exception ex)
            {
                return(Request.CreateResponse(HttpStatusCode.InternalServerError, new ResponseMessage
                {
                    Success = false,
                    Message = ex.Message
                }));
            }
        }
        public override void Transform(Engine engine, Package package)
        {
            GeneralUtils.TimedLog("start Transform");
            Package = package;
            Engine  = engine;
            XmlSerializer serializer;

            Dynamic.Page page;
            bool         hasOutput = HasPackageValue(package, "Output");

            if (hasOutput)
            {
                GeneralUtils.TimedLog("start retrieving previous Output from package");
                String inputValue = package.GetValue("Output");
                GeneralUtils.TimedLog("start creating serializer");
                serializer = new PageSerializer();
                GeneralUtils.TimedLog("finished creating serializer");
                TextReader tr = new StringReader(inputValue);
                GeneralUtils.TimedLog("start deserializing from package");
                page = (Dynamic.Page)serializer.Deserialize(tr);
                GeneralUtils.TimedLog("finished deserializing from package");
            }
            else
            {
                GeneralUtils.ResetLogTimer();
                GeneralUtils.TimedLog("Could not find 'Output' in the package");
                GeneralUtils.TimedLog("Start creating dynamic page from current page in the package");
                page = GetDynamicPage(Manager);
                GeneralUtils.TimedLog("Finished creating dynamic page with title " + page.Title);
                GeneralUtils.TimedLog("start creating serializer");
                serializer = new PageSerializer();
                GeneralUtils.TimedLog("finished creating serializer");
            }

            try
            {
                GeneralUtils.TimedLog("starting transformPage");
                TransformPage(page);
                GeneralUtils.TimedLog("finished transformPage");
            }
            catch (StopChainException)
            {
                GeneralUtils.TimedLog("caught stopchainexception, will not write current page back to the package");
                return;
            }
            StringWriter sw     = new StringWriter();
            MemoryStream ms     = new MemoryStream();
            XmlWriter    writer = new XmlTextWriterFormattedNoDeclaration(ms, Encoding.UTF8);
            string       outputValue;
            //Create our own namespaces for the output
            XmlSerializerNamespaces ns = new XmlSerializerNamespaces();

            //Add an empty namespace and empty value
            ns.Add("", "");

            serializer.Serialize(writer, page, ns);
            outputValue = Encoding.UTF8.GetString(ms.ToArray());

            // for some reason, the .NET serializer leaves an invalid character at the start of the string
            // we will remove everything up to the first < so that the XML can be deserialized later!
            Regex re = new Regex("^[^<]+");

            outputValue = re.Replace(outputValue, "");

            if (hasOutput)
            {
                Item outputItem = package.GetByName("Output");
                package.Remove(outputItem);
                package.PushItem(Package.OutputName, package.CreateStringItem(ContentType.Xml, outputValue));
            }
            else
            {
                package.PushItem(Package.OutputName, package.CreateStringItem(ContentType.Xml, outputValue));
            }

            GeneralUtils.TimedLog("finished Transform");
        }
        public override void Transform(Engine engine, Package package)
        {
            GeneralUtils.TimedLog("start Transform");
            Package = package;
            Engine = engine;
            XmlSerializer serializer;

            Dynamic.Page page;
            bool hasOutput = HasPackageValue(package, "Output");
            if (hasOutput)
            {
                GeneralUtils.TimedLog("start retrieving previous Output from package");
                String inputValue = package.GetValue("Output");
                GeneralUtils.TimedLog("start creating serializer");
                serializer = new PageSerializer();
                GeneralUtils.TimedLog("finished creating serializer");
                TextReader tr = new StringReader(inputValue);
                GeneralUtils.TimedLog("start deserializing from package");
                page = (Dynamic.Page)serializer.Deserialize(tr);
                GeneralUtils.TimedLog("finished deserializing from package");
            }
            else
            {
                GeneralUtils.ResetLogTimer();
                GeneralUtils.TimedLog("Could not find 'Output' in the package");
                GeneralUtils.TimedLog("Start creating dynamic page from current page in the package");
                page = GetDynamicPage(Manager);
                GeneralUtils.TimedLog("Finished creating dynamic page with title " + page.Title);
                GeneralUtils.TimedLog("start creating serializer");
                serializer = new PageSerializer();
                GeneralUtils.TimedLog("finished creating serializer");
            }

            try
            {
                GeneralUtils.TimedLog("starting transformPage");
                TransformPage(page);
                GeneralUtils.TimedLog("finished transformPage");
            }
            catch (StopChainException)
            {
                GeneralUtils.TimedLog("caught stopchainexception, will not write current page back to the package");
                return;
            }
            StringWriter sw = new StringWriter();
            MemoryStream ms = new MemoryStream();
            XmlWriter writer = new XmlTextWriterFormattedNoDeclaration(ms, Encoding.UTF8);
            string outputValue;
            //Create our own namespaces for the output
            XmlSerializerNamespaces ns = new XmlSerializerNamespaces();

            //Add an empty namespace and empty value
            ns.Add("", "");

            serializer.Serialize(writer, page, ns);
            outputValue = Encoding.UTF8.GetString(ms.ToArray());

            // for some reason, the .NET serializer leaves an invalid character at the start of the string
            // we will remove everything up to the first < so that the XML can be deserialized later!
            Regex re = new Regex("^[^<]+");
            outputValue = re.Replace(outputValue, "");

            if (hasOutput)
            {
                Item outputItem = package.GetByName("Output");
                package.Remove(outputItem);
                package.PushItem(Package.OutputName, package.CreateStringItem(ContentType.Xml, outputValue));
            }
            else
            {
                package.PushItem(Package.OutputName, package.CreateStringItem(ContentType.Xml, outputValue));
            }

            GeneralUtils.TimedLog("finished Transform");

        }