using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Xml.Linq; namespace FLocal.Common { abstract public class UserContext { public FLocal.Common.Config config { get { return FLocal.Common.Config.instance; } } abstract public IOutputParams outputParams { get; } abstract public string formatDateTime(DateTime dateTime); abstract public XElement formatTotalPosts(long posts); /// /// May be null /// abstract public dataobjects.Account account { get; } abstract public PostVisibilityEnum isPostVisible(dataobjects.Post post); } public static class UserContext_Extensions { /*public static string ToString(this DateTime dateTime, UserContext context) { return context.formatDateTime(dateTime); }*/ public static XElement ToXml(this DateTime dateTime) { return new XElement("date", new XElement("year", dateTime.Year), new XElement("month", dateTime.Month), new XElement("mday", dateTime.Day), new XElement("hour", dateTime.Hour), new XElement("minute", dateTime.Minute), new XElement("second", dateTime.Second), new XElement("ticks", dateTime.Ticks), new XElement("rss", dateTime.ToString("o")) ); } public static XElement ToXml(this TimeSpan timeSpan) { return new XElement("timeSpan", new XElement("days", (long)timeSpan.TotalDays), new XElement("hours", timeSpan.Hours), new XElement("minutes", timeSpan.Minutes), new XElement("seconds", timeSpan.Seconds), new XElement("ticks", timeSpan.Ticks) ); } public static Guid GetGuid(this Exception exception) { return Web.Core.Cache.instance.get(exception, () => Guid.NewGuid()); } public static XElement ToXml(this Exception exception) { return new XElement("exception", new XElement("type", exception.GetType().FullName), new XElement("message", exception.Message), new XElement("trace", exception.StackTrace), new XElement("guid", exception.GetGuid().ToString()) ); } } }