diff --git a/MediaBrowser.ApiInteraction/BaseHttpApiClient.cs b/MediaBrowser.ApiInteraction/BaseHttpApiClient.cs index 7468b60391..0fa9465e1b 100644 --- a/MediaBrowser.ApiInteraction/BaseHttpApiClient.cs +++ b/MediaBrowser.ApiInteraction/BaseHttpApiClient.cs @@ -5,10 +5,13 @@ using MediaBrowser.Model.Weather; using System; using System.IO; using System.Net; -using System.Net.Http; using System.Text; using System.Threading.Tasks; -using MediaBrowser.Model.Entities; +#if WINDOWS_PHONE +using SharpGIS; +#else +using System.Net.Http; +#endif namespace MediaBrowser.ApiInteraction { @@ -17,6 +20,14 @@ namespace MediaBrowser.ApiInteraction /// public abstract class BaseHttpApiClient : BaseApiClient { +#if WINDOWS_PHONE + public BaseHttpApiClient() + { + HttpClient = new GZipWebClient(); + } + + private WebClient HttpClient { get; set; } +#else public BaseHttpApiClient(HttpClientHandler handler) : base() { @@ -26,6 +37,7 @@ namespace MediaBrowser.ApiInteraction } private HttpClient HttpClient { get; set; } +#endif /// /// Gets an image stream based on a url @@ -501,6 +513,16 @@ namespace MediaBrowser.ApiInteraction postContent += "&password=" + password; } +#if WINDOWS_PHONE + HttpClient.Headers["Content-Type"] = "application/x-www-form-urlencoded"; + var result = await HttpClient.UploadStringTaskAsync(url, "POST", postContent); + + var byteArray = Encoding.UTF8.GetBytes(result); + using (MemoryStream stream = new MemoryStream(byteArray)) + { + return DeserializeFromStream(stream); + } +#else HttpContent content = new StringContent(postContent, Encoding.UTF8, "application/x-www-form-urlencoded"); HttpResponseMessage msg = await HttpClient.PostAsync(url, content).ConfigureAwait(false); @@ -509,6 +531,7 @@ namespace MediaBrowser.ApiInteraction { return DeserializeFromStream(stream); } +#endif } /// @@ -541,12 +564,18 @@ namespace MediaBrowser.ApiInteraction /// private Task GetStreamAsync(string url) { +#if WINDOWS_PHONE + return HttpClient.OpenReadTaskAsync(url); +#else return HttpClient.GetStreamAsync(url); +#endif } public override void Dispose() { +#if !WINDOWS_PHONE HttpClient.Dispose(); +#endif } } }