Beispiel #1
0
 /* (non-Javadoc)
  * @see com.itextpdf.tool.xml.parser.State#process(int)
  */
 public virtual void Process(char character)
 {
     if (character == '/')
     {
         // self closing tag detected
         parser.SelectState().SelfClosing();
     }
     else if (character == '=')
     {
         this.parser.Memory().CurrentAttr(this.parser.BufferToString());
         this.parser.Flush();
         this.parser.SelectState().AttributeValue();
     }
     else if (HTMLUtils.IsWhiteSpace(character))
     {
         SetAttribute();
     }
     else if (character == '>')
     {
         CheckAttributeWithNoValue();
         this.parser.StartElement();
         this.parser.Flush();
         this.parser.SelectState().InTag();
     }
     else if (this.parser.Memory().HasCurrentAttribute() && !HTMLUtils.IsWhiteSpace(character))
     {
         // assume attribute with no value, example tag <?formServer defaultPDFRenderFormat acrobat8.1dynamic?>
         this.parser.Memory().PutCurrentAttrValue("");
         this.parser.Append(character);
     }
     else
     {
         this.parser.Append(character);
     }
 }
Beispiel #2
0
        public void ReadFAQSite()
        {
            //Fallback solution if error or website not available
            //System.Diagnostics.Debug.WriteLine("doc == null: " + (doc == null));
            if (doc == null)
            {
                //System.Diagnostics.Debug.WriteLine("doc is null. use default faq document");

                var m_faqWebsite = Localization.Get("FAQ_link_local");

                var    assembly = typeof(FAQReader).GetTypeInfo().Assembly;
                Stream stream   = assembly.GetManifestResourceStream(m_faqWebsite);

                //System.Diagnostics.Debug.WriteLine("assembly: " + assembly + " | stream Length: " + stream.Length);

                doc = new HtmlDocument();
                doc.Load(stream);
            }

            //TODO Wrap this in try/catch. Request from json instead, if possible
            var m_faqItems = from node in doc.DocumentNode.Descendants("div").Where(x => x.Attributes.Contains("class") && x.Attributes["class"].Value == "faq-card")
                             select new _FAQItem
            {
                Question = HTMLUtils.ConvertHTMLToPlainText(node.Descendants("div").FirstOrDefault(x => x.Attributes.Contains("class") && x.Attributes["class"].Value == "valign faq-title").InnerHtml),
                Answer   = HTMLUtils.ConvertHTMLToPlainText(node.Descendants("div").FirstOrDefault(x => x.Attributes.Contains("class") && x.Attributes["class"].Value == "answer-answer faq-answer").InnerHtml),
            };

            faqItems = m_faqItems.Reverse();
        }
Beispiel #3
0
        private async Task <Course> GetCourseECTSPoints(Course course, bool clean = false)
        {
            var page = await HTMLUtils.GetPage(course.Url);

            CoursesParsers.GetCourseECTSandGroup(page, course);
            return(course);
        }
Beispiel #4
0
        public async Task <List <Course> > GetUserPlanForCurrentSemester(bool IsOffline, bool clean = false)
        {
            if (IsOffline)
            {
                var fileService = DependencyService.Get <ISaveAndLoad>();
                if (fileService == null || !fileService.FileExists("Schedule1.txt"))
                {
                    throw new ArxiusFileException("Brak zapisanego offline planu, aby go wygenerować, wejdź na widok planu zajęć");
                }
                else
                {
                    var page = await fileService.LoadTextAsync("Schedule1.txt");

                    if (page == null || page.Length == 0)
                    {
                        throw new ArxiusException();
                    }
                    return(CoursesParsers.GetUserPlanForCurrentSemester(page));
                }
            }
            return(await Cache.Get("GetUserPlanForCurrentSemester", async() =>
            {
                var page = await HTMLUtils.GetPage("/records/schedule/");
                var fileService = DependencyService.Get <ISaveAndLoad>();
                try
                {
                    await fileService.SaveTextAsync("Schedule1.txt", page);
                }
                catch
                {
                }
                return CoursesParsers.GetUserPlanForCurrentSemester(page);
            }, clean));
        }
 private static Grade ParseGrade(HtmlNode container, int row)
 {
     return(Grade.Deserialize((new[] { 3, 6, 8, 9, 10, 11 }).Select((col) => {
         var parsed = HTMLUtils.ParseHTML(container, String.Format("tr[{0}]/td[{1}]", row, col));
         return parsed.FirstOrDefault()?.Replace("&nbsp;", "");
     })));
 }
