public ActionResult SyndicationLists() { var lists = this.RavenSession.Query<SyndicationList>() .ToList(); var opml = new Opml(); opml.Title = "Hobi Published Syndication List"; opml.OwnerName = "hobieu"; opml.Outlines.AddRange(lists.Select(x => { var outline = new Outline(); outline.Attributes["type"] = "link"; outline.Attributes["text"] = x.Title; outline.Attributes["name"] = x.Name; outline.Attributes["url"] = Texts.FromUriHost(Request.Url) + "/s/" + x.Name; return outline; })); var xml = opml.ToXML(); this.Compress(); return Content(xml.ToString(), "text/xml"); }
public ActionResult TabbedRivers() { var rivers = this.RavenSession.Query<RiverWall>() .Where(x => x.Status == RiverWallStatus.Published || x.Status == RiverWallStatus.Draft).ToList(); var opml = new Opml(); opml.Title = "Hobi Published Wall List"; opml.OwnerName = "hobieu"; opml.Outlines.AddRange(rivers.Select(x => { var outline = new Outline(); outline.Attributes["type"] = "link"; outline.Attributes["text"] = x.Title; outline.Attributes["name"] = x.Name; outline.Attributes["url"] = Texts.FromUriHost(Request.Url) + "/r/" + x.Name; outline.Attributes["opmlUrl"] = Texts.FromUriHost(Request.Url) + "/r/opml/" + x.Name; return outline; })); var xml = opml.ToXML(); this.Compress(); return Content(xml.ToString(), "text/xml"); }
public Opml GetFeedsOpml(List<BlogFeed> feeds, HttpRequestBase request) { if (Id.IsNullOrWhiteSpace()) throw new ApplicationException("This blog must have an id before performing GetFeedsOpml operations"); var opml = new Opml { Title = Title, DateCreated = DateCreated, }; foreach (var i in feeds.Select( x => { var item = new Outline(); item.Attributes["text"] = x.Title; item.Attributes["type"] = "rss"; item.Attributes["name"] = Texts.ConvertTitleToName(x.Title); if (!string.IsNullOrWhiteSpace(x.Description)) item.Attributes["description"] = x.Description; item.Attributes["htmlUrl"] = x.GetHtmlLink(request); item.Attributes["xmlUrl"] = x.GetRssLink(request); return item; })) { opml.Outlines.Add(i); } return opml; }
public Result<None> LoadFromXML(string xml) { try { var elements = XElement.Parse(xml); var heads = elements.Element("head").Descendants(); Func<string, string> selectString = (filter) => { return heads.Where(x => x.Name == filter).Select(x => x.Value).FirstOrDefault(); }; Func<string, int?> selectInt = (filter) => { return heads.Where(x => x.Name == filter).Select(x => Convert.ToInt32(x.Value)).FirstOrDefault(); }; Func<string, DateTime?> selectDate = (filter) => { return heads.Where(x => x.Name == filter).Select(x => Convert.ToDateTime(x.Value)).FirstOrDefault(); }; Func<string, Uri> selectUri = (filter) => { return heads.Where(x => x.Name == filter).Select(x => new Uri(x.Value)).FirstOrDefault(); }; Title = selectString("title"); DateCreated = selectDate("dateCreated"); DateModified = selectDate("dateModified"); OwnerName = selectString("ownerName"); OwnerEmail = selectString("ownerEmail"); OwnerId = selectUri("ownerId"); Docs = selectUri("docs"); ExpansionState = selectString("expansionState"); VertScrollState = selectInt("vertScrollState"); WindowTop = selectInt("windowTop"); WindowLeft = selectInt("windowLeft"); WindowBottom = selectInt("windowBottom"); WindowRight = selectInt("windowRight"); var bodies = elements.Element("body").Elements(); //todo: make it recursive foreach (var b in bodies) { var o = new Outline(); Outlines.Add(o); TraverseBody(b, o); } return Nothing.True(); //operation successful } catch (Exception ex) { return Nothing.False(ex); } }
private void TraverseBody(XElement outline, Outline ot) { if (outline != null) { foreach (var att in outline.Attributes()) { ot.Attributes[att.Name.ToString()] = att.Value; } foreach (var x in outline.Elements()) { var o = new Outline(); ot.Outlines.Add(o); TraverseBody(x, o); } } }
private void AddRecursiveChild(XElement element, Outline o) { element.Add(from y in o.Attributes select new XAttribute(y.Key, y.Value)); foreach(var oo in o.Outlines) { XElement newOutline = new XElement("outline"); element.Add(newOutline); AddRecursiveChild(newOutline, oo); } }
public Opml ToOpml() { var opml = new Opml { Title = Title, OwnerName = OwnerName, OwnerEmail = OwnerEmail, DateCreated = DateCreated, DateModified = DateModified }; foreach (var i in Items.Select( x => { var item = new Outline(); item.Attributes["text"] = x.Text; item.Attributes["type"] = "rss"; if (!string.IsNullOrWhiteSpace(x.Name)) item.Attributes["name"] = x.Name; if (!string.IsNullOrWhiteSpace(x.Description)) item.Attributes["description"] = x.Description; if (x.HtmlUri != null) item.Attributes["htmlUrl"] = x.HtmlUri.ToString(); if (x.XmlUri != null) item.Attributes["xmlUrl"] = x.XmlUri.ToString(); return item; })) { opml.Outlines.Add(i); } return opml; }
public Opml RenderToOpml() { var opml = new Opml(); opml.DateCreated = DateTime.UtcNow; opml.DateModified = DateTime.UtcNow; opml.Title = "OPML Document with Id " + Id; opml.OwnerName = "temporary"; opml.OwnerName = "*****@*****.**"; foreach (var x in Body) { var o = new Outline(); opml.Outlines.Add(o); TraverseOpml(x, o); } return opml; }
void TraverseOpml(EditorOutline outline, Outline ot) { if (outline != null) { ot.Attributes.Add("text", outline.Data); foreach (var a in outline.Attr) { ot.Attributes.Add(a.Key, a.Value); } foreach (var x in outline.Children) { var o = new Outline(); ot.Outlines.Add(o); TraverseOpml(x, o); } } }
private void TraverseEditor(Outline outline, EditorOutline editorOutline) { if (outline != null) { foreach (var a in outline.Attributes) { if (a.Key == "text") editorOutline.Data = a.Value; else editorOutline.Attr.Add(a.Key, a.Value); foreach (var x in outline.Outlines) { var o = new EditorOutline(); editorOutline.Children.Add(o); TraverseEditor(x, o); } } } }