Forked from ryansroberts/gist:ade02844f44e4c9a0e7f
Last active
August 29, 2015 14:11
-
-
Save ashic/40a27702bd11832ae020 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
namespace Syndication.Client.Http | |
{ | |
public class CachingAdapter : HttpClientAdapter | |
{ | |
readonly HttpClient client; | |
public CachingAdapter(ICacheStore cacheStore, string[] defaultVaryHeaders) | |
{ | |
//http://msdn.microsoft.com/en-us/library/system.net.cache.requestcachelevel(v=vs.110).aspx | |
//http://blog.technovert.com/2013/01/httpclient-caching/ | |
//http://blogs.msdn.com/b/henrikn/archive/2012/08/07/httpclient-httpclienthandler-and-httpwebrequesthandler.aspx | |
if(cacheStore == null) | |
client = new HttpClient(); | |
else | |
{ | |
client = new HttpClient(new CustomCachingHandler(cacheStore) | |
{ | |
DefaultVaryHeaders = defaultVaryHeaders, | |
InnerHandler = new HttpClientHandler() | |
}); | |
} | |
} | |
public void Dispose() | |
{ | |
client.Dispose(); | |
} | |
public Task<HttpResponseMessage> SendAsync(HttpRequestMessage request) | |
{ | |
return client.SendAsync(request).ContinueWith(task => new ResponseDecompressor().DecompressResponse(task)); | |
} | |
} | |
} | |
namespace Syndication.Client.Http | |
{ | |
public class Factory : HttpClientAdapterFactory | |
{ | |
readonly ICacheStore _cacheStore; | |
private readonly string[] _defaultVaryHeaders; | |
public Factory(ICacheStore cacheStore, string[] defaultVaryHeaders) | |
{ | |
_cacheStore = cacheStore; | |
_defaultVaryHeaders = defaultVaryHeaders; | |
} | |
public HttpClientAdapter CreateClient(PipelineOptions options) | |
{ | |
return new CachingAdapter(_cacheStore, _defaultVaryHeaders); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment