The question is, would anyone be interested in using code that looks like this? Just like this and does what it says it will do?
Before I go any farther in extending Soapi.CS and Soapi.JS, I need to know if there is interest. Otherwise I will spend my time writing some apps.
I am actively begging for constructive or informative feedback, positive or negative. Please. Sometimes it feels like I am writing in the wilderness. ;-(
// what you see is what you would get. Imagine similar in JavaScript
// while it looks like LINQ, it is not quite. I am simply planning to
// use dynamic proxies (ala NHibernate) to lazy load from the API.
ApiContext.Initialize(key);
// initialize simply fetches all sites and prepares them with
// the necessary data and functionality to serve as the root for
// all queries for that site.
// initialization is done on a static method and happens only once
// for each appDomain. (appdomain is a scope of execution,
// an application for example, NOT a web domain)
ApiContext ctx = new ApiContext();
User codePoet = ctx.Sites("api.stackapps.com").User(14);
foreach(Question q in codePoet.Questions())
{
Console.WriteLine(q.Title);
foreach(Answer a in q.Answers())
{
Console.WriteLine(a.Owner.DisplayName + " " + a.Owner.Reputation));
}
}
// so you noticed the lazy loading in the expressions above - this is where it
// gets more interesting....
IEnumerable<Question> codePoetsQuestionsOnStackOverflow
= codePoet.UserAssociation.Users
.First(u=>u.Site.SiteId=="api.stackoverflow.com").Questions();
// what you see is a navigation from my stackapps User up into
// it's UserAssociation object (stackauth /users/{id}/associated),
// finds the user who's site is stackoverflow and then returns all
// of my stackoverflow questions.
// Again, there are no strings - this code will run and give you exactly
// what it says it will.