Beispiel #6
0
 private static ExamRoom ParseRoom(HtmlNode container, int row)
 {
     return(ExamRoom.Deserialize((new[] { 2, 4, 5, 6 }).Select((col) => {
         var parsed = HTMLUtils.ParseHTML(container, String.Format("tr[{0}]/td[{1}]", row, col));
         return parsed.FirstOrDefault()?.Replace("&nbsp;", "");
     })));
 }
Beispiel #7
0
        public async Task <(string username, MagicDropWinner winner)> GetLastWinnerAsync()
        {
            var response = await http.GetAsync(MagicDropApiEndpoints.FreeCase);

            var html = await response.Content.ReadAsStringAsync();

            return(await HTMLUtils.GetMagicDropWinner(html));
        }
Beispiel #8
0
 public async Task <UserPage> GetUserPage(bool clean = false)
 {
     return(await Cache.Get("GetUserPage", async() =>
     {
         var page = await HTMLUtils.GetPage(string.Format(CrossLayerData.BaseAddress, "/users/"));
         return UtilsParsers.GetUserPage(page);
     }, clean));
 }
Beispiel #9
0
 public async Task <List <Employee> > GetEmployees(bool clean = false)
 {
     return(await Cache.Get("GetEmployees", async() =>
     {
         var page = await HTMLUtils.GetPage("/users/employees/");
         return UtilsParsers.GetEmployeesList(page);
     }, clean));
 }
Beispiel #10
0
 public async Task <Tuple <int, int, List <Student> > > GetStudentsList(_Class _class, bool clean = false)
 {
     return(await Cache.Get(new { c = _class, a = "GetStudentsList" }, async() =>
     {
         var page = await HTMLUtils.GetPage(_class.ListUrl);
         return CoursesParsers.GetStudentsList(page);
     }, clean));
 }
Beispiel #11
0
        public async Task <bool> EnrollOrUnroll(_Class _class, bool clean = false)
        {
            var response = await HTMLUtils.PostString("/records/set-enrolled", string.Format("csrfmiddlewaretoken={0}&group={1}&enroll={2}", HTMLUtils.csrfToken, _class.enrollmentId, (!_class.IsSignedIn).ToString().ToLower()));

            var sigingResult = CoursesParsers.IsSignedIn(response, _class);

            return(sigingResult.Item1 != _class.IsSignedIn); //if differs, then some error must have occured
        }
Beispiel #12
0
 public async Task <List <Course> > GetAllCourses(bool clean = false)
 {
     return(await Cache.Get("GetAllCourses", async() =>
     {
         var page = await HTMLUtils.GetPage("/courses/");
         return CoursesParsers.GetAllCourses(page, false);
     }, clean));
 }
Beispiel #13
0
 public async Task <List <News> > GetFeedPage(int pageNumber = 1, bool clean = false)
 {
     return(await Cache.Get(new { a = "GetFeedPage", p = pageNumber }, async() =>
     {
         var s1 = string.Format(CrossLayerData.BaseAddress, "/news/?page={0}");
         var page = await HTMLUtils.GetPage(string.Format(s1, pageNumber));
         return UtilsParsers.GetFeedElementsContent(page);
     }, clean));
 }
Beispiel #14
0
 public async Task <Employee> GetEmployeeDetails(Employee employee, bool clean = false)
 {
     return(await Cache.Get(new { a = "GetEmployeeDetails", p = employee.Name }, async() =>
     {
         var page = await HTMLUtils.GetPage(employee.Url);
         return UtilsParsers.GetEmployeeDetails(page, employee);
     }
                            , clean));
 }
