Ejemplo n.º 1
0
 public MaterialFile(string author, string description, string link, string rootFolder, MaterialFileType materialFileType, DateTime date)
 {
     Author           = author;
     Description      = description;
     Link             = link;
     RootFolder       = rootFolder;
     MaterialFileType = materialFileType;
     Date             = date;
 }
Ejemplo n.º 2
0
        /// <summary>
        /// Returns all the student's school material files
        /// </summary>
        /// <returns>An array of MaterialFile objects that contain all the file data</returns>
        public async Task <MaterialFile[]> GetFilesAsync()
        {
            HttpResponseMessage msg = await _http.GetAsync("https://web.spaggiari.eu/fml/app/default/didattica_genitori.php");

            HtmlDocument doc = new HtmlDocument();

            doc.LoadHtml(await msg.Content.ReadAsStringAsync());
            HtmlNode[]          dataTableNodes = doc.GetElementbyId("data_table").ChildNodes.ToArray();
            List <MaterialFile> files          = new List <MaterialFile>();
            string currentAuthor = string.Empty;
            string currentFolder = string.Empty;

            for (int i = 10; i < dataTableNodes.Length; i++)
            {
                bool isFileNode =
                    dataTableNodes[i].HasClass("row") &&
                    dataTableNodes[i].HasClass("contenuto");

                bool isFolder =
                    dataTableNodes[i].HasClass("row") &&
                    dataTableNodes[i].HasClass("row_parent");

                bool isAuthor =
                    dataTableNodes[i].GetAttributeValue("style", "none") == "height: 40px;";


                if (isAuthor)
                {
                    foreach (HtmlNode node in dataTableNodes[i].ChildNodes)
                    {
                        bool isAuthorNode =
                            node.GetAttributeValue("colspan", "none") == "12";

                        if (isAuthorNode)
                        {
                            currentAuthor = node.InnerText.Trim();
                        }
                    }
                }

                if (isFolder)
                {
                    foreach (HtmlNode node in dataTableNodes[i].ChildNodes)
                    {
                        bool isFolderNode =
                            node.GetAttributeValue("colspan", "none") == "44" &&
                            node.HasClass("folder");
                        if (isFolderNode)
                        {
                            currentFolder = node.ChildNodes[0].InnerText.Trim();
                        }
                    }
                }

                if (isFileNode)
                {
                    string           description      = string.Empty;
                    string           link             = string.Empty;
                    MaterialFileType materialFileType = MaterialFileType.File;
                    DateTime         date             = DateTime.MinValue;
                    foreach (HtmlNode node in dataTableNodes[i].ChildNodes)
                    {
                        bool isContent =
                            node.GetAttributeValue("colspan", "none") == "36" &&
                            node.HasClass("contenuto_desc");
                        bool isButton =
                            node.GetAttributeValue("colspan", "none") == "4" &&
                            node.HasClass("contenuto_action");

                        if (isContent)
                        {
                            foreach (HtmlNode subNode in node.ChildNodes[1].ChildNodes)
                            {
                                bool isDescription =
                                    subNode.HasClass("row_contenuto_desc") &&
                                    subNode.HasClass("font_size_16");
                                bool isDate =
                                    !subNode.HasClass("row_contenuto_desc") &&
                                    subNode.HasClass("font_size_9");

                                if (isDescription)
                                {
                                    description = subNode.InnerText.Trim();
                                }
                                if (isDate)
                                {
                                    date = DateTime.ParseExact(subNode.InnerText.Replace("condiviso il: ", "").Trim(), "dd-MM-yyyy HH:mm:ss", null);
                                }
                            }
                        }
                        if (isButton)
                        {
                            bool isLink = node.ChildNodes[1].HasClass("action_link");
                            bool isFile = node.ChildNodes[1].HasClass("action_download");
                            if (isLink)
                            {
                                link             = node.ChildNodes[1].GetAttributeValue("ref", "none");
                                materialFileType = MaterialFileType.Link;
                            }
                            if (isFile)
                            {
                                link             = $"https://web.spaggiari.eu/fml/app/default/didattica_genitori.php?a=downloadContenuto&contenuto_id={node.ChildNodes[1].GetAttributeValue("contenuto_id", "none")}&cksum={node.ChildNodes[1].GetAttributeValue("cksum", "none")}";
                                materialFileType = MaterialFileType.File;
                            }
                        }
                    }
                    files.Add(new MaterialFile(currentAuthor, description, link, currentFolder, materialFileType, date));
                }
            }
            return(files.ToArray());
        }