public IEnumerable<Activity> FetchArchive(StorageSession session, String param, IDictionary<String, String> args) { Account account = session.Query(StorageObjectExpressionQuery.Activity( new ActivityTuple { Name = "ScreenName", Value = args["target"], } )) .OrderByDescending(a => a) .First() .Account; DateTime date = args.ContainsKey("date") ? DateTime.ParseExact(args["date"], "yyMMdd", null) : DateTime.Now; return new StringReader("<_>" + new StringReader("<html>" + new WebClient() .Dispose(c => Encoding.UTF8.GetString(c.DownloadData( String.Format( "http://twilog.org/source.cgi?id={0}&date={1}&order=asc&word={2}&cate=&filter=&type=div", args["target"], args["date"], args.ContainsKey("word") ? args["word"] : "" ) ))) + "</html>" ) .Dispose(sr => XmlReader.Create(sr) .Dispose(xr => xr .Apply(_ => _.ReadToFollowing("textarea")) .ReadElementContentAsString() ) ) + "</_>" ) .Dispose(sr => XmlReader.Create(sr) .Dispose(xr => XDocument.Load(xr)) ) .Descendants("div") .Select(xe => account.Act( "Status", Int64.Parse(xe.XPathEvaluate<String>("substring-after(p[@class='tl-posted']/a/@href,'status/')")), date + TimeSpan.ParseExact(xe.XPathEvaluate<String>("string(p[@class='tl-posted']/a)"), @"hh\:mm\:ss", null), a => a.Act("Body", xe.XPathEvaluate<String>("string(p[@class='tl-text'])")) )) .ToArray(); }
public IEnumerable<Advertisement> GetAdvertisements(StorageSession session, String param, IDictionary<String, String> args) { return session.Query(StorageObjectDynamicQuery.Advertisement(args.GetValueOrDefault("query"))); }
public IEnumerable<Activity> GetActivities(StorageSession session, String param, IDictionary<String, String> args) { return session.Query(StorageObjectDynamicQuery.Activity(args.GetValueOrDefault("query"))); }