Beispiel #15
0
 public async Task <List <GenericGroupedCollection <string, string> > > GetImportantDates(bool clean = false)
 {
     return(await Cache.Get("GetImportantDates", async() =>
     {
         var page = (await HTMLUtils.GetPageUnAuthorised(@"http://ii.uni.wroc.pl/dla-studenta/kalendarz")).Replace("\n", string.Empty);
         return UtilsParsers.GetImportantDates(page);
     }
                            , clean));
 }
 /* (non-Javadoc)
  * @see com.itextpdf.tool.xml.parser.State#process(int)
  */
 public void Process(char character)
 {
     if (!HTMLUtils.IsWhiteSpace(character))
     {
         this.parser.Append(character);
     }
     else
     {
         this.parser.Memory().PutCurrentAttrValue(this.parser.BufferToString());
         this.parser.Flush();
         this.parser.SelectState().TagAttributes();
     }
 }
Beispiel #17
0
        /*
         * (non-Javadoc)
         *
         * @see
         * com.itextpdf.tool.xml.ITagProcessor#content(com.itextpdf.tool.xml.Tag,
         * java.util.List, com.itextpdf.text.Document, java.lang.String)
         */
        public override IList <IElement> Content(IWorkerContext ctx, Tag tag, String content)
        {
            String           sanitized = HTMLUtils.SanitizeInline(content);
            IList <IElement> l         = new List <IElement>(1);

            if (sanitized.Length > 0)
            {
                Chunk c = new ChunkCssApplier().Apply(new Chunk(sanitized), tag);
                //          NoNewLineParagraph noNewLineParagraph = new NoNewLineParagraphCssApplier(configuration).Apply(new NoNewLineParagraph(c), tag);
                l.Add(c);
            }
            return(l);
        }
Beispiel #18
0
        public override IList <IElement> Content(IWorkerContext ctx, Tag tag,
                                                 String content)
        {
            String           sanitized = HTMLUtils.SanitizeInline(content);
            IList <IElement> l         = new List <IElement>(1);

            if (sanitized.Length > 0)
            {
                Chunk c = GetCssAppliers().ChunkCssAplier.Apply(new Chunk(sanitized), tag);
                l.Add(c);
            }
            return(l);
        }
Beispiel #19
0
        public override IList <IElement> Content(IWorkerContext ctx, Tag tag, String content)
        {
            IList <IElement> l = new List <IElement>(1);

            String sanitized = HTMLUtils.SanitizeInline(content);         //TODO check this

            if (sanitized.Length > 0)
            {
                Chunk c = new ChunkCssApplier().Apply(new Chunk(sanitized), tag);
                l.Add(new Text(c, tag.CSS, null, null));
            }
            return(l);
        }
 /*
  * (non-Javadoc)
  *
  * @see com.itextpdf.tool.xml.parser.State#process(int)
  */
 public void Process(char character)
 {
     if (character == '<')
     {
         if (this.parser.BufferSize() > 0)
         {
             this.parser.Text(this.parser.Current());
         }
         this.parser.Flush();
         this.parser.SelectState().TagEncountered();
     }
     else if (character == '&')
     {
         this.parser.SelectState().SpecialChar();
     }
     else
     {
         String   tag   = this.parser.CurrentTag();
         TagState state = this.parser.CurrentTagState();
         if (noSanitize.Contains(tag) && TagState.OPEN == state)
         {
             this.parser.Append(character);
         }
         else
         {
             if (this.parser.Memory().WhitespaceTag().Length != 0)
             {
                 if (ignoreLastChars.Contains(this.parser.Memory().WhitespaceTag()))
                 {
                     parser.Memory().LastChar = ' ';
                 }
                 this.parser.Memory().WhitespaceTag("");
             }
             bool whitespace   = HTMLUtils.IsWhiteSpace(parser.Memory().LastChar);
             bool noWhiteSpace = !HTMLUtils.IsWhiteSpace(character);
             if (!whitespace || (whitespace && noWhiteSpace))
             {
                 if (noWhiteSpace)
                 {
                     this.parser.Append(character);
                 }
                 else
                 {
                     this.parser.Append(' ');
                 }
             }
             parser.Memory().LastChar = character;
         }
     }
 }
