<!-- thumbnail: https://i.sstatic.net/4dJqB.png --> <!-- version: 2.0 --> <!-- tag: library --> <!-- excerpt: 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. --> ![BridgeStack][1] #BridgeStack This is a [StackExchange][2] 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][3]: 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][4] 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][5]. 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][6]. I created *BridgeStack* as a way to give back to the [StackOverflow][7] 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][8]. ##Download *BridgeStack* can be downloaded following this [link][9] on GitHub. ##License I'm going with GPL ##Platform C# .NET 4.0 ##Contact [Nicolas Bevacqua][10] ##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][11]. [1]: https://i.sstatic.net/4dJqB.png [2]: http://stackexchange.com [3]: http://stackoverflow.com [4]: http://stackoverflow.com [5]: http://stackexchange.com [6]: https://github.com/bevacqua/BridgeStack/wiki [7]: http://stackoverflow.com [8]: https://stackapps.com/questions/2945/bridgestack-net-client-library-with-full-2-0-support/2983#2983 [9]: https://github.com/bevacqua/BridgeStack/zipball/master [10]: https://github.com/bevacqua [11]: https://github.com/bevacqua/BridgeStack