Version 4.12.2 Dropped Windows.Web.Http.HtpClient

This commit is contained in:
ClemensF 2019-07-13 00:08:56 +02:00
parent 014f57ee1a
commit 9c55597a16
10 changed files with 199 additions and 280 deletions

View file

@ -2,13 +2,7 @@
// © 2019 Clemens Fischer
// Licensed under the Microsoft Public License (Ms-PL)
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Threading.Tasks;
using System.Windows.Media;
using System.Windows.Media.Imaging;
@ -67,72 +61,5 @@ namespace MapControl
{
return Task.Run(() => LoadImage(path));
}
private static async Task<ImageSource> LoadImageAsync(HttpContent content)
{
using (var stream = new MemoryStream())
{
await content.CopyToAsync(stream);
stream.Seek(0, SeekOrigin.Begin);
return LoadImage(stream);
}
}
internal class HttpStreamResponse
{
public readonly MemoryStream Stream;
public readonly TimeSpan? MaxAge;
public HttpStreamResponse(MemoryStream stream, TimeSpan? maxAge)
{
Stream = stream;
MaxAge = maxAge;
}
}
internal static async Task<HttpStreamResponse> LoadHttpStreamAsync(Uri uri)
{
HttpStreamResponse response = null;
try
{
using (var responseMessage = await HttpClient.GetAsync(uri).ConfigureAwait(false))
{
if (responseMessage.IsSuccessStatusCode)
{
MemoryStream stream = null;
TimeSpan? maxAge = null;
if (ImageAvailable(responseMessage.Headers))
{
stream = new MemoryStream();
await responseMessage.Content.CopyToAsync(stream).ConfigureAwait(false);
stream.Seek(0, SeekOrigin.Begin);
maxAge = responseMessage.Headers.CacheControl?.MaxAge;
}
response = new HttpStreamResponse(stream, maxAge);
}
else
{
Debug.WriteLine("ImageLoader: {0}: {1} {2}", uri, (int)responseMessage.StatusCode, responseMessage.ReasonPhrase);
}
}
}
catch (Exception ex)
{
Debug.WriteLine("ImageLoader: {0}: {1}", uri, ex.Message);
}
return response;
}
private static bool ImageAvailable(HttpResponseHeaders responseHeaders)
{
IEnumerable<string> tileInfo;
return !responseHeaders.TryGetValues("X-VE-Tile-Info", out tileInfo) || !tileInfo.Contains("no-tile");
}
}
}