Beispiel #21
0
 /*
  * (non-Javadoc)
  *
  * @see com.itextpdf.tool.xml.parser.State#process(int)
  */
 virtual public void Process(char character)
 {
     if (character == '\'')
     {
         this.parser.SelectState().SingleQuotedAttr();
     }
     else if (character == '"')
     {
         this.parser.SelectState().DoubleQuotedAttr();
     }
     else if (!HTMLUtils.IsWhiteSpace(character))
     {
         this.parser.Append(character);
         this.parser.SelectState().UnquotedAttr();
     }
 }
Beispiel #22
0
    public override void toControl(Hashtable values)
    {
        object o = values[fieldName];

        if (o != null)
        {
            string xmlString = o.ToString();
            System.Xml.XmlDocument xmlDoc = new System.Xml.XmlDocument();
            if (!string.IsNullOrEmpty(xmlString))
            {
                xmlDoc.LoadXml(xmlString);
                System.Xml.XmlNodeList xmlNodeList = xmlDoc.DocumentElement.GetElementsByTagName(xmlNodeName);
                if (xmlNodeList.Count > 0)
                {
                    o = xmlNodeList[0].InnerXml;

                    bool found = false;
                    System.Collections.Generic.List <WFSelectValue> list = valueList.getValues(Binding.DBConn, filter, null);
                    foreach (WFSelectValue sv in list)
                    {
                        if (sv.key.Equals(o))
                        {
                            o     = sv.name;
                            found = true;
                            break;
                        }
                    }
                    if (o.ToString().Equals("0"))
                    {
                        label.Text = string.Empty;
                    }
                    else if (found || showInvalid)
                    {
                        label.Text = HTMLUtils.toHTMLText(o.ToString());
                    }
                    else
                    {
                        label.Text = string.Empty;
                    }
                    return;
                }
            }
        }
        label.Text = string.Empty;
    }
Beispiel #23
0
        public override IList <IElement> Content(IWorkerContext ctx, Tag tag, String content)
        {
            float x = -1, y = -1;

            IDictionary <String, String> attributes = tag.Attributes;

            if (attributes != null)
            {
                try{
                    if (attributes.ContainsKey(X))
                    {
                        x = int.Parse(attributes[X]);
                    }
                }catch {
                    // TODO: handle exception
                }

                try{
                    if (attributes.ContainsKey(Y))
                    {
                        y = int.Parse(attributes[Y]);
                    }
                }catch {
                    // TODO: handle exception
                }
            }

            IList <IElement> l         = new List <IElement>(1);
            String           sanitized = HTMLUtils.SanitizeInline(content); //TODO check this

            if (sanitized.Length > 0 && attributes.ContainsKey(DX) && attributes.ContainsKey(DY))
            {
                Chunk c = new ChunkCssApplier().Apply(new Chunk(sanitized), tag);
                if (x == -1 && y == -1)
                {
                    l.Add(new Text(c, tag.CSS, Split(attributes[DX]), Split(attributes[DY])));
                }
                else
                {
                    l.Add(new Text(c, x, y, tag.CSS, Split(attributes[DX]), Split(attributes[DY])));
                }
            }
            return(l);
        }
 /* (non-Javadoc)
  * @see com.itextpdf.tool.xml.parser.State#process(int)
  */
 virtual public void Process(char character)
 {
     if (character == '>')
     {
         this.parser.Memory().CurrentTag(this.parser.BufferToString());
         this.parser.EndElement();
         this.parser.Flush();
         this.parser.Memory().FlushNameSpace();
         parser.SelectState().InTag();
     }
     else if (character == ':')
     {
         this.parser.Memory().Namespace(this.parser.BufferToString());
         this.parser.Flush();
     }
     else if (!HTMLUtils.IsWhiteSpace((char)character))
     {
         this.parser.Append(character);
     }
 }
Beispiel #25
0
    private void Start()
    {
        HTMLUtils.Init();
        pages = new List <Page>(transform.GetComponentsInChildren <Page>(true));

        foreach (Page p in pages)
        {
            if (p != null)
            {
                p.Init();
            }
        }

        // Init Facebook

        User.Instance.FacebookInit();
        Loading.Instance.Show();
        WebRequest.Post(WebRequest.REQUESTTYPE.OPENAPP, iTween.Hash("os", Application.platform.ToString()));
        WebRequest.Get(WebRequest.REQUESTTYPE.CHECKCONNECTION, OnConnectionChecked);
    }
