@ -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
/// </summary>
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
/// <summary>
/// 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 < AuthenticationResult > ( 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 < AuthenticationResult > ( stream ) ;
}
# endif
}
/// <summary>
@ -541,12 +564,18 @@ namespace MediaBrowser.ApiInteraction
/// </summary>
private Task < Stream > 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
}
}
}