diff --git a/HttpClient.Cache.sln b/HttpClient.Cache.sln
index 2fbc22c..f87b7bc 100644
--- a/HttpClient.Cache.sln
+++ b/HttpClient.Cache.sln
@@ -6,6 +6,10 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{FCC751F0
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HttpClient.Cache.Tests", "tests\HttpClient.Cache.Tests\HttpClient.Cache.Tests.csproj", "{AF0D7A5D-1242-44B1-9584-7D50FF6612DA}"
EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "samples", "samples", "{88E718FE-AE0C-4649-A7BC-9D038FC6207A}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConsoleApp", "samples\ConsoleApp\ConsoleApp.csproj", "{2F33C2DF-0CA0-418B-9D06-8CDAA2DF41BC}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -20,8 +24,13 @@ Global
{AF0D7A5D-1242-44B1-9584-7D50FF6612DA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AF0D7A5D-1242-44B1-9584-7D50FF6612DA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AF0D7A5D-1242-44B1-9584-7D50FF6612DA}.Release|Any CPU.Build.0 = Release|Any CPU
+ {2F33C2DF-0CA0-418B-9D06-8CDAA2DF41BC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {2F33C2DF-0CA0-418B-9D06-8CDAA2DF41BC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {2F33C2DF-0CA0-418B-9D06-8CDAA2DF41BC}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {2F33C2DF-0CA0-418B-9D06-8CDAA2DF41BC}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{AF0D7A5D-1242-44B1-9584-7D50FF6612DA} = {FCC751F0-5E00-41CC-BB68-5870C901A75F}
+ {2F33C2DF-0CA0-418B-9D06-8CDAA2DF41BC} = {88E718FE-AE0C-4649-A7BC-9D038FC6207A}
EndGlobalSection
EndGlobal
diff --git a/samples/ConsoleApp/ConsoleApp.csproj b/samples/ConsoleApp/ConsoleApp.csproj
new file mode 100644
index 0000000..5fd66f2
--- /dev/null
+++ b/samples/ConsoleApp/ConsoleApp.csproj
@@ -0,0 +1,14 @@
+
+
+
+ Exe
+ net6.0
+ enable
+ enable
+
+
+
+
+
+
+
diff --git a/samples/ConsoleApp/Program.cs b/samples/ConsoleApp/Program.cs
new file mode 100644
index 0000000..bc824fb
--- /dev/null
+++ b/samples/ConsoleApp/Program.cs
@@ -0,0 +1,39 @@
+using System.Diagnostics;
+using System.Net;
+using HttpClient.Cache.InMemory;
+
+const string url = "http://worldclockapi.com/api/json/utc/now";
+
+//Set the cache time for each required status
+var cacheExpiration = new Dictionary
+{
+ {HttpStatusCode.OK, TimeSpan.FromSeconds(60)},
+ {HttpStatusCode.BadRequest, TimeSpan.FromSeconds(10)},
+ {HttpStatusCode.InternalServerError, TimeSpan.FromSeconds(5)}
+};
+
+//Client calls API and caches it
+//Report will show 1 Miss (initial) and 4 Hits.
+var innerHandler = new HttpClientHandler();
+var cacheHandler = new InMemoryCacheHandler(innerHandler, cacheExpiration);
+using (var httpClient = new System.Net.Http.HttpClient(cacheHandler))
+{
+ for (int i = 1; i <= 5; ++i)
+ {
+ Console.Write($"Try: {i}: {url} ");
+
+ var stopwatch = Stopwatch.StartNew();
+ var result = await httpClient.GetAsync(url);
+ Console.Write($" --> {result.StatusCode} ");
+ stopwatch.Stop();
+
+ Console.WriteLine($"Done in: {stopwatch.ElapsedMilliseconds} ms");
+ await Task.Delay(TimeSpan.FromSeconds(1));
+ }
+}
+
+var stats = cacheHandler.StatsProvider.GetReport();
+Console.WriteLine($"Cache stats - total requests: {stats.Total.TotalRequests}");
+Console.WriteLine($"--> Hit: {stats.Total.CacheHit} [{stats.Total.TotalHitsPercent}]");
+Console.WriteLine($"--> Miss: {stats.Total.CacheMiss} [{stats.Total.TotalMissPercent}]");
+Console.ReadLine();