/* (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); } }
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(); }
private async Task <Course> GetCourseECTSPoints(Course course, bool clean = false) { var page = await HTMLUtils.GetPage(course.Url); CoursesParsers.GetCourseECTSandGroup(page, course); return(course); }
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(" ", ""); }))); }
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(" ", ""); }))); }
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)); }
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)); }
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)); }
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)); }
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 }
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)); }
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)); }
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)); }
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(); } }
/* * (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); }
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); }
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; } } }
/* * (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(); } }
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; }
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); } }
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); }
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[] { " " }, 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[] { " ", "\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); } }
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); }
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); }