#BridgeStack
This is a StackExchange API v2.0 consumer library written under C#
. It is heavily documented and designed to make it as easy as possible to interact with the API.
##Example Usage To get the name of each silver badge you've been awarded on Stack Overflow:
var client = new StackClientFactory().Create(_appKey, _token);
client.Default.Site = NetworkSiteEnum.StackOverflow;
var parameters = new BadgesOnUserQuery
{
Sort = QuerySortEnum.BadgeRank,
Min = BadgeRankEnum.Silver,
Max = BadgeRankEnum.Silver
};
var badges = client.GetMyBadges(parameters);
foreach (var badge in badges)
{
Console.WriteLine(badge.Name);
}
##Line by Line Explanation:
var client = new StackClientFactory().Create(_appKey, _token);
A StackClient
instance is created, passing in your application's key and the user's access token.
client.Default.Site = NetworkSiteEnum.StackOverflow;
A default is set so that all requests made through this client which require a target site use Stack Overflow
var parameters = new BadgesOnUserQuery
{
Sort = QuerySortEnum.BadgeRank,
Min = BadgeRankEnum.Silver,
Max = BadgeRankEnum.Silver
};
A query parameter object is created, using the Rank
sort on badges, and setting the range to only Silver
badges.
var badges = client.GetMyBadges(parameters);
The API is accessed, and the user badges are received from StackExchange.
foreach (var badge in badges)
{
Console.WriteLine(badge.Name);
}
The badges are then iterated, and their names are output to the console. Note that badges
, while an IEnumerable<T>
, contains valuable data other than the actual list items, like paging info, the actual response, exceptions that might have been thrown (and be the reason the enumeration is empty), etc.
##About
You can read the wiki documentation on GitHub here.
I created BridgeStack as a way to give back to the StackOverflow community, which has helped me out and taught me on countless ocassions.
At all times I attempted to mantain the same philosophy in writting this library. I documented every method, reused as much code as possibly, mirrored the API as heavily as possible, and generally designed it with wrapping away complexity in mind.
I would appreciate if you let me know what you think of it. I'm sure there's a lot of room for improvement.
Another goal in BridgeStack is to keep the code as clean and it's public facing interfaces as simple as possible.
###Update I've implemented multi-threading safe response caching and request throttling, these are explained in this post.
##Download BridgeStack can be downloaded following this link on GitHub.
##License I'm going with GPL
##Platform C# .NET 4.0
##Contact Nicolas Bevacqua
##Code BridgeStack was written under C# .NET 4.0, though I assume it wouldn't be a problem to port it to other plaforms if enough people were interested in it. You can find the full source code on GitHub.