├── .gitignore ├── BreweryDB.workbook ├── BreweryDB ├── BreweryDB.Tests │ ├── Adjuncts.cs │ ├── Beers.cs │ ├── Breweries.cs │ ├── BreweryDB.Tests.csproj │ ├── Categories.cs │ ├── Changes.cs │ ├── Events.cs │ ├── Features.cs │ ├── Fermentables.cs │ ├── FluidSizes.cs │ ├── Guilds.cs │ ├── Keys.cs │ ├── Models │ │ └── Beer.cs │ ├── SocialSites.cs │ ├── Yeasts.cs │ └── packages.config ├── BreweryDB.csproj ├── BreweryDB.sln ├── BreweryDB.userprefs ├── BreweryDBClient.cs ├── Helpers │ ├── ConcreteConverter.cs │ ├── ExtensionMethods.cs │ ├── JsonDownloader.cs │ └── NameValueCollection.cs ├── Interfaces │ ├── IAdjunct.cs │ ├── IAvailability.cs │ ├── IBeer.cs │ ├── IBrewery.cs │ ├── ICategory.cs │ ├── ICharacteristic.cs │ ├── ICountry.cs │ ├── IEvent.cs │ ├── IFeature.cs │ ├── IFermentable.cs │ ├── IFluidSize.cs │ ├── IGlass.cs │ ├── IGuild.cs │ ├── IImages.cs │ ├── ILabels.cs │ ├── ILocation.cs │ ├── ISocialAccount.cs │ ├── ISocialMedia.cs │ ├── ISocialSite.cs │ ├── ISrm.cs │ ├── IStyle.cs │ └── IYeast.cs ├── Models │ ├── Adjuct.cs │ ├── Adjunct.cs │ ├── Available.cs │ ├── Beer.cs │ ├── Brewery.cs │ ├── Category.cs │ ├── Change.cs │ ├── Characteristic.cs │ ├── Country.cs │ ├── Error.cs │ ├── Event.cs │ ├── Feature.cs │ ├── Fermentable.cs │ ├── FluidSize.cs │ ├── Glass.cs │ ├── Guild.cs │ ├── Image.cs │ ├── Labels.cs │ ├── Location.cs │ ├── Page.cs │ ├── RequestParameters │ │ ├── BeerRequestParameters.cs │ │ ├── BreweryRequestParameters.cs │ │ └── EventRequestParameters.cs │ ├── ResponseContainer.cs │ ├── SocialAccount.cs │ ├── SocialMedia.cs │ ├── SocialSite.cs │ ├── Srm.cs │ ├── Style.cs │ ├── SubAttribute.cs │ └── Yeast.cs ├── Properties │ └── AssemblyInfo.cs ├── Resources │ ├── AdjuectResource.cs │ ├── BeerResource.cs │ ├── BreweryResource.cs │ ├── CategoryResource.cs │ ├── ChangeResource.cs │ ├── EventResource.cs │ ├── FeatureResource.cs │ ├── FermentableRescource.cs │ ├── FluidSizeResource.cs │ ├── GuildResource.cs │ ├── SocialSiteResource.cs │ └── YeastResource.cs ├── packages.config └── packages │ ├── Microsoft.Net.Http.2.0.20710.0 │ ├── Microsoft.Net.Http.2.0.20710.0.nupkg │ └── lib │ │ ├── net40 │ │ ├── System.Net.Http.WebRequest.dll │ │ ├── System.Net.Http.WebRequest.xml │ │ ├── System.Net.Http.dll │ │ └── System.Net.Http.xml │ │ └── net45 │ │ └── _._ │ ├── Newtonsoft.Json.6.0.8 │ ├── Newtonsoft.Json.6.0.8.nupkg │ ├── lib │ │ ├── net20 │ │ │ ├── Newtonsoft.Json.dll │ │ │ └── Newtonsoft.Json.xml │ │ ├── net35 │ │ │ ├── Newtonsoft.Json.dll │ │ │ └── Newtonsoft.Json.xml │ │ ├── net40 │ │ │ ├── Newtonsoft.Json.dll │ │ │ └── Newtonsoft.Json.xml │ │ ├── net45 │ │ │ ├── Newtonsoft.Json.dll │ │ │ └── Newtonsoft.Json.xml │ │ ├── netcore45 │ │ │ ├── Newtonsoft.Json.dll │ │ │ └── Newtonsoft.Json.xml │ │ ├── portable-net40+sl5+wp80+win8+wpa81 │ │ │ ├── Newtonsoft.Json.dll │ │ │ └── Newtonsoft.Json.xml │ │ └── portable-net45+wp80+win8+wpa81+aspnetcore50 │ │ │ ├── Newtonsoft.Json.dll │ │ │ └── Newtonsoft.Json.xml │ └── tools │ │ └── install.ps1 │ ├── System.IO.4.0.10-beta-22816 │ ├── License.rtf │ ├── System.IO.4.0.10-beta-22816.nupkg │ └── lib │ │ ├── aspnetcore50 │ │ └── System.IO.dll │ │ ├── contract │ │ └── System.IO.dll │ │ ├── net45 │ │ └── System.IO.dll │ │ └── portable-wpa81+wp80+win80+net45+aspnetcore50 │ │ └── System.IO.dll │ ├── System.Net.Http.2.0.20710.0 │ └── System.Net.Http.2.0.20710.0.nupkg │ ├── System.Net.Http.4.0.0-beta-22816 │ ├── System.Net.Http.4.0.0-beta-22816.nupkg │ └── lib │ │ ├── aspnetcore50 │ │ └── System.Net.Http.dll │ │ ├── contract │ │ └── System.Net.Http.dll │ │ ├── net45 │ │ └── _._ │ │ └── portable-wpa81+wp80+win80+net45+aspnetcore50 │ │ └── System.Net.Http.dll │ ├── System.Net.Primitives.4.0.10-beta-22816 │ ├── License.rtf │ ├── System.Net.Primitives.4.0.10-beta-22816.nupkg │ └── lib │ │ ├── aspnetcore50 │ │ └── System.Net.Primitives.dll │ │ ├── contract │ │ └── System.Net.Primitives.dll │ │ ├── net45 │ │ └── System.Net.Primitives.dll │ │ └── portable-wpa81+wp80+win80+net45+aspnetcore50 │ │ └── System.Net.Primitives.dll │ ├── System.Runtime.4.0.20-beta-22816 │ ├── License.rtf │ ├── System.Runtime.4.0.20-beta-22816.nupkg │ └── lib │ │ ├── aspnetcore50 │ │ └── System.Runtime.dll │ │ ├── contract │ │ └── System.Runtime.dll │ │ ├── net45 │ │ └── System.Runtime.dll │ │ └── portable-wpa81+wp80+win80+net45+aspnetcore50 │ │ └── System.Runtime.dll │ ├── System.Runtime.Handles.4.0.0-beta-22816 │ ├── License.rtf │ ├── System.Runtime.Handles.4.0.0-beta-22816.nupkg │ └── lib │ │ ├── aspnetcore50 │ │ └── System.Runtime.Handles.dll │ │ ├── contract │ │ └── System.Runtime.Handles.dll │ │ ├── net45 │ │ └── System.Runtime.Handles.dll │ │ └── portable-wpa81+wp80+win80+net45+aspnetcore50 │ │ └── System.Runtime.Handles.dll │ ├── System.Text.Encoding.4.0.10-beta-22816 │ ├── License.rtf │ ├── System.Text.Encoding.4.0.10-beta-22816.nupkg │ └── lib │ │ ├── aspnetcore50 │ │ └── System.Text.Encoding.dll │ │ ├── contract │ │ └── System.Text.Encoding.dll │ │ ├── net45 │ │ └── System.Text.Encoding.dll │ │ └── portable-wpa81+wp80+win80+net45+aspnetcore50 │ │ └── System.Text.Encoding.dll │ ├── System.Threading.Tasks.4.0.10-beta-22816 │ ├── License.rtf │ ├── System.Threading.Tasks.4.0.10-beta-22816.nupkg │ └── lib │ │ ├── aspnetcore50 │ │ └── System.Threading.Tasks.dll │ │ ├── contract │ │ └── System.Threading.Tasks.dll │ │ ├── net45 │ │ └── System.Threading.Tasks.dll │ │ └── portable-wpa81+wp80+win80+net45+aspnetcore50 │ │ └── System.Threading.Tasks.dll │ └── repositories.config ├── LICENSE └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | ## Ignore Visual Studio temporary files, build results, and 2 | ## files generated by popular Visual Studio add-ons. 3 | 4 | # User-specific files 5 | *.suo 6 | *.user 7 | *.userosscache 8 | *.sln.docstates 9 | 10 | # User-specific files (MonoDevelop/Xamarin Studio) 11 | *.userprefs 12 | 13 | # Packages 14 | [Pp]ackages/ 15 | 16 | # Build results 17 | [Dd]ebug/ 18 | [Dd]ebugPublic/ 19 | [Rr]elease/ 20 | [Rr]eleases/ 21 | x64/ 22 | x86/ 23 | build/ 24 | bld/ 25 | [Bb]in/ 26 | [Oo]bj/ 27 | 28 | # Visual Studo 2015 cache/options directory 29 | .vs/ 30 | 31 | #Components 32 | [C]omponents/ 33 | 34 | # MSTest test Results 35 | [Tt]est[Rr]esult*/ 36 | [Bb]uild[Ll]og.* 37 | 38 | # NUNIT 39 | *.VisualState.xml 40 | TestResult.xml 41 | 42 | # Build Results of an ATL Project 43 | [Dd]ebugPS/ 44 | [Rr]eleasePS/ 45 | dlldata.c 46 | 47 | *_i.c 48 | *_p.c 49 | *_i.h 50 | *.ilk 51 | *.meta 52 | *.obj 53 | *.pch 54 | *.pdb 55 | *.pgc 56 | *.pgd 57 | *.rsp 58 | *.sbr 59 | *.tlb 60 | *.tli 61 | *.tlh 62 | *.tmp 63 | *.tmp_proj 64 | *.log 65 | *.vspscc 66 | *.vssscc 67 | .builds 68 | *.pidb 69 | *.svclog 70 | *.sc 71 | *.dll 72 | 73 | # Chutzpah Test files 74 | _Chutzpah* 75 | 76 | # Visual C++ cache files 77 | ipch/ 78 | *.aps 79 | *.ncb 80 | *.opensdf 81 | *.sdf 82 | *.cachefile 83 | 84 | # Visual Studio profiler 85 | *.psess 86 | *.vsp 87 | *.vspx 88 | 89 | # TFS 2012 Local Workspace 90 | $tf/ 91 | 92 | # Guidance Automation Toolkit 93 | *.gpState 94 | 95 | # ReSharper is a .NET coding add-in 96 | _ReSharper*/ 97 | *.[Rr]e[Ss]harper 98 | *.DotSettings.user 99 | 100 | # JustCode is a .NET coding addin-in 101 | .JustCode 102 | 103 | # TeamCity is a build add-in 104 | _TeamCity* 105 | 106 | # DotCover is a Code Coverage Tool 107 | *.dotCover 108 | 109 | # NCrunch 110 | _NCrunch_* 111 | .*crunch*.local.xml 112 | 113 | # MightyMoose 114 | *.mm.* 115 | AutoTest.Net/ 116 | 117 | # Web workbench (sass) 118 | .sass-cache/ 119 | 120 | # Installshield output folder 121 | [Ee]xpress/ 122 | 123 | # DocProject is a documentation generator add-in 124 | DocProject/buildhelp/ 125 | DocProject/Help/*.HxT 126 | DocProject/Help/*.HxC 127 | DocProject/Help/*.hhc 128 | DocProject/Help/*.hhk 129 | DocProject/Help/*.hhp 130 | DocProject/Help/Html2 131 | DocProject/Help/html 132 | 133 | # Click-Once directory 134 | publish/ 135 | 136 | # Publish Web Output 137 | *.[Pp]ublish.xml 138 | *.azurePubxml 139 | # TODO: Comment the next line if you want to checkin your web deploy settings 140 | # but database connection strings (with potential passwords) will be unencrypted 141 | *.pubxml 142 | *.publishproj 143 | 144 | # NuGet Packages 145 | *.nupkg 146 | # The packages folder can be ignored because of Package Restore 147 | **/packages/* 148 | # except build/, which is used as an MSBuild target. 149 | !**/packages/build/ 150 | # Uncomment if necessary however generally it will be regenerated when needed 151 | #!**/packages/repositories.config 152 | 153 | # Windows Azure Build Output 154 | csx/ 155 | *.build.csdef 156 | 157 | # Windows Store app package directory 158 | AppPackages/ 159 | 160 | # Others 161 | *.[Cc]ache 162 | ClientBin/ 163 | [Ss]tyle[Cc]op.* 164 | ~$* 165 | *~ 166 | *.dbmdl 167 | *.dbproj.schemaview 168 | *.pfx 169 | *.publishsettings 170 | node_modules/ 171 | bower_components/ 172 | 173 | # RIA/Silverlight projects 174 | Generated_Code/ 175 | 176 | # Backup & report files from converting an old project file 177 | # to a newer Visual Studio version. Backup files are not needed, 178 | # because we have git ;-) 179 | _UpgradeReport_Files/ 180 | Backup*/ 181 | UpgradeLog*.XML 182 | UpgradeLog*.htm 183 | 184 | # SQL Server files 185 | *.mdf 186 | *.ldf 187 | 188 | # Business Intelligence projects 189 | *.rdl.data 190 | *.bim.layout 191 | *.bim_*.settings 192 | 193 | # Microsoft Fakes 194 | FakesAssemblies/ 195 | 196 | # Node.js Tools for Visual Studio 197 | .ntvs_analysis.dat 198 | 199 | # Visual Studio 6 build log 200 | *.plg 201 | 202 | # Visual Studio 6 workspace options file 203 | *.opt 204 | 205 | Mobile/Helpers/Keys.cs 206 | 207 | Shared/BeerDrinkin/Helpers/Keys.cs 208 | -------------------------------------------------------------------------------- /BreweryDB.workbook: -------------------------------------------------------------------------------- 1 | ```json 2 | {"exec-mode":"default","platform":"iOS","uti":"com.xamarin.workbook","packages":[{"id":"Newtonsoft.Json","version":"8.0.3"},{"id":"Microsoft.Net.Http","version":"2.2.29"},{"id":"BreweryDB","version":"1.1.5"},{"id":"Microsoft.Bcl","version":"1.1.10"}]} 3 | ``` 4 | 5 | # BreweryDB .NET SDK 6 | 7 | ![BreweryDB Logo](https://camo.githubusercontent.com/1b994997e52e7ed4e1cc811d739cad0c4ebd7e0a/687474703a2f2f7777772e6272657765727964622e636f6d2f696d672f62616467652e706e67) 8 | 9 | #### About the SDK 10 | 11 | [BreweryDB .NET](https://github.com/MikeCodesDotNet/BreweryDB "BreweryDB .NET") is a simple to use .NET based API for calling into BreweryDB. 12 | 13 | [BreweryDB ](http://www.brewerydb.com "BreweryDB")is your database of breweries, beers, beer events and guilds! 14 | 15 | #### Learning Objectives 16 | 17 | Discover the awesomeness of the BreweryDB REST API using a .NET SDK. In this workbook, you’ll learn the following: 18 | 19 | * Create a BreweryDB .NET Client 20 | 21 | * Query all beers 22 | 23 | * Search the DB 24 | 25 | * Query breweries 26 | 27 | * Download artwork asynchronously 28 | 29 | #### Requirements 30 | 31 | * A valid [BreweryDB API Key](http://www.brewerydb.com/developers "BreweryDB API key") (only tested with a premium key) 32 | 33 | --- 34 | 35 | ### Setup 36 | 37 | First, we'll start by adding the BreweryDB SDK to the workbook, then we’ll import several namespaces that we will need. 38 | 39 | ```csharp 40 | #r "BreweryDB" 41 | 42 | using BreweryDB; 43 | using BreweryDB.Helpers; 44 | using BreweryDB.Models; 45 | ``` 46 | 47 | ### Creating a Client 48 | 49 | We'll need to create an instance of the BreweryDBClient. The client is responsible for dealing with your API key as well as acting as an entry point for the availableendpoints. 50 | 51 | ```csharp 52 | private readonly BreweryDbClient client = new BreweryDbClient("b7da1c5827026053a276f0dbe2234962"); 53 | ``` 54 | 55 | The client allows us to query the following enpoints: 56 | 57 | * [Adjuntcs](http://www.brewerydb.com/developers/docs-endpoint/adjunct_index "Adjuncts") 58 | 59 | * [Beers](http://www.brewerydb.com/developers/docs-endpoint/beer_index "Beers") 60 | 61 | * [Breweries](http://www.brewerydb.com/developers/docs-endpoint/brewery_index "Breweries") 62 | 63 | * [Categories](http://www.brewerydb.com/developers/docs-endpoint/category_index "Categories") 64 | 65 | * [Events](http://www.brewerydb.com/developers/docs-endpoint/event_index "Events") 66 | 67 | * [Features](http://www.brewerydb.com/developers/docs-endpoint/feature_index "Features") 68 | 69 | * [Socials](http://www.brewerydb.com/developers/docs-endpoint/socialsite_index "Socials") 70 | 71 | * [Yeasts](http://www.brewerydb.com/developers/docs-endpoint/yeast_index "Yeasts") 72 | 73 | ### Querying Beers 74 | 75 | In our first example, lets go ahead and ask BreweryDB to return a beer by its ID. It’ll be returning data on one of my favourite beers (a Kasteel Donker). 76 | 77 | ```csharp 78 | var response = await client.Beers.Get("J4UYYJ"); 79 | ``` 80 | 81 | ```csharp 82 | var beer = response.Data; 83 | ``` -------------------------------------------------------------------------------- /BreweryDB/BreweryDB.Tests/Adjuncts.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | using BreweryDB.Helpers; 8 | using BreweryDB.Models; 9 | using BreweryDB.Models.RequestParameters; 10 | using NUnit.Framework; 11 | 12 | namespace BreweryDB.Tests 13 | { 14 | [TestFixture()] 15 | public class Adjuncts 16 | { 17 | private readonly BreweryDbClient client = new BreweryDbClient(Keys.ApplicationKey); 18 | 19 | [Test()] 20 | public async Task ById() 21 | { 22 | var response = await client.Adjuncts.Get("923"); 23 | 24 | Assert.IsTrue(response.Status == "success"); 25 | Assert.IsTrue(response.Message == "Request Successful"); 26 | 27 | var adjunct = response.Data; 28 | Assert.IsTrue(adjunct.Id == "923"); 29 | Assert.IsTrue(adjunct.Name == "Banana"); 30 | Assert.IsTrue(adjunct.Category == "misc"); 31 | Assert.IsTrue(adjunct.CategoryDisplay == "Miscellaneous"); 32 | 33 | } 34 | 35 | [Test()] 36 | public async Task GetAll() 37 | { 38 | var response = await client.Adjuncts.GetAll(); 39 | 40 | Assert.IsTrue(response.Status == "success"); 41 | 42 | var adjunct = response.Data.FirstOrDefault(); 43 | Assert.IsTrue(adjunct.Id == "876"); 44 | Assert.IsTrue(adjunct.Name == "Acid Blend"); 45 | Assert.IsTrue(adjunct.Category == "misc"); 46 | Assert.IsTrue(adjunct.CategoryDisplay == "Miscellaneous"); 47 | } 48 | 49 | [Test()] 50 | public async Task GetPage() 51 | { 52 | var response = await client.Adjuncts.GetAll(4); 53 | 54 | Assert.IsTrue(response.Status == "success"); 55 | 56 | var adjunct = response.Data.FirstOrDefault(); 57 | Assert.IsTrue(adjunct.Id == "1014"); 58 | Assert.IsTrue(adjunct.Name == "Cherry Puree"); 59 | Assert.IsTrue(adjunct.Category == "misc"); 60 | Assert.IsTrue(adjunct.CategoryDisplay == "Miscellaneous"); 61 | } 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /BreweryDB/BreweryDB.Tests/Beers.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | using BreweryDB.Helpers; 8 | using BreweryDB.Models; 9 | using BreweryDB.Models.RequestParameters; 10 | using BreweryDB.Resources; 11 | using BreweryDB.Tests.Models; 12 | using NUnit.Framework; 13 | 14 | namespace BreweryDB.Tests 15 | { 16 | [TestFixture()] 17 | public class Beers 18 | { 19 | private readonly BreweryDbClient client = new BreweryDbClient(Keys.ApplicationKey); 20 | 21 | [Test()] 22 | public async Task GetAll() 23 | { 24 | var response = await client.Beers.GetAll(); 25 | 26 | Assert.IsTrue(response.Status == "success"); 27 | Assert.IsTrue(response.CurrentPage == 1); 28 | 29 | var beer = response.Data.FirstOrDefault(x => x.Labels != null); 30 | 31 | //Images 32 | Assert.IsTrue(beer.Labels != null); 33 | Assert.IsNotEmpty(beer.Labels.Large); 34 | 35 | //Breweries 36 | Assert.IsTrue(beer.Breweries != null); 37 | 38 | } 39 | 40 | [Test()] 41 | public async Task GetPage() 42 | { 43 | var response = await client.Beers.GetAll(4); 44 | 45 | Assert.IsTrue(response.Status == "success"); 46 | Assert.IsTrue(response.CurrentPage == 4); 47 | 48 | var beer = response.Data.FirstOrDefault(); 49 | Assert.IsNotNull(beer); 50 | } 51 | 52 | [Test()] 53 | public async Task GetWithParameters() 54 | { 55 | var parameters = new NameValueCollection {{BeerRequestParameters.Name, "duvel single"}}; 56 | var response = await client.Beers.Get(parameters); 57 | 58 | Assert.IsTrue(response.Status == "success"); 59 | Assert.IsTrue(response.CurrentPage == 1); 60 | Assert.IsTrue(response.NumberOfPages >= 1); 61 | Assert.IsTrue(response.TotalResults >= 1); 62 | 63 | var beer = response.Data.FirstOrDefault(); 64 | Assert.IsNotNull(beer); 65 | } 66 | 67 | [Test()] 68 | public async Task Search() 69 | { 70 | var response = await client.Beers.Search("duvel"); 71 | 72 | Assert.IsTrue(response.Status == "success"); 73 | Assert.IsTrue(response.CurrentPage == 1); 74 | Assert.IsTrue(response.NumberOfPages >= 1); 75 | Assert.IsTrue(response.TotalResults >= 6); 76 | 77 | var beer = response.Data.FirstOrDefault(); 78 | Assert.IsNotNull(beer); 79 | } 80 | 81 | [Test()] 82 | public async Task CustomType() 83 | { 84 | var newClient = new BreweryDbClient(Keys.ApplicationKey); 85 | var Beers = new BeerResource(newClient); 86 | 87 | var response = await Beers.GetAll(); 88 | 89 | Assert.IsTrue(response.Status == "success"); 90 | Assert.IsTrue(response.CurrentPage == 1); 91 | Assert.IsTrue(response.NumberOfPages >= 1); 92 | Assert.IsTrue(response.TotalResults >= 1019); 93 | 94 | } 95 | 96 | [Test()] 97 | public async Task HasImages() 98 | { 99 | var response = await client.Beers.Search("Stella"); 100 | 101 | Assert.IsTrue(response.Status == "success"); 102 | 103 | var beer = response.Data.FirstOrDefault(x => x.Id == "Jc7iGI"); 104 | Assert.IsNotNull(beer.Labels); 105 | } 106 | } 107 | } 108 | -------------------------------------------------------------------------------- /BreweryDB/BreweryDB.Tests/Breweries.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | using BreweryDB.Helpers; 8 | using BreweryDB.Models; 9 | using BreweryDB.Models.RequestParameters; 10 | using NUnit.Framework; 11 | 12 | namespace BreweryDB.Tests 13 | { 14 | [TestFixture()] 15 | public class Breweries 16 | { 17 | private readonly BreweryDbClient client = new BreweryDbClient(Keys.ApplicationKey); 18 | 19 | [Test()] 20 | public async Task ById() 21 | { 22 | var response = await client.Breweries.Get("YXDiJk"); 23 | 24 | Assert.IsTrue(response.Status == "success"); 25 | Assert.IsTrue(response.Message == "Request Successful"); 26 | 27 | var brewery = response.Data; 28 | Assert.IsTrue(brewery.Id == "YXDiJk"); 29 | Assert.IsTrue(brewery.Name == "#FREEDOM Craft Brewery"); 30 | } 31 | 32 | [Test()] 33 | public async Task GetAll() 34 | { 35 | var response = await client.Breweries.GetAll(); 36 | 37 | Assert.IsTrue(response.Status == "success"); 38 | Assert.IsTrue(response.CurrentPage == 1); 39 | Assert.IsTrue(response.NumberOfPages >= 141); 40 | Assert.IsTrue(response.TotalResults >= 7044); 41 | 42 | var brewery = response.Data.FirstOrDefault(); 43 | Assert.IsTrue(brewery.Id == "YXDiJk"); 44 | Assert.IsTrue(brewery.Name == "#FREEDOM Craft Brewery"); 45 | } 46 | 47 | [Test()] 48 | public async Task GetPage() 49 | { 50 | var response = await client.Breweries.GetAll(4); 51 | 52 | Assert.IsTrue(response.Status == "success"); 53 | Assert.IsTrue(response.CurrentPage == 4); 54 | Assert.IsTrue(response.NumberOfPages >= 100); 55 | Assert.IsTrue(response.TotalResults >= 6000); 56 | 57 | var beer = response.Data.FirstOrDefault(); 58 | Assert.IsNotNull(beer); 59 | 60 | } 61 | 62 | [Test()] 63 | public async Task GetWithParameters() 64 | { 65 | var parameters = new Helpers.NameValueCollection {{BreweryRequestParameters.Name, "Ad Lib Brewing Company" } }; 66 | var response = await client.Breweries.Get(parameters); 67 | 68 | Assert.IsTrue(response.Status == "success"); 69 | Assert.IsTrue(response.CurrentPage == 1); 70 | Assert.IsTrue(response.NumberOfPages >= 1); 71 | Assert.IsTrue(response.TotalResults >= 1); 72 | 73 | var beer = response.Data.FirstOrDefault(); 74 | Assert.IsTrue(beer?.Id == "aJQnv0"); 75 | Assert.IsTrue(beer.Name == "Ad Lib Brewing Company"); 76 | } 77 | 78 | [Test()] 79 | public async Task Search() 80 | { 81 | var response = await client.Breweries.Search("duvel"); 82 | 83 | Assert.IsTrue(response.Status == "success"); 84 | Assert.IsTrue(response.CurrentPage == 1); 85 | Assert.IsTrue(response.NumberOfPages >= 1); 86 | Assert.IsTrue(response.TotalResults >= 1); 87 | 88 | var brewery = response.Data.FirstOrDefault(); 89 | Assert.IsNotNull(brewery); 90 | } 91 | } 92 | } 93 | -------------------------------------------------------------------------------- /BreweryDB/BreweryDB.Tests/BreweryDB.Tests.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Debug 5 | AnyCPU 6 | {20793B1C-A49F-43BE-8D83-15C2453E4CDE} 7 | Library 8 | BreweryDB.Tests 9 | BreweryDB.Tests 10 | v4.5 11 | 12 | 13 | true 14 | full 15 | false 16 | bin\Debug 17 | DEBUG; 18 | prompt 19 | 4 20 | false 21 | 22 | 23 | full 24 | true 25 | bin\Release 26 | prompt 27 | 4 28 | false 29 | 30 | 31 | 32 | 33 | ..\packages\NUnit.3.0.1\lib\net45\nunit.framework.dll 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | {84D549C9-B9CA-4C37-8C99-2C12DB8906B6} 63 | BreweryDB 64 | 65 | 66 | -------------------------------------------------------------------------------- /BreweryDB/BreweryDB.Tests/Categories.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | using BreweryDB.Helpers; 8 | using BreweryDB.Models; 9 | using BreweryDB.Models.RequestParameters; 10 | using NUnit.Framework; 11 | 12 | namespace BreweryDB.Tests 13 | { 14 | [TestFixture()] 15 | public class Categories 16 | { 17 | private readonly BreweryDbClient client = new BreweryDbClient(Keys.ApplicationKey); 18 | 19 | [Test()] 20 | public async Task ById() 21 | { 22 | var response = await client.Categories.Get("1"); 23 | 24 | Assert.IsTrue(response.Status == "success"); 25 | Assert.IsTrue(response.Message == "Request Successful"); 26 | 27 | var category = response.Data; 28 | Assert.IsTrue(category.Id == "1"); 29 | Assert.IsTrue(category.Name == "British Origin Ales"); 30 | } 31 | 32 | [Test()] 33 | public async Task GetAll() 34 | { 35 | var response = await client.Categories.GetAll(); 36 | 37 | Assert.IsTrue(response.Status == "success"); 38 | 39 | var category = response.Data.FirstOrDefault(); 40 | Assert.IsTrue(category.Id == "1"); 41 | Assert.IsTrue(category.Name == "British Origin Ales"); 42 | } 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /BreweryDB/BreweryDB.Tests/Changes.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | using BreweryDB.Helpers; 8 | using BreweryDB.Models; 9 | using BreweryDB.Models.RequestParameters; 10 | using NUnit.Framework; 11 | 12 | namespace BreweryDB.Tests 13 | { 14 | [TestFixture()] 15 | public class Changes 16 | { 17 | private readonly BreweryDbClient client = new BreweryDbClient(Keys.ApplicationKey); 18 | 19 | [Test()] 20 | public async Task ById() 21 | { 22 | var response = await client.Changes.GetAll(); 23 | Assert.IsNotNull(response); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /BreweryDB/BreweryDB.Tests/Events.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | using BreweryDB.Helpers; 8 | using BreweryDB.Models; 9 | using BreweryDB.Models.RequestParameters; 10 | using NUnit.Framework; 11 | 12 | namespace BreweryDB.Tests 13 | { 14 | [TestFixture()] 15 | public class Events 16 | { 17 | private readonly BreweryDbClient client = new BreweryDbClient(Keys.ApplicationKey); 18 | 19 | [Test()] 20 | public async Task ById() 21 | { 22 | var response = await client.Events.Get("cJio9R"); 23 | 24 | Assert.IsTrue(response.Status == "success"); 25 | Assert.IsTrue(response.Message == "Request Successful"); 26 | 27 | var _event = response.Data; 28 | Assert.IsTrue(_event.Id == "cJio9R"); 29 | Assert.IsTrue(_event.Year == "2008"); 30 | Assert.IsTrue(_event.Name == "2008 Hickory Hops / Carolina Championship of "); 31 | Assert.IsTrue(_event.Type == "festival_competition"); 32 | } 33 | 34 | [Test()] 35 | public async Task GetAll() 36 | { 37 | var response = await client.Events.GetAll(); 38 | 39 | Assert.IsTrue(response.Status == "success"); 40 | 41 | var _event = response.Data.FirstOrDefault(); 42 | Assert.IsTrue(_event.Id == "cJio9R"); 43 | Assert.IsTrue(_event.Year == "2008"); 44 | Assert.IsTrue(_event.Name == "2008 Hickory Hops / Carolina Championship of "); 45 | Assert.IsTrue(_event.Type == "festival_competition"); 46 | } 47 | 48 | [Test()] 49 | public async Task GetPage() 50 | { 51 | var response = await client.Events.GetAll(1); 52 | 53 | Assert.IsTrue(response.Status == "success"); 54 | 55 | var _event = response.Data.FirstOrDefault(); 56 | Assert.IsTrue(_event.Id == "cJio9R"); 57 | Assert.IsTrue(_event.Year == "2008"); 58 | Assert.IsTrue(_event.Name == "2008 Hickory Hops / Carolina Championship of "); 59 | Assert.IsTrue(_event.Type == "festival_competition"); 60 | } 61 | 62 | [Test()] 63 | public async Task GetWithParameters() 64 | { 65 | var parameters = new NameValueCollection { { EventRequestParameters.Year, "2008" } }; 66 | var response = await client.Events.Get(parameters); 67 | 68 | Assert.IsTrue(response.Status == "success"); 69 | Assert.IsTrue(response.CurrentPage == 1); 70 | Assert.IsTrue(response.NumberOfPages >= 1); 71 | Assert.IsTrue(response.TotalResults >= 1); 72 | 73 | var _event = response.Data.FirstOrDefault(); 74 | Assert.IsTrue(_event.Id == "cJio9R"); 75 | Assert.IsTrue(_event.Year == "2008"); 76 | } 77 | 78 | [Test()] 79 | public async Task Search() 80 | { 81 | var response = await client.Events.Search("B'dam BrewJAM"); 82 | 83 | Assert.IsTrue(response.Status == "success"); 84 | Assert.IsTrue(response.CurrentPage == 1); 85 | Assert.IsTrue(response.NumberOfPages >= 1); 86 | Assert.IsTrue(response.TotalResults >= 1); 87 | 88 | var _event = response.Data.FirstOrDefault(); 89 | Assert.IsTrue(_event?.Id == "28OVyf"); 90 | Assert.IsTrue(_event.Name == "B'dam BrewJAM"); 91 | } 92 | 93 | } 94 | } 95 | -------------------------------------------------------------------------------- /BreweryDB/BreweryDB.Tests/Features.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | using BreweryDB.Helpers; 8 | using BreweryDB.Models; 9 | using BreweryDB.Models.RequestParameters; 10 | using NUnit.Framework; 11 | 12 | namespace BreweryDB.Tests 13 | { 14 | [TestFixture()] 15 | public class Features 16 | { 17 | private readonly BreweryDbClient client = new BreweryDbClient(Keys.ApplicationKey); 18 | 19 | [Test()] 20 | public async Task ByDate() 21 | { 22 | var response = await client.Features.Get(new DateTime(2012, 04, 1)); 23 | 24 | Assert.IsTrue(response.Status == "success"); 25 | Assert.IsTrue(response.Message == "Request Successful"); 26 | 27 | var feature = response.Data; 28 | Assert.IsTrue(feature.Id == "2"); 29 | Assert.IsTrue(feature.Year == 2012); 30 | Assert.IsTrue(feature.Week == 4); 31 | Assert.IsTrue(feature.BreweryId == "iG2UXJ"); 32 | 33 | } 34 | 35 | [Test()] 36 | public async Task GetAll() 37 | { 38 | var response = await client.Features.GetAll(); 39 | 40 | var feature = response.Data.FirstOrDefault(); 41 | Assert.IsTrue(feature.Id == "117"); 42 | Assert.IsTrue(feature.Year == 2015); 43 | Assert.IsTrue(feature.Week == 5); 44 | Assert.IsTrue(feature.BreweryId == "DXvlfF"); 45 | } 46 | 47 | [Test()] 48 | public async Task ThisWeeks() 49 | { 50 | var response = await client.Features.ThisWeeks(); 51 | 52 | var feature = response.Data; 53 | Assert.IsTrue(feature.Id == "117"); 54 | Assert.IsTrue(feature.Year == 2015); 55 | Assert.IsTrue(feature.Week == 5); 56 | Assert.IsTrue(feature.BreweryId == "DXvlfF"); 57 | } 58 | 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /BreweryDB/BreweryDB.Tests/Fermentables.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | using BreweryDB.Helpers; 8 | using BreweryDB.Models; 9 | using BreweryDB.Models.RequestParameters; 10 | using NUnit.Framework; 11 | 12 | namespace BreweryDB.Tests 13 | { 14 | [TestFixture()] 15 | public class Fermentables 16 | { 17 | private readonly BreweryDbClient client = new BreweryDbClient(Keys.ApplicationKey); 18 | 19 | [Test()] 20 | public async Task ById() 21 | { 22 | var response = await client.Fermentables.Get("165"); 23 | 24 | Assert.IsTrue(response.Status == "success"); 25 | Assert.IsTrue(response.Message == "Request Successful"); 26 | 27 | var fermentable = response.Data; 28 | Assert.IsTrue(fermentable.Id == "165"); 29 | Assert.IsTrue(fermentable.Name == "Abbey Malt"); 30 | Assert.IsTrue(fermentable.Category == "malt"); 31 | Assert.IsTrue(fermentable.CategoryDisplay == "Malts, Grains, & Fermentables"); 32 | } 33 | 34 | [Test()] 35 | public async Task GetAll() 36 | { 37 | var response = await client.Fermentables.GetAll(); 38 | 39 | Assert.IsTrue(response.Status == "success"); 40 | 41 | var fermentable = response.Data.FirstOrDefault(); 42 | Assert.IsTrue(fermentable.Id == "165"); 43 | Assert.IsTrue(fermentable.Name == "Abbey Malt"); 44 | Assert.IsTrue(fermentable.Category == "malt"); 45 | Assert.IsTrue(fermentable.CategoryDisplay == "Malts, Grains, & Fermentables"); 46 | } 47 | 48 | [Test()] 49 | public async Task GetPage() 50 | { 51 | var response = await client.Fermentables.GetAll(3); 52 | 53 | Assert.IsTrue(response.Status == "success"); 54 | 55 | var fermentable = response.Data.FirstOrDefault(); 56 | Assert.IsNotNull(fermentable); 57 | } 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /BreweryDB/BreweryDB.Tests/FluidSizes.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | using BreweryDB.Helpers; 8 | using BreweryDB.Models; 9 | using BreweryDB.Models.RequestParameters; 10 | using NUnit.Framework; 11 | 12 | namespace BreweryDB.Tests 13 | { 14 | [TestFixture()] 15 | public class FluidSizes 16 | { 17 | private readonly BreweryDbClient client = new BreweryDbClient(Keys.ApplicationKey); 18 | 19 | [Test()] 20 | public async Task ById() 21 | { 22 | var response = await client.FluidSizes.Get("1"); 23 | 24 | Assert.IsTrue(response.Status == "success"); 25 | Assert.IsTrue(response.Message == "Request Successful"); 26 | 27 | var fluidSize = response.Data; 28 | Assert.IsTrue(fluidSize.Id == "1"); 29 | Assert.IsTrue(fluidSize.Volume == "oz"); 30 | Assert.IsTrue(fluidSize.VolumeDisplay == "Ounce (oz)"); 31 | Assert.IsTrue(fluidSize.Quantity == "22"); 32 | 33 | } 34 | 35 | [Test()] 36 | public async Task GetAll() 37 | { 38 | var response = await client.FluidSizes.GetAll(); 39 | 40 | Assert.IsTrue(response.Status == "success"); 41 | 42 | var fluidSize = response.Data.FirstOrDefault(); 43 | Assert.IsTrue(fluidSize.Id == "1"); 44 | Assert.IsTrue(fluidSize.Volume == "oz"); 45 | Assert.IsTrue(fluidSize.VolumeDisplay == "Ounce (oz)"); 46 | Assert.IsTrue(fluidSize.Quantity == "22"); 47 | } 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /BreweryDB/BreweryDB.Tests/Guilds.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | using BreweryDB.Helpers; 8 | using BreweryDB.Models; 9 | using BreweryDB.Models.RequestParameters; 10 | using NUnit.Framework; 11 | 12 | namespace BreweryDB.Tests 13 | { 14 | [TestFixture()] 15 | public class Guilds 16 | { 17 | private readonly BreweryDbClient client = new BreweryDbClient(Keys.ApplicationKey); 18 | 19 | [Test()] 20 | public async Task ById() 21 | { 22 | var response = await client.Guildes.Get("EdRcIs"); 23 | 24 | Assert.IsTrue(response.Status == "success"); 25 | Assert.IsTrue(response.Message == "Request Successful"); 26 | 27 | var guild = response.Data; 28 | Assert.IsTrue(guild.Id == "EdRcIs"); 29 | Assert.IsTrue(guild.Name == "Alabama Brewers Guild"); 30 | 31 | } 32 | 33 | [Test()] 34 | public async Task GetAll() 35 | { 36 | var response = await client.Guildes.GetAll(); 37 | 38 | Assert.IsTrue(response.Status == "success"); 39 | 40 | var guild = response.Data.FirstOrDefault(); 41 | Assert.IsTrue(guild.Id == "EdRcIs"); 42 | Assert.IsTrue(guild.Name == "Alabama Brewers Guild"); 43 | } 44 | 45 | [Test()] 46 | public async Task GetPage() 47 | { 48 | var response = await client.Guildes.GetAll(2); 49 | 50 | Assert.IsTrue(response.Status == "success"); 51 | 52 | var guild = response.Data.FirstOrDefault(); 53 | Assert.IsNotNull(guild); 54 | } 55 | 56 | [Test()] 57 | public async Task Search() 58 | { 59 | var response = await client.Guildes.Search("Alabama Brewers Guild"); 60 | 61 | Assert.IsTrue(response.Status == "success"); 62 | Assert.IsTrue(response.CurrentPage == 1); 63 | Assert.IsTrue(response.NumberOfPages >= 1); 64 | Assert.IsTrue(response.TotalResults >= 59); 65 | 66 | var guild = response.Data.FirstOrDefault(); 67 | Assert.IsTrue(guild?.Id == "EdRcIs"); 68 | Assert.IsTrue(guild.Name == "Alabama Brewers Guild"); 69 | } 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /BreweryDB/BreweryDB.Tests/Keys.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace BreweryDB.Tests 4 | { 5 | public class Keys 6 | { 7 | public static string ApplicationKey = "a956af587b434c4c89ef18c7bbd2fac9"; 8 | } 9 | } 10 | 11 | -------------------------------------------------------------------------------- /BreweryDB/BreweryDB.Tests/Models/Beer.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using BreweryDB.Interfaces; 4 | using BreweryDB.Models; 5 | 6 | namespace BreweryDB.Tests.Models 7 | { 8 | public class MyBeer : IBeer 9 | { 10 | public MyBeer(Glass glass, Srm srm, Available available, Style style, List breweries, Labels labels, 11 | List socialAccounts) 12 | { 13 | Glass = glass; 14 | Srm = srm; 15 | Available = available; 16 | Style = style; 17 | Breweries = breweries; 18 | Labels = labels; 19 | } 20 | 21 | public string Id { get; set; } 22 | public string Name { get; set; } 23 | public string NameDisplay { get; set; } 24 | public string Description { get; set; } 25 | public double Abv { get; set; } 26 | public int GlasswareId { get; set; } 27 | public int SrmId { get; set; } 28 | public int AvailableId { get; set; } 29 | public int StyleId { get; set; } 30 | public string IsOrganic { get; set; } 31 | public string Status { get; set; } 32 | public string StatusDisplay { get; set; } 33 | public string CreateDate { get; set; } 34 | public string UpdateDate { get; set; } 35 | public IGlass Glass { get; set; } 36 | public ISrm Srm { get; set; } 37 | public IAvailable Available { get; set; } 38 | public IStyle Style { get; set; } 39 | public List Breweries { get; set; } 40 | public ILabels Labels { get; set; } 41 | public List SocialAccounts { get; set; } 42 | public string ServingTemperature { get; set; } 43 | 44 | public string Brewery => Breweries != null ? Breweries[0].Name : string.Empty; 45 | 46 | 47 | } 48 | } -------------------------------------------------------------------------------- /BreweryDB/BreweryDB.Tests/SocialSites.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | using BreweryDB.Helpers; 8 | using BreweryDB.Models; 9 | using BreweryDB.Models.RequestParameters; 10 | using NUnit.Framework; 11 | 12 | namespace BreweryDB.Tests 13 | { 14 | [TestFixture()] 15 | public class SocialSites 16 | { 17 | private readonly BreweryDbClient client = new BreweryDbClient(Keys.ApplicationKey); 18 | 19 | [Test()] 20 | public async Task ById() 21 | { 22 | var response = await client.SocialSites.Get("2"); 23 | 24 | Assert.IsTrue(response.Status == "success"); 25 | Assert.IsTrue(response.Message == "Request Successful"); 26 | 27 | var socialSite = response.Data; 28 | Assert.IsTrue(socialSite.Id == "2"); 29 | Assert.IsTrue(socialSite.Name == "Twitter"); 30 | Assert.IsTrue(socialSite.Website == "http://www.twitter.com" == true); 31 | 32 | } 33 | 34 | [Test()] 35 | public async Task GetAll() 36 | { 37 | var response = await client.SocialSites.GetAll(); 38 | 39 | Assert.IsTrue(response.Status == "success"); 40 | 41 | var socialSite = response.Data.FirstOrDefault(x => x.Id == "2"); 42 | Assert.IsTrue(socialSite.Id == "2"); 43 | Assert.IsTrue(socialSite.Name == "Twitter"); 44 | Assert.IsTrue(socialSite.Website == "http://www.twitter.com" == true); 45 | } 46 | 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /BreweryDB/BreweryDB.Tests/Yeasts.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | using BreweryDB.Helpers; 8 | using BreweryDB.Models; 9 | using BreweryDB.Models.RequestParameters; 10 | using NUnit.Framework; 11 | 12 | namespace BreweryDB.Tests 13 | { 14 | [TestFixture()] 15 | public class Yeasts 16 | { 17 | private readonly BreweryDbClient client = new BreweryDbClient(Keys.ApplicationKey); 18 | 19 | [Test()] 20 | public async Task ById() 21 | { 22 | var response = await client.Yeasts.Get("1531"); 23 | 24 | Assert.IsTrue(response.Status == "success"); 25 | Assert.IsTrue(response.Message == "Request Successful"); 26 | 27 | var yeast = response.Data; 28 | Assert.IsNotNull(yeast); 29 | 30 | } 31 | 32 | [Test()] 33 | public async Task GetAll() 34 | { 35 | var response = await client.Yeasts.GetAll(); 36 | 37 | Assert.IsTrue(response.Status == "success"); 38 | 39 | var yeast = response.Data.FirstOrDefault(); 40 | Assert.IsNotNull(yeast); 41 | } 42 | 43 | [Test()] 44 | public async Task GetPage() 45 | { 46 | var response = await client.Yeasts.GetAll(4); 47 | 48 | Assert.IsTrue(response.Status == "success"); 49 | 50 | var yeast = response.Data.FirstOrDefault(); 51 | Assert.IsNotNull(yeast); 52 | } 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /BreweryDB/BreweryDB.Tests/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /BreweryDB/BreweryDB.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Debug 5 | AnyCPU 6 | {786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 7 | {84D549C9-B9CA-4C37-8C99-2C12DB8906B6} 8 | Library 9 | BreweryDB 10 | BreweryDB 11 | v4.5 12 | Profile78 13 | ..\..\BeerDrinkin\ 14 | true 15 | 16 | 17 | 18 | 19 | true 20 | full 21 | false 22 | bin\Debug 23 | DEBUG; 24 | prompt 25 | 4 26 | false 27 | 28 | 29 | full 30 | true 31 | bin\Release 32 | prompt 33 | 4 34 | false 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | packages\Newtonsoft.Json.6.0.8\lib\portable-net40+sl5+wp80+win8+wpa81\Newtonsoft.Json.dll 111 | True 112 | 113 | 114 | packages\Microsoft.Net.Http.2.2.29\lib\portable-net40+sl4+win8+wp71+wpa81\System.Net.Http.dll 115 | True 116 | 117 | 118 | packages\Microsoft.Net.Http.2.2.29\lib\portable-net40+sl4+win8+wp71+wpa81\System.Net.Http.Extensions.dll 119 | True 120 | 121 | 122 | packages\Microsoft.Net.Http.2.2.29\lib\portable-net40+sl4+win8+wp71+wpa81\System.Net.Http.Primitives.dll 123 | True 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | -------------------------------------------------------------------------------- /BreweryDB/BreweryDB.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 14 4 | VisualStudioVersion = 14.0.24720.0 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BreweryDB", "BreweryDB.csproj", "{84D549C9-B9CA-4C37-8C99-2C12DB8906B6}" 7 | EndProject 8 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BreweryDB.Tests", "BreweryDB.Tests\BreweryDB.Tests.csproj", "{20793B1C-A49F-43BE-8D83-15C2453E4CDE}" 9 | EndProject 10 | Global 11 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 12 | Debug|Any CPU = Debug|Any CPU 13 | Release|Any CPU = Release|Any CPU 14 | EndGlobalSection 15 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 16 | {84D549C9-B9CA-4C37-8C99-2C12DB8906B6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 17 | {84D549C9-B9CA-4C37-8C99-2C12DB8906B6}.Debug|Any CPU.Build.0 = Debug|Any CPU 18 | {84D549C9-B9CA-4C37-8C99-2C12DB8906B6}.Release|Any CPU.ActiveCfg = Release|Any CPU 19 | {84D549C9-B9CA-4C37-8C99-2C12DB8906B6}.Release|Any CPU.Build.0 = Release|Any CPU 20 | {20793B1C-A49F-43BE-8D83-15C2453E4CDE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 21 | {20793B1C-A49F-43BE-8D83-15C2453E4CDE}.Debug|Any CPU.Build.0 = Debug|Any CPU 22 | {20793B1C-A49F-43BE-8D83-15C2453E4CDE}.Release|Any CPU.ActiveCfg = Release|Any CPU 23 | {20793B1C-A49F-43BE-8D83-15C2453E4CDE}.Release|Any CPU.Build.0 = Release|Any CPU 24 | EndGlobalSection 25 | GlobalSection(SolutionProperties) = preSolution 26 | HideSolutionNode = FALSE 27 | EndGlobalSection 28 | EndGlobal 29 | -------------------------------------------------------------------------------- /BreweryDB/BreweryDB.userprefs: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /BreweryDB/BreweryDBClient.cs: -------------------------------------------------------------------------------- 1 | using BreweryDB.Interfaces; 2 | using BreweryDB.Models; 3 | using BreweryDB.Resources; 4 | using System.Net.Http; 5 | using System; 6 | using BreweryDB.Helpers; 7 | 8 | namespace BreweryDB 9 | { 10 | public class BreweryDbClient 11 | { 12 | public static string ApplicationKey { get; private set; } 13 | public static readonly string BaseAddress = "https://api.brewerydb.com/v2/"; 14 | 15 | public BreweryDbClient(string key, Func httpClientFactory = null) 16 | { 17 | ApplicationKey = key; 18 | 19 | if (httpClientFactory != null) 20 | JsonDownloader.HttpClientFactory = httpClientFactory; 21 | 22 | Beers = new BeerResource(this); 23 | Breweries = new BreweryResource(this); 24 | Categories = new CategoryResource(this); 25 | Adjuncts = new AdjunctResource(this); 26 | Yeasts = new YeastResource(this); 27 | SocialSites = new SocialSiteResource(this); 28 | Events = new EventResource(this); 29 | Features = new FeatureResource(this); 30 | Guildes = new GuildResource(this); 31 | Fermentables = new FermentableResource(this); 32 | FluidSizes = new FluidSizeResource(this); 33 | Changes = new ChangeResource(this); 34 | } 35 | 36 | public AdjunctResource Adjuncts { get; set; } 37 | public BeerResource Beers { get; set; } 38 | public BreweryResource Breweries { get; set; } 39 | public CategoryResource Categories { get; set; } 40 | public YeastResource Yeasts { get; set; } 41 | public SocialSiteResource SocialSites { get; set; } 42 | public EventResource Events { get; set; } 43 | public FeatureResource Features { get; set; } 44 | public GuildResource Guildes { get; set; } 45 | public FermentableResource Fermentables { get; set; } 46 | public FluidSizeResource FluidSizes { get; set; } 47 | public ChangeResource Changes { get; set; } 48 | } 49 | } -------------------------------------------------------------------------------- /BreweryDB/Helpers/ConcreteConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using Newtonsoft.Json; 7 | 8 | namespace BreweryDB.Helpers 9 | { 10 | public class ConcreteConverter : JsonConverter 11 | { 12 | public override bool CanConvert(Type objectType) => true; 13 | 14 | public override object ReadJson(JsonReader reader, 15 | Type objectType, object existingValue, JsonSerializer serializer) 16 | { 17 | return serializer.Deserialize(reader); 18 | } 19 | 20 | public override void WriteJson(JsonWriter writer, 21 | object value, JsonSerializer serializer) 22 | { 23 | serializer.Serialize(writer, value); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /BreweryDB/Helpers/ExtensionMethods.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Collections.ObjectModel; 4 | using System.Linq; 5 | using System.Text; 6 | 7 | namespace BreweryDB.Helpers 8 | { 9 | public static class ExtensionMethods 10 | { 11 | public static int Remove(this ObservableCollection coll, Func condition) 12 | { 13 | var itemsToRemove = coll.Where(condition).ToList(); 14 | 15 | foreach (var itemToRemove in itemsToRemove) 16 | { 17 | coll.Remove(itemToRemove); 18 | } 19 | 20 | return itemsToRemove.Count; 21 | } 22 | 23 | public static void RemoveAll(this ObservableCollection collection, Func condition) 24 | { 25 | for (var i = collection.Count - 1; i >= 0; i--) 26 | { 27 | if (condition(collection[i])) 28 | { 29 | collection.RemoveAt(i); 30 | } 31 | } 32 | } 33 | 34 | public static string UppercaseFirst(this string s) 35 | { 36 | if (string.IsNullOrEmpty(s)) 37 | return string.Empty; 38 | 39 | return char.ToUpper(s[0]) + s.Substring(1); 40 | } 41 | 42 | public static string LowercaseFirst(this string s) 43 | { 44 | if (string.IsNullOrEmpty(s)) 45 | return string.Empty; 46 | 47 | return char.ToLower(s[0]) + s.Substring(1); 48 | } 49 | 50 | } 51 | } -------------------------------------------------------------------------------- /BreweryDB/Helpers/JsonDownloader.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Net; 6 | using System.Net.Http; 7 | using System.Net.Http.Headers; 8 | using System.Text; 9 | using System.Threading.Tasks; 10 | 11 | namespace BreweryDB.Helpers 12 | { 13 | public static class JsonDownloader 14 | { 15 | public static Func HttpClientFactory { get; set; } = new Func(() => new HttpClient()); 16 | 17 | public static async Task DownloadSerializedJsonDataAsync(string url) where T : new() 18 | { 19 | using (var httpClient = HttpClientFactory()) 20 | { 21 | httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 22 | var jsonData = string.Empty; 23 | try 24 | { 25 | jsonData = await httpClient.GetStringAsync(url); 26 | } 27 | catch (Exception) 28 | { 29 | return default(T); 30 | } 31 | return !string.IsNullOrEmpty(jsonData) ? JsonConvert.DeserializeObject(jsonData) : default(T); 32 | } 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /BreweryDB/Helpers/NameValueCollection.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using BreweryDB.Models.RequestParameters; 7 | 8 | namespace BreweryDB.Helpers 9 | { 10 | // https://github.com/danielcrenna/hammock/blob/master/src/net35/Hammock.Silverlight/Compat/NameValueCollection.cs 11 | public class NameValueCollection : List> 12 | { 13 | public new string this[int index] 14 | { 15 | get 16 | { 17 | return base[index].Value; 18 | } 19 | } 20 | 21 | public string this[string name] 22 | { 23 | get 24 | { 25 | return this.SingleOrDefault(kv => kv.Key.Equals(name)).Value; 26 | } 27 | } 28 | 29 | public NameValueCollection() 30 | { 31 | 32 | } 33 | 34 | public NameValueCollection(int capacity) : base(capacity) 35 | { 36 | 37 | } 38 | 39 | public void Add(string name, string value) 40 | { 41 | List> list = this; 42 | for (int i = Count - 1; i >= 0; --i) 43 | { 44 | if (string.Equals(list[i].Key, name)) 45 | { 46 | list[i] = new KeyValuePair(name, list[i].Value + "," + value); 47 | return; 48 | } 49 | } 50 | Add(new KeyValuePair(name, value)); 51 | } 52 | 53 | public IEnumerable AllKeys 54 | { 55 | get 56 | { 57 | return this.Select(pair => pair.Key); 58 | } 59 | } 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /BreweryDB/Interfaces/IAdjunct.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace BreweryDB.Interfaces 4 | { 5 | public interface IAdjunct 6 | { 7 | string Id { get; set; } 8 | string Name { get; set; } 9 | string Category { get; set; } 10 | string CategoryDisplay { get; set; } 11 | DateTime CreateDate { get; set; } 12 | } 13 | } -------------------------------------------------------------------------------- /BreweryDB/Interfaces/IAvailability.cs: -------------------------------------------------------------------------------- 1 | namespace BreweryDB.Interfaces 2 | { 3 | public interface IAvailable 4 | { 5 | string Id { get; set; } 6 | string Name { get; set; } 7 | string Description { get; set; } 8 | } 9 | } -------------------------------------------------------------------------------- /BreweryDB/Interfaces/IBeer.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using BreweryDB.Models; 7 | 8 | namespace BreweryDB.Interfaces 9 | { 10 | public interface IBeer 11 | { 12 | string Id { get; set; } 13 | string Name { get; set; } 14 | string NameDisplay { get; set; } 15 | string Description { get; } 16 | double Abv { get; set; } 17 | int GlasswareId { get; set; } 18 | int SrmId { get; set; } 19 | int AvailableId { get; set; } 20 | int StyleId { get; set; } 21 | string IsOrganic { get; set; } 22 | string Status { get; set; } 23 | string StatusDisplay { get; set; } 24 | string CreateDate { get; set; } 25 | string UpdateDate { get; set; } 26 | IGlass Glass { get; set; } 27 | ISrm Srm { get; set; } 28 | IAvailable Available { get; set; } 29 | IStyle Style { get; set; } 30 | List Breweries { get; set; } 31 | ILabels Labels { get; set; } 32 | List SocialAccounts { get; set; } 33 | string ServingTemperature { get; set; } 34 | string Brewery { get; } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /BreweryDB/Interfaces/IBrewery.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using BreweryDB.Models; 3 | 4 | namespace BreweryDB.Interfaces 5 | { 6 | public interface IBrewery 7 | { 8 | string Id { get; set; } 9 | string Name { get; set; } 10 | string IsOrganic { get; set; } 11 | string Status { get; set; } 12 | string StatusDisplay { get; set; } 13 | string CreateDate { get; set; } 14 | string UpdateDate { get; set; } 15 | List Locations { get; set; } 16 | string Description { get; set; } 17 | string Website { get; set; } 18 | string Established { get; set; } 19 | IImages Image { get; set; } 20 | } 21 | } -------------------------------------------------------------------------------- /BreweryDB/Interfaces/ICategory.cs: -------------------------------------------------------------------------------- 1 | namespace BreweryDB.Interfaces 2 | { 3 | public interface ICategory 4 | { 5 | string Id { get; set; } 6 | string Name { get; set; } 7 | string CreateDate { get; set; } 8 | string Description { get; set; } 9 | } 10 | } -------------------------------------------------------------------------------- /BreweryDB/Interfaces/ICharacteristic.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace BreweryDB.Interfaces 8 | { 9 | public interface ICharacteristic 10 | { 11 | int Id { get; set; } 12 | string Name { get; set; } 13 | string Description { get; set; } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /BreweryDB/Interfaces/ICountry.cs: -------------------------------------------------------------------------------- 1 | namespace BreweryDB.Interfaces 2 | { 3 | public interface ICountry 4 | { 5 | string CountryIsoCode { get; set; } 6 | string Name { get; set; } 7 | string DisplayName { get; set; } 8 | string IsoThree { get; set; } 9 | int NumberCode { get; set; } 10 | string CreateDate { get; set; } 11 | } 12 | } -------------------------------------------------------------------------------- /BreweryDB/Interfaces/IEvent.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace BreweryDB.Interfaces 8 | { 9 | public interface IEvent 10 | { 11 | string Id { get; set; } 12 | string Year { get; set; } 13 | string Name { get; set; } 14 | string Description { get; set; } 15 | string Type { get; set; } 16 | string TypeDisplay { get; set; } 17 | string StartDate { get; set; } 18 | string EndDate { get; set; } 19 | string Time { get; set; } 20 | string VenueName { get; set; } 21 | string StreetAddress { get; set; } 22 | string Locality { get; set; } 23 | string Region { get; set; } 24 | string PostalCode { get; set; } 25 | string CountryIsoCode { get; set; } 26 | double Latitude { get; set; } 27 | double Longitude { get; set; } 28 | string Website { get; set; } 29 | string Phone { get; set; } 30 | string Status { get; set; } 31 | string StatusDisplay { get; set; } 32 | string CreateDate { get; set; } 33 | string UpdateDate { get; set; } 34 | ICountry Country { get; set; } 35 | string Price { get; set; } 36 | IImages Images { get; set; } 37 | string ExtendedAddress { get; set; } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /BreweryDB/Interfaces/IFeature.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace BreweryDB.Interfaces 8 | { 9 | public interface IFeature 10 | { 11 | string BeerId { get; set; } 12 | IBrewery Brewery { get; set; } 13 | IBeer Beer { get; set; } 14 | string Id { get; set; } 15 | int Week { get; set; } 16 | int Year { get; set; } 17 | string BreweryId { get; set; } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /BreweryDB/Interfaces/IFermentable.cs: -------------------------------------------------------------------------------- 1 | using BreweryDB.Models; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace BreweryDB.Interfaces 9 | { 10 | public interface IFermentable 11 | { 12 | string Id { get; set; } 13 | string Name { get; set; } 14 | string Category { get; set; } 15 | string CategoryDisplay { get; set; } 16 | string Description { get; set; } 17 | string CountryOfOrigin { get; set; } 18 | int? SrmId { get; set; } 19 | int? SrmPrecise { get; set; } 20 | double? MoistureContent { get; set; } 21 | double? DryYield { get; set; } 22 | double? Potential { get; set; } 23 | double? Protein { get; set; } 24 | int? MaxInBatch { get; set; } 25 | string RequiresMashing { get; set; } 26 | List Characteristics { get; set; } 27 | ISrm Srm { get; set; } 28 | ICountry Country { get; set; } 29 | double? CoarseFineDifference { get; set; } 30 | int? DiastaticPower { get; set; } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /BreweryDB/Interfaces/IFluidSize.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace BreweryDB.Interfaces 8 | { 9 | public interface IFluidSize 10 | { 11 | string Id { get; set; } 12 | string Volume { get; set; } 13 | string VolumeDisplay { get; set; } 14 | string Quantity { get; set; } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /BreweryDB/Interfaces/IGlass.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace BreweryDB.Interfaces 8 | { 9 | public interface IGlass 10 | { 11 | string Id { get; set; } 12 | string Name { get; set; } 13 | string CreateDate { get; set; } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /BreweryDB/Interfaces/IGuild.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace BreweryDB.Interfaces 8 | { 9 | public interface IGuild 10 | { 11 | string Id { get; set; } 12 | string Name { get; set; } 13 | string Description { get; set; } 14 | string Established { get; set; } 15 | string Website { get; set; } 16 | IImages Images { get; set; } 17 | string Status { get; set; } 18 | string StatusDisplay { get; set; } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /BreweryDB/Interfaces/IImages.cs: -------------------------------------------------------------------------------- 1 | namespace BreweryDB.Interfaces 2 | { 3 | public interface IImages 4 | { 5 | string Icon { get; set; } 6 | string Medium { get; set; } 7 | string Large { get; set; } 8 | } 9 | } -------------------------------------------------------------------------------- /BreweryDB/Interfaces/ILabels.cs: -------------------------------------------------------------------------------- 1 | namespace BreweryDB.Interfaces 2 | { 3 | public interface ILabels 4 | { 5 | string Icon { get; set;} 6 | string Medium { get; set; } 7 | string Large { get; set; } 8 | } 9 | } -------------------------------------------------------------------------------- /BreweryDB/Interfaces/ILocation.cs: -------------------------------------------------------------------------------- 1 | namespace BreweryDB.Interfaces 2 | { 3 | public interface ILocation 4 | { 5 | string Id { get; set; } 6 | string Mame { get; set; } 7 | string IsPrimary { get; set; } 8 | string InPlanning { get; set; } 9 | string IsClosed { get; set; } 10 | string OpenToPublic { get; set; } 11 | string LocationType { get; set; } 12 | string LocationTypeDisplay { get; set; } 13 | string CountryIsoCode { get; set; } 14 | string Status { get; set; } 15 | string StatusDisplay { get; set; } 16 | string CreateDate { get; set; } 17 | string UpdateDate { get; set; } 18 | ICountry Country { get; set; } 19 | string StreetAddress { get; set; } 20 | string Locality { get; set; } 21 | string Region { get; set; } 22 | string Phone { get; set; } 23 | double? Latitude { get; set; } 24 | double? Longitude { get; set; } 25 | string PostalCode { get; set; } 26 | string Website { get; set; } 27 | string HoursOfOperation { get; set; } 28 | string YearOpened { get; set; } 29 | string OpenTo { get; set; } 30 | } 31 | } -------------------------------------------------------------------------------- /BreweryDB/Interfaces/ISocialAccount.cs: -------------------------------------------------------------------------------- 1 | namespace BreweryDB.Interfaces 2 | { 3 | public interface ISocialAccount 4 | { 5 | string Id { get; set; } 6 | string SocialMediaId { get; set; } 7 | ISocialMedia SocialMedia { get; set; } 8 | string Handle { get; set; } 9 | string CreateDate { get; set; } 10 | string Link { get; set; } 11 | } 12 | } -------------------------------------------------------------------------------- /BreweryDB/Interfaces/ISocialMedia.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace BreweryDB.Interfaces 4 | { 5 | public interface ISocialMedia 6 | { 7 | string Id { get; set; } 8 | string Website { get; set; } 9 | DateTime CreateDate { get; set; } 10 | string Name { get; set; } 11 | } 12 | } -------------------------------------------------------------------------------- /BreweryDB/Interfaces/ISocialSite.cs: -------------------------------------------------------------------------------- 1 | namespace BreweryDB.Interfaces 2 | { 3 | public interface ISocialSite 4 | { 5 | string Id { get; set; } 6 | string Name { get; set; } 7 | string Website { get; set; } 8 | } 9 | } -------------------------------------------------------------------------------- /BreweryDB/Interfaces/ISrm.cs: -------------------------------------------------------------------------------- 1 | namespace BreweryDB.Interfaces 2 | { 3 | public interface ISrm 4 | { 5 | string Id { get; set; } 6 | string Name { get; set; } 7 | string Hex { get; set; } 8 | } 9 | } -------------------------------------------------------------------------------- /BreweryDB/Interfaces/IStyle.cs: -------------------------------------------------------------------------------- 1 | using BreweryDB.Models; 2 | 3 | namespace BreweryDB.Interfaces 4 | { 5 | public interface IStyle 6 | { 7 | string Id { get; set; } 8 | string CategoryId { get; set; } 9 | ICategory Category { get; set; } 10 | string Name { get; set; } 11 | string ShortName { get; set; } 12 | string Description { get; set; } 13 | double IbuMin { get; set; } 14 | double IbuMax { get; set; } 15 | double AbvMin { get; set; } 16 | double AbvMax { get; set; } 17 | double SrmMin { get; set; } 18 | double SrmMax { get; set; } 19 | double OgMin { get; set; } 20 | double FgMin { get; set; } 21 | double FgMax { get; set; } 22 | string CreateDate { get; set; } 23 | string UpdateDate { get; set; } 24 | } 25 | } -------------------------------------------------------------------------------- /BreweryDB/Interfaces/IYeast.cs: -------------------------------------------------------------------------------- 1 | using System.Diagnostics.Contracts; 2 | 3 | namespace BreweryDB.Interfaces 4 | { 5 | public interface IYeast 6 | { 7 | string Id { get; set; } 8 | string Name { get; set; } 9 | string Category { get; set; } 10 | string CategoryDisplay { get; set; } 11 | } 12 | } -------------------------------------------------------------------------------- /BreweryDB/Models/Adjuct.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace BreweryDB.Models 4 | { 5 | public class Adjunct 6 | { 7 | public int Id { get; set; } 8 | 9 | public string Name { get; set; } 10 | 11 | public string Category { get; set; } 12 | 13 | public string CategoryDisplay { get; set; } 14 | 15 | public DateTime CreateDate { get; set; } 16 | } 17 | } 18 | 19 | -------------------------------------------------------------------------------- /BreweryDB/Models/Adjunct.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using BreweryDB.Interfaces; 3 | 4 | namespace BreweryDB.Models 5 | { 6 | public class Adjunct : IAdjunct 7 | { 8 | public string Id { get; set; } 9 | public string Name { get; set; } 10 | public string Category { get; set; } 11 | public string CategoryDisplay { get; set; } 12 | public DateTime CreateDate { get; set; } 13 | } 14 | } -------------------------------------------------------------------------------- /BreweryDB/Models/Available.cs: -------------------------------------------------------------------------------- 1 |  2 | using BreweryDB.Interfaces; 3 | 4 | namespace BreweryDB.Models 5 | { 6 | public class Available : IAvailable 7 | { 8 | public string Id { get; set; } 9 | public string Name { get; set; } 10 | public string Description { get; set; } 11 | } 12 | } -------------------------------------------------------------------------------- /BreweryDB/Models/Beer.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using BreweryDB.Helpers; 4 | using BreweryDB.Interfaces; 5 | using Newtonsoft.Json; 6 | 7 | namespace BreweryDB.Models 8 | { 9 | public class Beer : IBeer 10 | { 11 | public Beer(IGlass glass, ISrm srm, IAvailable available, IStyle style, List breweries, ILabels labels, 12 | List socialAccounts) 13 | { 14 | Glass = glass; 15 | Srm = srm; 16 | Available = available; 17 | Style = style; 18 | Breweries = breweries; 19 | Labels = labels; 20 | 21 | } 22 | 23 | public string Id { get; set; } 24 | public string Name { get; set; } 25 | public string NameDisplay { get; set; } 26 | public string Description { get; set; } 27 | public double Abv { get; set; } 28 | public double IBU { get; set; } 29 | public int GlasswareId { get; set; } 30 | public int SrmId { get; set; } 31 | public int AvailableId { get; set; } 32 | public int StyleId { get; set; } 33 | public string IsOrganic { get; set; } 34 | public string Status { get; set; } 35 | public string StatusDisplay { get; set; } 36 | public string CreateDate { get; set; } 37 | public string UpdateDate { get; set; } 38 | 39 | [JsonConverter(typeof(ConcreteConverter))] 40 | public IGlass Glass { get; set; } 41 | 42 | [JsonConverter(typeof(ConcreteConverter))] 43 | public ISrm Srm { get; set; } 44 | 45 | [JsonConverter(typeof(ConcreteConverter))] 46 | public IAvailable Available { get; set; } 47 | 48 | [JsonConverter(typeof(ConcreteConverter