Beispiel #26
0
    public override void toControl(Hashtable values)
    {
        //base.toControl(values);
        object o = values[fieldName];

        if (o != null)
        {
            string xmlString = o.ToString();
            System.Xml.XmlDocument xmlDoc = new System.Xml.XmlDocument();
            if (!string.IsNullOrEmpty(xmlString))
            {
                xmlDoc.LoadXml(xmlString);
                System.Xml.XmlNodeList xmlNodeList = xmlDoc.DocumentElement.GetElementsByTagName(xmlNodeName);
                if (xmlNodeList.Count > 0)
                {
                    label.Text = HTMLUtils.toHTMLText(xmlNodeList[0].InnerXml);
                }
            }
        }
    }
        public void LoadCourses(string html)
        {
            var document = new HtmlDocument();

            document.LoadHtml(html);
            var container = document.DocumentNode.SelectSingleNode("html/body/table/tr[2]/td/table/tr/td/table/tr/td/div/table");

            for (var col = 0; col < 6; ++col)     // course
            {
                for (var row = 0; row < 7; ++row) // weekdays
                {
                    var result = HTMLUtils.ParseHTML(container, String.Format("tr[{0}]/td[{1}]", col + 4, row + 2));
                    courses[row][col].Courses.AddRange(Course.Deserialize(result));
                }
            }

            Term        = String.Join(" ", HTMLUtils.ParseHTML(container, "tr[1]/td[1]"));
            StudentInfo = String.Join(" ", HTMLUtils.ParseHTML(container, "tr[2]/td[1]").First()
                                      .Split(new[] { "&nbsp;" }, StringSplitOptions.RemoveEmptyEntries)
                                      );
        }
        public void LoadGrades(string html)
        {
            var document = new HtmlDocument();

            document.LoadHtml(html);

            var parent = document.DocumentNode.SelectSingleNode("html/body/table/tr[2]/td/table");
            var info   = HTMLUtils.ParseHTML(parent, "tr/td/table/tr/td").First().Split(new[] { "&nbsp;", "\r", "\n" }, StringSplitOptions.RemoveEmptyEntries);

            StudentInfo = String.Join(" ", info);

            var container = parent.SelectSingleNode("tr[2]/td/div/table");

            // class count text in html, has the form "共有记录数(\d+)"
            courses = Convert.ToInt32(Regex.Match(HTMLUtils.ParseHTML(container, "tr[last()]/td").First(), @"共有记录数(\d+)").Groups[1].Value);
            grades  = new Grade[courses];

            for (var row = 0; row < courses; ++row)
            {
                grades[row] = ParseGrade(container, row + 2);
            }
        }
Beispiel #29
0
        public async Task <Course> GetCourseWideDetails(Course course, bool clean = false)
        {
            var ret = await Cache.Get(new { c = course, a = "GetCourseWideDetails" }, async() =>
            {
                var s    = new Stopwatch();
                var page = await HTMLUtils.GetPage(course.Url);
                s.Start();
                CoursesParsers.GetCourseWideDetails(page, course);
                s.Stop();
                Debug.WriteLine("Parsing - {0}", s.Elapsed);

                return(course);
            }, clean);

            var fileService = DependencyService.Get <ISaveAndLoad>();

            if (fileService != null && fileService.FileExists(string.Format(Properties.Resources.FileName, course.Name)))
            {
                ret.Notes = await fileService.LoadTextAsync(string.Format(Properties.Resources.FileName, course.Name));
            }
            return(ret);
        }
Beispiel #30
0
        public async Task <bool> LoginOpenIdAsync(string url)
        {
            var response = await http.GetAsync(url);

            var content = await response.Content.ReadAsStringAsync();

            var dic = await HTMLUtils.GetSteamOpenId(content);

            if (dic.Count == 0)
            {
                return(false);
            }

            response = await http.PostAsync(SteamApiEndpoints.OpenId, new FormUrlEncodedContent(dic));

            //HACK: allow https->http redirect
            if (response.StatusCode == HttpStatusCode.Redirect)
            {
                response = await http.GetAsync(response.Headers.Location);
            }
            return(true);
        }